Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 host adıyla birden çok IP adresi ilişkilendirilmişse, SqlClient DNS girişiyle ilişkili tüm IP adreslerini sırasıyla dener. 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, bir bağlantının yük devretme nedeniyle başarısız olabileceği göz önünde bulundurularak, bağlantı yeniden deneme mantığını uygulamanız ve bağlantı tekrar sağlanana kadar başarısız denemeleri tekrar etmeniz gerekir.
.NET Framework 4.5'te SqlClient'a aşağıdaki bağlantı özellikleri eklendi:
ApplicationIntentMultiSubnetFailover
Şu bağlantı dizesi anahtar sözcüklerini program aracılığıyla değiştirebilirsiniz:
Not
.NET Framework 4.6.1 ve sonrasındaki sürümlerde MultiSubnetFailover ayarının true yapılması gerekli değildir. .NET Core ve .NET 5+ için gereklidir.
MultiSubnetFailover ile bağlanma
FCI'ya veya bir KG dinleyicisine bağlanırken MultiSubnetFailover=True her zaman belirtin.
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ı ısrarla 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 alt ağlı hem de çok alt ağlı AG'ler ve FCI'lar 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:
MultiSubnetFailoverTek 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
MultiSubnetFailoverbir 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ı.Connect Timeoutdeğerini, yük devretme süresini karşılamak ve uygulama bağlantısı yeniden deneme girişimlerini azaltmak için artırı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(aşağıda açıklanmıştır) kullanıyorsa ve ikincil çoğaltma konumu salt okunur erişim için yapılandırılmışsa.
SqlDependency yalnızca okunabilir ikincil eşlemelerde desteklenmez.
Birincil çoğaltma, salt okunur iş yüklerini reddedecek şekilde yapılandırılırsa ve bağlantı dizesi ApplicationIntent=ReadOnly içeriyorsa, bağlantı başarısız olur.
Veritabanı Yansıtmasından Çok Alt Ağlı Kümeleri Kullanmaya Yükseltme
Bağlantı dizesinde ArgumentException ve MultiSubnetFailover bağlantı anahtar sözcükleri varsa veya TCP dışındaki bir protokol kullanıldığında Failover Partner bir bağlantı hatası oluşur (MultiSubnetFailover=True). Özellikle SqlException kullanılırsa, bir hata oluşacak (MultiSubnetFailover) ve SQL Server, bunun bir veritabanı yansıtma çiftinin ilintili bir yük devretme iş ortağı olduğunu belirten bir yanıt döndürür.
SqlClient uygulamanızı hâlihazırda veritabanı yansıtması kullanan bir sistemden çok alt ağlı bir senaryoya yükseltiyorsanız, Failover Partner bağlantı özelliğini kaldırmanız, MultiSubnetFailover'i True olarak ayarlamanız ve bağlantı dizesindeki sunucu adını bir kullanılabilirlik grubu dinleyicisi ile değiştirmeniz gerekir. 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.
Birincil veritabanında veritabanı yansıtması kullanılıyorsa ve MultiSubnetFailover=True kullanılabilirlik grubu dinleyicisi yerine birincil veritabanına bağlanan bağlantı dizesinde kullanılıyorsa 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, bağlantı anında ve USE veritabanı deyimi sırasında geçerli amacı zorlayacak, ancak bu yalnızca Always On etkinleştirilmiş bir veritabanı için geçerlidir.
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 vermeyebilir. (Bu işlem, ALLOW_CONNECTIONS ve PRIMARY_ROLETransact-SQL deyimlerinin SECONDARY_ROLE klauzu ile 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.
-
ApplicationIntentbağlantı dizesi anahtar sözcüğü olarakReadOnlyayarlanmalı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ı, hepsi aynı salt okunur replikaya 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 kopyaya bağlandığından emin olmak için, bağlantı dizesi anahtar kelimesine bir kullanılabilirlik grubu dinleyicisi Data Source eklemeyin. 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.