Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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:
- Jaký server a databázi aplikace používá?
- Pod jakou identitou aplikace běží?
- Jak klient ověřuje certifikát serveru?
- 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=Strictkdyž server podporuje TDS 8.0 a má certifikát, který klient může ověřit. -
Encrypt=truepro š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=falsejako 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.