Aracılığıyla paylaş


Yüksek kullanılabilirlik, olağanüstü durum kurtarma için SqlClient desteği

ADO.NET'i indir

Bu konu başlığında, yüksek kullanılabilirlik, olağanüstü durum kurtarma -- Always On Kullanılabilirlik Grupları için SQL Server desteği için Microsoft SqlClient Veri Sağlayıcısı açıklanmaktadır. AlwaysOn Kullanılabilirlik Grupları özelliği SQL Server 2012'ye eklendi. Always On Kullanılabilirlik Grupları hakkında daha fazla bilgi için bkz. SQL Server Books Online.

Artık bağlantı özelliğinde yüksek kullanılabilirlik ve olağanüstü durum kurtarma özellikli bir kullanılabilirlik grubu (AG) veya SQL Server 2012 Yük Devretme Kümesi Örneği'nin kullanılabilirlik grubu dinleyicisini tanımlayabilirsiniz. SqlClient uygulaması yük devreden bir Always On veritabanına bağlıysa, özgün bağlantı kesilir ve yük devretmeden sonra çalışmaya devam etmek için uygulamanın yeni bir bağlantı açması gerekir.

Bir kullanılabilirlik grubu dinleyicisine veya SQL Server 2012 Yük Devretme Kümesi Örneğine bağlanmıyorsanız ve bir ana bilgisayar adıyla birden fazla IP adresi ilişkilendirildiyse, SqlClient, DNS girişine bağlı tüm IP adreslerini sırayla geçerek işler. DNS sunucusu tarafından döndürülen ilk IP adresi herhangi bir ağ arabirimi kartına (NIC) bağlı değilse bu işlem zaman alabilir. Kullanılabilirlik grubu dinleyicisine veya SQL Server 2012 Yük Devretme Kümesi Örneğine bağlanırken, SqlClient tüm IP adreslerine paralel olarak bağlantı kurmayı dener ve bağlantı girişimi başarılı olursa sürücü bekleyen tüm bağlantı girişimlerini atar.

Uyarı

Bağlantı zaman aşımının artırılması ve bağlantı yeniden deneme mantığının uygulanması, bir uygulamanın kullanılabilirlik grubuna bağlanma olasılığını artırır. Ayrıca, yük devretme nedeniyle bağlantı başarısız olabileceğinden bağlantı yeniden deneme mantığını uygulamanız ve yeniden bağlanana kadar başarısız bağlantıyı yeniden denemeniz gerekir.

Aşağıdaki bağlantı özellikleri SQL Server için Microsoft SqlClient Veri Sağlayıcısı'nda desteklenir:

  • ApplicationIntent

  • MultiSubnetFailover

Şu bağlantı dizesi anahtar sözcüklerini program aracılığıyla değiştirebilirsiniz:

MultiSubnetFailover ile bağlanma

SQL Server 2012 kullanılabilirlik grubu dinleyicisine veya SQL Server 2012 Yük Devretme Kümesi Örneğine bağlanırken MultiSubnetFailover=True mutlaka belirtin. MultiSubnetFailover SQL Server 2012'deki tüm Kullanılabilirlik Grupları ve veya Yük Devretme Kümesi Örneği için daha hızlı yük devretmeyi etkinleştirir ve tek ve çok alt ağlı AlwaysOn topolojileri için yük devretme süresini önemli ölçüde azaltır. Birden çok alt ağ yük devretmesi sırasında istemci eşzamanlı olarak bağlantı girişimlerinde bulunur. Alt ağ yük devretmesi sırasında TCP bağlantısını agresif bir şekilde yeniden dener.

MultiSubnetFailover Bağlantı özelliği, uygulamanın bir kullanılabilirlik grubunda veya SQL Server 2012 Yük Devretme Kümesi Örneğinde dağıtıldığını ve SqlClient'ın tüm IP adreslerine bağlanmaya çalışarak birincil SQL Server örneğindeki veritabanına bağlanmayı deneyeceğini gösterir. MultiSubnetFailover=True Bir bağlantı için belirtildiğinde, istemci TCP bağlantısını yeniden dener ve işletim sisteminin varsayılan TCP yeniden aktarım aralıklarından daha hızlı çalışır. Bu, Always On Kullanılabilirlik Grubu veya AlwaysOn Yük Devretme Kümesi Örneğinin yük devretmesi sonrasında daha hızlı yeniden bağlantı sağlar ve hem tek hem de çok alt ağlı Kullanılabilirlik Grupları ve Yük Devretme Kümesi Örnekleri için geçerlidir.

SqlClient'daki bağlantı dizesi anahtar sözcükleri hakkında daha fazla bilgi için bkz ConnectionString. .

SQL Server 2012 Yük Devretme Kümesi Örneği veya kullanılabilirlik grubu dinleyicisi dışında bir şeye bağlanırken MultiSubnetFailover=True belirtilmesi olumsuz bir performans etkisine neden olabilir ve desteklenmez.

