Připojovací řetězce pro Microsoft.Data.SqlClient

Připojovací řetězec Microsoft.Data.SqlClient určuje ovladači, který koncový bod kompatibilní se serverem SQL Server a kterou databázi má použít, jak se má ověřit a jak má nakonfigurovat připojení. Předejte to SqlConnection nebo SqlConnectionStringBuilder.

Začněte se čtyřmi rozhodnutími:

  1. Jaký server a databázi aplikace používá?
  2. Pod jakou identitou aplikace běží?
  3. Jak klient ověřuje certifikát serveru?
  4. Jaké chování připojení pracovní zátěž vyžaduje?

Nechte přihlašovací údaje a přístupové tokeny mimo připojovací řetězec, pokud zvolená autentizační metoda tento návrh podporuje.

Vyberte autentizační vzor

Použijte nejužší vzor, který odpovídá nasazení.

Environment Preferovaný vzor Základní připojovací řetězec
SQL Server na Windows pod doménou nebo lokální identitou Windows Integrované ověřování systému Windows Server=<server>;Database=<database>;Integrated Security=true;Encrypt=true
Pracovní stanice pro vývojáře připojující se k SQL databázi v Microsoft Fabric Microsoft Entra ID výchozí řetězec přihlašovacích údajů Server=tcp:<server>,1433;Database=<database>;Authentication=Active Directory Default;Encrypt=Strict
Application hostovaná v Azure a připojení k Azure SQL spravovaná identita Microsoft Entra ID Server=tcp:<server>.database.windows.net,1433;Database=<database>;Authentication=Active Directory Managed Identity;Encrypt=Strict
Vývojářská pracovní stanice připojená k Azure SQL výchozí řetězec přihlašovacích údajů Microsoft Entra ID Server=tcp:<server>.database.windows.net,1433;Database=<database>;Authentication=Active Directory Default;Encrypt=Strict
Interaktivní desktopový nástroj připojující se k Azure SQL Interaktivní autentizace Microsoft Entra ID Server=tcp:<server>.database.windows.net,1433;Database=<database>;Authentication=Active Directory Interactive;Encrypt=Strict
Prostředí, které vyžaduje SQL autentizaci Uživatelské jméno a heslo z tajného úložiště Server=<server>;Database=<database>;User ID=<user_id>;Password=<password>;Encrypt=true

Microsoft.Data.SqlClient 7.0 a novější verze vyžadují pro režimy ověřování Microsoft Entra ID poskytované ovladačem balíček Microsoft.Data.SqlClient.Extensions.Azure ve verzi odpovídající verzi ovladače. Toto rozšíření nepotřebujete, když aplikační kód poskytuje přístupový token nebo callback přístupového tokenu.

Autentizace také vyžaduje uživatele na straně databáze, oprávnění a konfiguraci identity. Pro kompletní matici výběru a nastavení viz Microsoft Entra ID autentizace a SQL Server autentizace.

Specifikujte server a databázi

Používejte Server a Database jako kanonická klíčová slova. Ovladač také přijímá aliasy jako Data Source for Server a Initial Catalog for Database.

Mezi běžné serverové formy patří:

Server=server-name
Server=server-name\instance-name
Server=tcp:server-name,1433
Server=(localdb)\MSSQLLocalDB

Preferujte explicitní protokol, hostitelské jméno a port pro produkční TCP spojení. Použijte stabilní DNS jméno, které odpovídá serverovému certifikátu, místo IP adresy.

Pro skupinový posluchač dostupnosti, skupinu pro failover, Azure SQL endpoint nebo jiný víceadresný TCP endpoint také zkontrolujte MultiSubnetFailoverv možnostech připojení.

Konfigurace šifrování a ověřování certifikátů

Microsoft.Data.SqlClient 4.0 a novější verze mají jako výchozí hodnotu true. Microsoft.Data.SqlClient 5.0 a novější také podporují Encrypt=Strict pro servery, které vyjednají TDS 8.0.

Použití:

  • Encrypt=Strict když server podporuje TDS 8.0 a má certifikát, který klient může ověřit.
  • Encrypt=true pro šifrovaná spojení s dalšími podporovanými servery.
  • TrustServerCertificate=false, ve výchozím nastavení, pro ověřování produkčních certifikátů.

Nepoužívejte TrustServerCertificate=true jako obecné řešení problémů s připojením. Šifruje kanál, ale vynechává ověřování identity serveru. Omezte to na kontrolovaná vývojová prostředí, kde důvěryhodný certifikát není dostupný.

Pro požadavky serveru, chování verzí a možnosti certifikátů viz Šifrování a ověřování certifikátů.

Seznamte se se syntaxí připojovacího řetězce

Připojovací řetězec je seznam dvojic klíč–hodnota oddělených středníkem:

Server=tcp:sql.example.com,1433;Database=Orders;Integrated Security=true;Encrypt=true

Postupujte podle těchto pravidel:

  • Názvy klíčových slov nejsou citlivé na velikost písmen.
  • Hodnoty mohou být závislé na velikostních písmenech.
  • Závěrečný středník je volitelný.
  • Uveďte hodnotu s jednou nebo dvojitou uvozovkou, pokud obsahuje středník nebo úvodní či zadní mezeru.
  • Vyhněte se citátu, který uzavírá hodnotu, tím, že ji zdvojnásobíte.
  • Nepoužívejte duplicitní klíčová slova. Parser používá poslední hodnotu, což ztěžuje kontrolu efektivní konfigurace.

