27 Ağustos 2014 Çarşamba

TransSQL: SQL Server ortamlarınıza kod taşıma

Merhaba arkadaşlar,

Bir süredir bu bloguma bir şey yazamadım, takip eden arkadaşlarımın tahmin ettiği gibi TransSQL isimli SQL Server ortamları arasında kod taşıma işini yapan uygulamamızın geliştirilmesi konusunda harıl harıl çalışmalarımıza devam ediyoruz.

Sağolsun Yiğit Aktan, Yavuz Selim Akbulut, İlker Usta ve Turgay Sahtiyan gibi deneyimli Veritabanı Yöneticisi arkadaşlarımın, Semerkand Grup'ta IT Direktörü olan Murat Demirkıran'ın ve İş Analisti olan eşim Selin Bilge Kurt Önsoy'un da değerli yorumları ve destekleriyle iyi bir noktaya geldik.

Henüz bir "demo" versiyon yok, demo versiyonu sizlerle bu senenin sonuna doğru paylaşmayı umut ediyorum. O vakte kadar tamamlamamız gereken bazı dokümantasyon, işlevsellik testi ve güvenlik ile ilgili çalışmalar var.

Uygulamamız ile ilgili ayrıntıları www.transsql.com alan adını taşıyan blog'umuzda bulabilirsiniz. Bu blog'taki yazılar hem Türkçe hem İngilizce. TransSQL konusundaki tüm gelişmeler orada yayınlanıyor.

Sitemizi ziyaret eder ve uygulamanın gelişimi konusunda bize yorumlarınız, tavsiyeleriniz ve yapıcı eleştirilerinizle destek gösterirseniz çok memnun oluruz.

Selamlar,
Ekrem Önsoy


1 Ağustos 2014 Cuma

Bir replikasyon macerası

Bugün bir replikasyon kurulumuyla başım beladaydı… Sizlere de anlatayım dedim.

SQL Server 2005 olan ortamların birinde sorun var diye haber geldi, bağlandım baktım, ne göreyim dersiniz? Error Log'da aşağıdaki kaydı gördüm:

The operating system returned error 23(Data error (cyclic redundancy check).) to SQL Server during a read at offset 0x00000000012000 in file 'C:\xxx\distribution.MDF'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe system-level error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.

Tabii ki tüylerim diken diken oldu, çünkü bu, Corruption olduğu anlamına geliyordu.

Veritabanı SQL Server servis açılışında bu sorun nedeniyle yüklenemiyordu. Bu ortamdaki Distribution veritabanının bir yedeği de yoktu. Daha ne olsun? Kötü bir senaryo için her şeyimiz tam.

Neyse ki tatil dönemindeyiz ve neyse ki bu sunucuda sadece bir veritabanı replikasyona dahil.

Tüm replikasyonu kaldırıp, yapılandırmayı silip, her şeyi yeniden kurmaya karar verdim. Replike olan veritabanında aşağıdaki komutu çalıştırdım:

EXEC sp_removedbreplication

Daha sonra Distribution veritabanını kaldırmak için aşağıdakini:

EXEC sp_dropdistributor @no_checks = 1, @ignore_distributor = 1

Kar etti mi? Tabii ki hayır, çünkü Distribution veritabanım Corrupt durumda ve erişilemiyor. Bu noktada aklıma olan Distribution veritabanını kaldırmak ve yerine başka bir SQL Server 2005 Instance'ında yaratılmış Distribution veritabanını Restore etmek geldi, bunu yaptım.

Daha sonra Distribution veritabanını kaldırmak için aşağıdaki komutu çalıştırdım:

EXEC master.dbo.sp_serveroption @server=N'sunucu_adı', @optname=N'dist', @optvalue=N'true'

Bu komut hayatımı kurtardı. Sayesinde Distribution'dan kurtuldum ve replikasyonu tekrar baştan kurdum.

Burada benim hayatımı kurtaran şeyler, bağlanacak ve yalandan da olsa yeni bir Distribution veritabanı oluşturabilecek bir SQL Server 2005 ortamımın olması ve sp_removedbreplication ve sp_serveroption komutlarıydı.

Bir replikasyonu temizlemek zaman zaman gerçekten çok sıkıntılı olabiliyor, olur da birilerinin başına gelirse belki buradaki ipuçlarından faydalanabilirler…

Ekrem Önsoy