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ı belirtme

bağlantı dizesi 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 olarak 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, yük devretme iş ortağı adı sunucu tarafından döndürülür ve bağlantı dizesi sağlanan tüm değerlerin yerini alır.

Not

Veritabanı yansıtma senaryoları için bağlantı dizesi ilk 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 nesnenin özelliğini kullanarak geçerli bağlantının gerçekten bağlı olduğu sunucunun DataSource SqlConnection 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 özelliği 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. Başarısız olursa yük devretme ortağını dener. Yansıtma veritabanı zaten iş ortağı sunucusunda asıl role geçirildiyse, bağlantı başarılı olur ve istemciye yeni asıl yansıtma eşlemesi gönderilir ve çağrısının AppDomainömrü boyunca önbelleğe alınır. Kalıcı depolamada depolanmaz ve farklı bir 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 bir AppDomain veya işleminin 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ı ayarlamayı ve yapılandırmayı açıklar.

Ayrıca bkz.