Kullanılabilirlik grubundaki veya SQL Server 2012 Yük Devretme Kümesi Örneği'ndeki bir sunucuya bağlanmak için aşağıdaki yönergeleri kullanın:

  • MultiSubnetFailover Tek bir alt ağa veya çok alt ağa bağlanırken bağlantı özelliğini kullanın; her ikisi için de performansı artırır.

  • Bir kullanılabilirlik grubuna bağlanmak için, kullanılabilirlik grubunun kullanılabilirlik grubu dinleyicisini bağlantı dizenizde sunucu olarak belirtin.

  • 64'ten fazla IP adresiyle yapılandırılmış bir SQL Server örneğine bağlanmak bağlantı hatasına neden olur.

  • Bağlantı özelliğini kullanan MultiSubnetFailover bir uygulamanın davranışı, kimlik doğrulaması türüne göre etkilenmez: SQL Server Kimlik Doğrulaması, Kerberos Kimlik Doğrulaması veya Windows Kimlik Doğrulaması.

  • Yük devretme süresine uyum sağlamak için değerini Connect Timeout artırın ve uygulama bağlantısı yeniden deneme girişimlerini azaltın.

  • Dağıtılmış işlemler desteklenmez.

Salt okunur yönlendirme etkin değilse, ikincil çoğaltma konumuna bağlanma aşağıdaki durumlarda başarısız olur:

  • İkincil çoğaltma konumu bağlantıları kabul etmek üzere yapılandırılmamışsa.

  • Bir uygulama ApplicationIntent=ReadWrite kullanıyorsa (aşağıda açıklanmıştır) ve ikincil replika konumu yalnızca okumaya yönelik olarak yapılandırılmışsa.

SqlDependency yalnızca okunur ikincil replikalarda desteklenmez.

Birincil çoğaltma, salt okunur iş yüklerini reddedecek şekilde yapılandırılmışsa ve bağlantı dizesi ApplicationIntent=ReadOnly içeriyorsa bağlantı başarısız olur.

Veritabanı yansıtma yönteminden çok alt ağlı kümelerin kullanımına geçiş için yükseltme

Bağlantı dizesinde ArgumentException ve MultiSubnetFailover bağlantı anahtar sözcükleri varsa veya TCP dışında bir protokol kullanılıyorsa Failover Partner bir bağlantı hatası (MultiSubnetFailover=True) oluşur. Bir hata (SqlException) de oluşacaktır eğer MultiSubnetFailover kullanılırsa ve SQL Server, bunun bir veritabanı yansıtma çiftinin parçası olduğunu belirten bir yük devretme iş ortağı yanıtı döndürürse.

Çok alt ağlı senaryoya veritabanı yansıtması kullanan bir SqlClient uygulamasını yükseltiyorsanız, Failover Partner bağlantı özelliğini kaldırmalı ve MultiSubnetFailover değerini True olarak ayarlamalı, bağlantı dizesindeki sunucu adını ise bir kullanılabilirlik grubu dinleyicisi ile değiştirmelisiniz. Eğer bir bağlantı dizesi Failover Partner ve MultiSubnetFailover=True kullanıyorsa, sürücü bir hata oluşturur. Ancak, bir bağlantı dizesi Failover Partner ve MultiSubnetFailover=False (veya ApplicationIntent=ReadWrite) kullanıyorsa, uygulama veritabanı yansıtmayı kullanır.

AG'deki birincil veritabanında veritabanı yansıtması kullanılıyorsa ve kullanılabilirlik grubu dinleyicisi yerine birincil veritabanına bağlanan bağlantı dizesinde kullanılıyorsa MultiSubnetFailover=True sürücü bir hata döndürür.

Uygulama amacını belirtme

olduğunda ApplicationIntent=ReadOnly, istemci Always On özellikli bir veritabanına bağlanırken okuma iş yükü isteğinde bulunur. Bağlantı zamanında ve USE veritabanı deyimi sırasında, sunucu amacı sadece Always On etkin bir veritabanına uygular.

Anahtar ApplicationIntent sözcük eski, salt okunur veritabanlarıyla çalışmaz.

Veritabanı, hedeflenen Always On veritabanında okuma iş yüklerine izin verebilir veya izin vermeyebilir. (Bu, ALLOW_CONNECTIONS ve PRIMARY_ROLE Transact-SQL ifadelerinin SECONDARY_ROLE yan tümcesiyle yapılır.)

ApplicationIntent anahtar sözcüğü salt okunur yönlendirmeyi etkinleştirmek için kullanılır.

Salt okunur yönlendirme

Salt okunur yönlendirme, bir veritabanının salt okunur çoğaltmasının kullanılabilirliğini sağlayabilen bir özelliktir. Salt okunur yönlendirmeyi etkinleştirmek için:

  • Always On Kullanılabilirlik Grubu dinleyicisine bağlanmanız gerekir.

  • ApplicationIntent Bağlantı dizesi anahtar sözcüğü olarak ReadOnlyayarlanmalıdır.

  • Salt okunur yönlendirmeyi etkinleştirmek için Kullanılabilirlik Grubu veritabanı yöneticisi tarafından yapılandırılmalıdır.

Salt okunur yönlendirme kullanan birden çok bağlantının tümü aynı salt okunur çoğaltmaya bağlanmayabilir. Veritabanı eşitlemesindeki değişiklikler veya sunucunun yönlendirme yapılandırmasındaki değişiklikler, istemcinin farklı salt okunur çoğaltmalara bağlanmasına neden olabilir. Tüm salt okunur isteklerin aynı salt okunur çoğaltmaya bağlandığından emin olmak için, bağlantı dizesindeki Data Source anahtar sözcüğüne bir kullanılabilirlik grubu dinleyicisi kullanmaktan kaçının. Bunun yerine salt okunur örneğin adını belirtin.

Salt okunur yönlendirme birincile bağlanmaktan daha uzun sürebilir çünkü salt okunur yönlendirme önce birincile bağlanır ve ardından kullanılabilir en iyi okunabilir ikincil değeri arar. Bu nedenle oturum açma zaman aşımınızı artırmalısınız.

Sonraki Adımlar