Merhabalar,
Bu gün benim bir gece uğraştırmış bir konu üzerine bu yazıyı yazıyorum. Çözüm yöntemi oldukça basit bir işlem olmasına rağmen sorunu tespit edip, çözüm yöntemini bulana kadar saatlerce uğraşmıştım.
Bu sorun çok fazla kişinin karşısına çıkacak bir durum değildir. Ancak çıktı mı da uğraştırır. Benden söylemesi J
Çalıştığım firmada Dynamics NAV Erp programı kullanılmaktaydı. Birden fazla şirket aynı yazılımın farklı sürümlerini kullanıyorlardı. Dolayısıyla bir şirketin kullandığı MSSQL sürümü ile diğer şirketin MSSQL sürümü farklıydı. Yalnız sürüm ile lütfen versiyonu karıştırmayın. Çünkü iki veritabanı da SQL Server 2012 olabilir ama sürümleri büyük ihtimal farklılık göstermektedir. Bir şirketin yazılımında diğer bir şirketin veritabanına bağlanmak istendiğinde Veritabanı sürümleri farklı, yükseltmek istiyor musunuz? Şeklinde bir soru çıkmaktadır. Kullanıcılardan biri bu soruya evet derse vay halinize J Tabi bu durum NAV için geçerli diğer yazılımlarda da mutlaka karşılaşılan bir durum olsa gerek.
Eğer Upgrade yapıldıysa veri tabanına erişmeye çalıştığınızda hiçbir şekilde erişim sağlanamayacaktır.
Bu sorunu çözmek için veri tabanını degrade yapmanız gerekir.
Öncelikle ,İşlemi başlatmadan önce bütün kullanıcıların bağlantılarını kesmesinde yarar vardır.
Veritabanı versiyonu güncelleme işleminin yapılabilmesi için bir referans veri tabanına ihtiyaç vardır.Bu, canlıda bulunan veri tabanının daha önceden alınmış bir örneği de olabilir aynı versiyonla açılmış farklı bir veri tabanı da. Ancak Canlının kopyası olması ilk seçenektir. Kopyanın aynı sunucuda olmasında fayda vardır. Eğer farklı bir sunucuda ise Management Studio üzerinde birkaç ayarlama yapılmalıdır. Başka türlü tek sorguda erişim problemi yaşanacaktır.
Server Objects / Linked Servers / Providers menüsünden farklı bir sunucuya direkt erişim sağlayabilmek için bir provider eklenmelidir.
Not: Security Sekmesinde kullanıcı adı ve şifreyle giriş yapmak daha uygun olacaktır.
USE SURUM_YUKSELTILECEK_DBNAME
UPDATE [$ndo$dbproperty]
SET [databaseversionno] = (SELECT [databaseversionno] FROM [172.16.1.47].[REFERANSDB].dbo.[$ndo$dbproperty]),
[chartable] = (SELECT CAST([chartable] AS VARBINARY(8000))
FROM [172.16.1.47].[REFERANSDB].dbo.[$ndo$dbproperty])
Eğer farklı sunucudan bir veri tabanı kullanılacaksa ReferansDB adından önce mutlaka IP yazılmalıdır. Aksi halde erişim sorunu ile karşılaşılabilir.
Sorgu çalıştırıldığında kısa sürede versiyon degrade işlemi tamamlanmış olacaktır.