SQL Server'da veritabanı yansıtma

SQL Server'da veritabanı yansıtma, bir SQL Server veritabanının kopyasını veya yansıtmasını hazır bekleyen sunucuda tutmanızı sağlar. Yansıtma, verilerin her zaman iki ayrı kopyasının bulunmasını sağlayarak yüksek kullanılabilirlik ve eksiksiz veri yedekliliği sağlar. SQL Server için .NET Veri Sağlayıcısı, veritabanı yansıtması için örtük destek sağlar, böylece geliştiricinin SQL Server veritabanı için yapılandırıldıktan sonra herhangi bir eylem gerçekleştirmesi veya kod yazması gerekmez. Buna ek olarak, SqlConnection nesnesi içinde bir yük devretme iş ortağı sunucusunun ConnectionStringadını sağlamayı sağlayan açık bir bağlantı modunu destekler.

Yansıtma için yapılandırılmış bir veritabanını hedefleyen bir SqlConnection nesne için aşağıdaki basitleştirilmiş olay dizisi gerçekleşir:

  1. İstemci uygulaması asıl veritabanına başarıyla bağlanır ve sunucu, istemcide önbelleğe alınan iş ortağı sunucusunun adını geri gönderir.

  2. Asıl veritabanını içeren sunucu başarısız olursa veya bağlantı kesilirse, bağlantı ve işlem durumu kaybolur. İstemci uygulaması, asıl veritabanıyla yeniden bağlantı kurmayı dener ve başarısız olur.

  3. ardından istemci uygulaması, iş ortağı sunucusundaki yansıtma veritabanına saydam bir şekilde bağlantı kurmayı dener. Başarılı olursa, bağlantı yansıtma veritabanına yönlendirilir ve bu da yeni asıl veritabanı olur.

Bağlantı Dizesinde Yük Devretme Ortağının Belirtilmesi

Eğer bağlantı dizesinde bir yük devretme iş ortağı sunucusunun adını sağlarsanız, istemci uygulaması ilk kez bağlandığında asıl veritabanı kullanılamıyorsa, istemci saydam bir şekilde yük devretme ortağıyla bağlantı kurmayı dener.

";Failover Partner=PartnerServerName"

Yük devretme iş ortağı sunucusunun adını atlarsanız ve istemci uygulaması ilk kez bağlandığında asıl veritabanı kullanılamıyorsa bir SqlException oluşturulur.

SqlConnection başarıyla açıldığında, yedekleme ortağı adı sunucu tarafından geri gönderilir ve bağlantı dizesinde sağlanan tüm değerlerin yerini alır.

Not

Veritabanı yansıtma senaryoları için, bağlantı dizgesinde katalog veya veritabanı adını açıkça belirtmeniz gerekir. İstemci açıkça belirtilen bir başlangıç kataloğuna veya veritabanına sahip olmayan bir bağlantıda yük devretme bilgilerini alırsa, yük devretme bilgileri önbelleğe alınmaz ve asıl sunucu başarısız olursa uygulama yük devretmeye çalışmaz. Bir bağlantı dizesi yük devretme iş ortağı için bir değere sahipse ancak ilk katalog veya veritabanı için değer yoksa, bir InvalidArgumentException oluşturulur.

Geçerli Sunucu Adını Alma

Yük devretme durumunda, bir DataSource nesnesinin SqlConnection özelliğini kullanarak geçerli bağlantının bağlı olduğu sunucunun adını alabilirsiniz. Aşağıdaki kod parçası, bağlantı değişkeninin açık SqlConnectionbir öğesine başvurduğunu varsayarak etkin sunucunun adını alır.

Bir yük devretme olayı gerçekleştiğinde ve bağlantı yansıtma sunucusuna geçirildiğinde, DataSource özellik yansıtma adını yansıtacak şekilde güncelleştirilir.

Dim activeServer As String = connection.DataSource
string activeServer = connection.DataSource;

SqlClient Yansıtma Davranışı

İstemci her zaman geçerli asıl sunucuya bağlanmayı dener. Hata verirse yük devretme ortağını dener. Yansıtma veritabanı zaten ortak sunucuda birincil role geçirildiyse, bağlantı başarılı olur ve yeni birincil-yansıtma eşlemesi istemciye gönderilir ve çağrının AppDomain ömrü boyunca önbelleğe alınır. Kalıcı depolamada depolanmaz ve farklı AppDomain veya işlemdeki sonraki bağlantılar için kullanılamaz. Ancak, aynı AppDomain içindeki sonraki bağlantılar için kullanılabilir. Aynı veya farklı bir bilgisayarda çalışan başka AppDomain bir veya işlemin her zaman kendi bağlantı havuzuna sahip olduğunu ve bu bağlantıların sıfırlanmadığını unutmayın. Bu durumda, birincil veritabanı kapanırsa, her işlem veya AppDomain bir kez başarısız olur ve havuz otomatik olarak temizlenir.

Not

Sunucudaki yansıtma desteği veritabanı temelinde yapılandırılır. Veri işleme işlemleri, çok parçalı adlar kullanılarak veya geçerli veritabanını değiştirerek, asıl/yansıtma kümesine dahil olmayan diğer veritabanlarında yürütülürse, bu diğer veritabanlarındaki değişiklikler hata durumunda yayılmaz. Yansıtılmayan bir veritabanında veriler değiştirildiğinde hata oluşturulmaz. Geliştiricinin bu tür işlemlerin olası etkisini değerlendirmesi gerekir.

Veritabanı Yansıtma Kaynakları

Yansıtmayı yapılandırma, dağıtma ve yönetme hakkında kavramsal belgeler ve bilgiler için SQL Server belgelerinde aşağıdaki kaynaklara bakın.

Kaynak Açıklama
Veritabanı Yansıtma SQL Server'da yansıtmayı kurmayı ve konfigüre etmeyi açıklar.

Ayrıca bkz.