Sada přijatých klíčových slov a aliasů patří poskytovateli. Připojovací řetězec přijímaný komponentou Microsoft.Data.SqlClient nemusí fungovat s System.Data.SqlClient nebo jiným poskytovatelem dat.

Bezpečně budujte spojovací řetězce

Použijte je SqlConnectionStringBuilder , když kód potřebuje přidávat, validovat nebo nahrazovat hodnoty. Nespojujte nedůvěryhodné hodnoty do připojovací řetězec.

string baseConnectionString =
    configuration.GetConnectionString("Orders")
    ?? throw new InvalidOperationException(
        "Connection string 'Orders' wasn't configured.");

var builder = new SqlConnectionStringBuilder(baseConnectionString)
{
    ApplicationName = "Orders.Api",
    ConnectTimeout = 30,
};

string connectionString = builder.ConnectionString;

Stavitel:

  • Odmítá nepodporovaná klíčová slova a neplatné hodnoty.
  • Mapuje aliasy na kanonické vlastnosti.
  • Uzavírá hodnoty do uvozovek podle potřeby.
  • Zabraňuje tomu, aby hodnota vkládala další klíčové slovo.

Builder nechrání heslo ani token po vstupu do paměťi procesu. Také nerozhoduje, zda je bezpečné nastavit server, identitu nebo certifikát.

Ukládejte informace o spojení mimo kód

Načíst připojovací řetězce z konfiguračního systému, který aplikace používá. Současné .NET aplikace běžně používají proměnné prostředí, uživatelská tajemství pro lokální vývoj, Azure App Configuration a konfiguraci podporovanou Azure Key Vault.

Dodržujte tato pravidla:

  • Nepřikládejte hesla, klientská tajemství, přístupové tokeny ani produkční spojovací řetězce.
  • Preferuji autentizační metodu založenou na identitě, která nevyžaduje heslo v připojovací řetězec.
  • Omezte přístup ke zdroji konfigurace.
  • Rotujte uložená tajemství a restartujte nebo obnovujte aplikace, které je cacheují.
  • Nezapisujte spojovací řetězce do logů, výjimek, tras nebo telemetrie.
  • Ponechte Persist Security Info=false jako výchozí nastavení, aby otevřené připojení nezpřístupňovalo bezpečnostně citlivé hodnoty prostřednictvím svého připojovacího řetězce.

Pro poskytovatele konfigurace .NET viz Konfigurace v .NET. Pro další ovládací prvky viz Protect connection information.

Udržujte klíče od bazénu stabilní

Sdružování připojení používá přesnou konfiguraci připojení jako součást klíče fondu připojení. Ekvivalentní řetězce mohou vytvářet samostatné pooly, když se jejich text liší, včetně případů, kdy se klíčová slova objevují v jiném pořadí.

Při spuštění aplikace vytvořte jeden kanonický připojovací řetězec a znovu ho použijte. Nepřidávejte do řetězce ID požadavků, uživatelská jména, přístupové tokeny ani jiné hodnoty pro jednotlivé požadavky. Pro kompletní pravidla klíčů viz SQL Server connection pooling.

Samostatná nastavení připojení a příkazů

Připojovací řetězec řídí navázání připojení a chování relace. Příkaz ovládá jednu SQL operaci.

Requirement Konfigurace zapnutá
Čas vyhrazený k navázání spojení nebo jeho získání z poolu Connect Timeout Možnost připojení
Výchozí časový limit provádění příkazů Command Timeout možnost připojení, pokud je verze ovladače podporována
Časový limit pro jeden příkaz CommandTimeout
Zrušení volajícím CancellationToken předaný asynchronním rozhraním API
Politika opakování pro navázání spojení nebo spuštění příkazu Konfigurovatelná logika opakovaného pokusu na SqlConnection nebo SqlCommand

Neber delší časový limit jako logiku opakování. Časový limit je jedno čekání. Opakovaný pokus spustí další pokus a musí mít stanovené meze a být bezpečný pro opakování.

Zkontrolovat chování závislé na verzi

Verze ovladače Změna spojovacího řetězce
4.0 Výchozí hodnotou Encrypt je true.
5.0 Encrypt=Strict a HostNameInCertificate jsou k dispozici. SqlConnectionStringBuilder.Encrypt používá SqlConnectionEncryptOption.
5.1 ServerCertificate může porovnat serverový certifikát se souborem.
5.2 AccessTokenCallback je k dispozici pro obnovitelné tokeny dodané aplikací.
7.0 Ověřování Microsoft Entra ID poskytované ovladačem se přesouvá do Microsoft.Data.SqlClient.Extensions.Azure.
7.0.2 Základní ovladač a jeho doprovodné balíčky používají stejné verze.

Použijte podporovanou stabilní verzi ovladače a před aktualizací si přečtěte poznámky k vydání. Pro aktuální verze viz životní cyklus podpory ovladačů SqlClient.