Yüksek kullanılabilirlik ve olağanüstü durum kurtarma için SqlClient Desteği
Bu makalede, Always On özellikleriyle yüksek kullanılabilirlik ve olağanüstü durum kurtarma için SqlClient desteği (.NET Framework 4.5'e eklendi) açıklanır: SQL Server 2012 veya sonraki sürümleriyle Always On kullanılabilirlik grupları (AG' ler) ve Always On yük devretme kümesi örnekleri (FCI'ler).
Artık bağlantı özelliğinde bir kullanılabilirlik grubu dinleyicisi veya FCI adı belirtebilirsiniz. SqlClient uygulaması yük devreden bir 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 AG veya FCI'ya bağlanmıyorsanız ve bir konak adıyla birden çok IP adresi ilişkilendirildiyse, SqlClient DNS girişiyle ilişkili tüm IP adresleri üzerinden sırayla yinelenir. 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. Bir FCI'yı veya kullanılabilirlik grubunun dinleyicisine bağlarken, SqlClient tüm IP adreslerine paralel olarak bağlantı kurmayı dener. Bağlantı girişimi başarılı olursa, sürücü bekleyen bağlantı girişimlerini atar.
Not
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.
.NET Framework 4.5'te SqlClient'a aşağıdaki bağlantı özellikleri eklendi:
ApplicationIntent
MultiSubnetFailover
Şu bağlantı dizesi anahtar sözcüklerini program aracılığıyla değiştirebilirsiniz:
Not
true
.NET Framework 4.6.1 ve sonraki sürümlerde ayarı MultiSubnetFailover
gerekli değildir. .NET Core ve .NET 5+ için gereklidir.
MultiSubnetFailover ile bağlanma
FCI'ya veya ag dinleyicisine bağlanırken her zaman belirtin MultiSubnetFailover=True
. MultiSubnetFailover
SQL Server 2012 veya sonraki sürümlerinde tüm AG'ler ve veya FC'ler 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. Çok alt ağlı yük devretme sırasında istemci paralel olarak bağlantı kurmaya çalışır. Alt ağ yük devretmesi sırasında istemci TCP bağlantısını agresif bir şekilde yeniden dener.
MultiSubnetFailover
Bağlantı özelliği, uygulamanın AG veya FCI kullandığını ve SqlClient'ın tüm IP adreslerine bağlanmaya çalışarak birincil SQL Server örneğindeki veritabanına bağlanmaya çalışacağını 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, AG veya FCI yük devretmesi sonrasında daha hızlı yeniden bağlantı sağlar ve hem tek hem de çok alt ağlı AG'ler ve FC'ler için geçerlidir.
SqlClient'da bağlantı dizesi anahtar sözcükleri hakkında daha fazla bilgi için bkzConnectionString. .
MultiSubnetFailover=True
AG veya FCI dışında bir şeye bağlanırken belirtme olumsuz performans etkisine neden olabilir ve desteklenmez.
Always On özelliklerinden birini kullanarak 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.Ag'ye bağlanmak için kullanılabilirlik grubunun dinleyicisini bağlantı dizesi 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 kullanıyorsa
ApplicationIntent=ReadWrite
(aşağıda açıklanmıştır) ve ikincil çoğaltma konumu salt okunur erişim için yapılandırılmışsa.
SqlDependency salt okunur ikincil çoğaltmalarda desteklenmez.
Birincil çoğaltma salt okunur iş yüklerini reddedecek şekilde yapılandırılırsa ve bağlantı dizesi içerirse ApplicationIntent=ReadOnly
bağlantı başarısız olur.
Veritabanı Yansıtmasından Çok Alt AğLı Kümeleri Kullanmaya Yükseltme
ve Failover Partner
bağlantı anahtar sözcükleri bağlantı dizesi varsa veya TCP dışında bir protokol kullanılıyorsa MultiSubnetFailover=True
bir bağlantı hatası (ArgumentException) oluşurMultiSubnetFailover
. Kullanılırsa MultiSubnetFailover
bir hata (SqlException) oluşur 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ür.
Şu anda çok alt ağlı bir senaryoya veritabanı yansıtması kullanan bir SqlClient uygulamasını yükseltiyorsanız, bağlantı özelliğini kaldırmanız Failover Partner
ve MultiSubnetFailover
bağlantı dizesi sunucu adını bir kullanılabilirlik grubu dinleyicisi ile değiştirip olarak değiştirmeniz True
gerekir. bir bağlantı dizesi ve MultiSubnetFailover=True
kullanıyorsaFailover Partner
, sürücü bir hata oluşturur. Ancak, bir bağlantı dizesi ve MultiSubnetFailover=False
(veya ApplicationIntent=ReadWrite
) kullanıyorsaFailover Partner
, 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ı dizesi kullanılıyorsa MultiSubnetFailover=True
sürücü bir hata döndürür.
Uygulama Amacını Belirtme
olduğunda ApplicationIntent=ReadOnly
, istemci AlwaysOn özellikli bir veritabanına bağlanırken okuma iş yükü isteğinde bulunur. Sunucu amacı bağlantı zamanında ve USE veritabanı deyimi sırasında zorlar, ancak yalnızca Always On etkin bir veritabanına uygular.
Anahtar ApplicationIntent
sözcük eski, salt okunur veritabanlarıyla çalışmaz.
Veritabanı, hedeflenen AlwaysOn veritabanındaki okuma iş yüklerine izin verebilir veya izin verebilir. (Bu işlem ve SECONDARY_ROLE
Transact-SQL deyimlerinin PRIMARY_ROLE
yan tümcesiyle ALLOW_CONNECTIONS
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 kullanılabilirlik grubu dinleyicisine bağlanmanız gerekir.
ApplicationIntent
bağlantı dizesi anahtar sözcüğü olarakReadOnly
ayarlanmalı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ı dizesi anahtar sözcüğüne bir kullanılabilirlik grubu dinleyicisi Data Source
geçirmeyin. 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.