Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Namnrymden Microsoft.Data.SqlClient innehåller den stödda .NET-dataleverantören för SQL Server-kompatibla databaser. Det började som en förgrening av System.Data.SqlClient och behåller den välkända ADONET-programmeringsmodellen samtidigt som nya SQL Server-funktioner levereras oberoende av .NET-runtime.
Använd Microsoft.Data.SqlClient för ny utveckling.
Installera och importera namnrymden
Lägg till NuGet-paketet:
dotnet add package Microsoft.Data.SqlClient
Importera namnrymden:
using Microsoft.Data.SqlClient;
De flesta applikationer använder SqlConnection, SqlCommand, SqlParameter, SqlDataReader, och SqlTransaction. För hela den offentliga ytan, se Microsoft. Data.SqlClient API-referensen.
Förhållande till ADO.NET
ADO.NET är dataåtkomstmodellen som är inbyggd i .NET. Den definierar leverantörsoberoende abstraktioner i namnrymden System.Data.Common, och Microsoft.Data.SqlClient levererar de konkreta implementationerna.
| ADO.NET-abstraktion | SqlClient-typ | Purpose |
|---|---|---|
| DbConnection | SqlConnection | Öppnar en logisk anslutning till en databas. |
| DbCommand | SqlCommand | Exekverar Transact-SQL (T-SQL) text eller en lagrad procedur. |
| DbParameter | SqlParameter | Skickar ett skrivet värde separat från kommandotexten. |
| DbDataReader | SqlDataReader | Strömmar resultatrader från servern. |
| DbTransaction | SqlTransaction | Grupperar kommandon i en transaktion som bekräftas eller rullas tillbaka som en enhet. |
| DbDataAdapter | SqlDataAdapter | Fyller och uppdaterar frånkopplade DataSet och DataTable objekt. |
| DbBatch | SqlBatch | Skickar flera kommandon som en batch på stödda målramverk. |
Microsoft. Data.SqlClient tillhandahåller också SQL Server-specifika API:er såsom:
SqlBulkCopySqlConnectionStringBuilderSqlConfigurableRetryFactorySqlDependency- SQL Server-specifik autentisering, kryptering och stöd för datatyper
Programmera mot ADO.NET-abstraktionerna när ett bibliotek måste stödja flera databasleverantörer. Använd SqlClient-typerna när en applikation riktar sig mot SQL Server och behöver leverantörsspecifika funktioner, såsom Microsoft Entra-autentisering, Always Encrypted, bulkkopiering, tabellvärdesparametrar eller konfigurerbar återförsökslogik. Behåll leverantörsspecifik kod bakom en dataåtkomstgräns om resten av applikationen måste förbli leverantörsoberoende.
Ansluten och frånkopplad åtkomst
Uppkopplad åtkomst håller en anslutning öppen medan ett kommando körs och medan applikationen läser sina resultat. En typisk förfrågan följer denna sekvens:
- Skapa en
SqlConnectionfrån en reťazec pripojenia och öppna den. - Skapa en
SqlCommandoch lägg tillSqlParametervärden. - Kör kommandot.
- Bearbeta ett skalärt värde, en påverkad radräkning eller en
SqlDataReader. - Gör dig av med läsaren, kommandot och kontakten.
Använd ansluten åtkomst för de flesta webb-API:er, tjänster, arbetare och kommandoradsapplikationer.
SqlDataReader strömmar rader och använder vanligtvis mindre minne än att ladda hela resultatet i en DataSet.
Med Disconnected access används SqlDataAdapter för att kopiera data till ett objekt DataSet eller DataTable i minnet. Applikationen kan stänga anslutningen medan den läser eller ändrar minnesdata, och sedan ansluta igen för att skicka uppdateringar. Använd det för databindning, relationer i minnet och begränsningar, offline-redigeringar som du stämmer av senare, eller en befintlig applikation byggd kring DataAdapters. För nya begärandebaserade tjänster, börja med SqlCommand och SqlDataReader.
Objektets livslängd och samtidighet
Öppna och frigör en SqlConnection för varje arbetsenhet. Anslutningspooling återanvänder den underliggande fysiska anslutningen, så håll inte en global anslutning öppen under hela applikationens livstid. Släng anslutningar, kommandon, läsare, transaktioner och masskopiera objekt snabbt. I asynkron kod, använd await using för typer som implementerar IAsyncDisposable på målramverket, såsom SqlConnection och SqlDataReader på .NET, och vanligt using för typer som endast implementerar IDisposable, såsom SqlBulkCopy.
SqlConnection, SqlCommand, SqlDataReader, och SqlTransaction stöder inte samtidig användning från flera trådar. Ge varje samtidig operation en egen anslutning och förlita dig på anslutningspoolning. Multiple Active Result Sets (MARS) tillåter mer än en aktiv resultatuppsättning på en anslutning, men gör inte SqlClient-objekt trådsäkra.
Förhållandet till System.Data.SqlClient
System.Data.SqlClientär den äldre leverantören som levereras med .NET Framework och tidigare .NET-versioner.
Microsoft.Data.SqlClient använder många av samma typnamn, men har olika paket, namnrymder, standardinställningar, funktioner och supportpolicys.
Referera inte till båda leverantörerna i den nya applikationskoden. Typer med samma namn från de två paketen är inte utbytbara. En System.Data.SqlClient.SqlConnection kan till exempel inte skickas vidare när ett Microsoft.Data.SqlClient.SqlConnection krävs.
Migreringen börjar vanligtvis med att lägga till paketet Microsoft.Data.SqlClient och ändra namnrymdsreferenser, men du måste också granska anslutningskryptering, parametrar, konfiguration, transitiva beroenden och körtidsbeteende. Följ Migrera från System.Data.SqlClient till Microsoft.Data.SqlClient innan du distribuerar.
Versionskompatibilitet
Drivrutinspaketversionen är oberoende av applikationens .NET-version och databasmotorversionen. Kolla alla tre:
| Component | Vad du ska verifiera |
|---|---|
| Microsoft.Data.SqlClient | Release-linjen stöds och innehåller de funktioner som din applikation använder. |
| .NET- eller .NET-ramverket | Applikationen riktar sig mot en körtid som stöds av den drivrutinsreleasen. |
| SQL Server-kompatibel databas | Drivrutinsversionen stöder databasversionen och servern stöder alla önskade protokollfunktioner, såsom TDS 8.0. |
För nuvarande matriser, se SqlClient-drivrutinsstödets livscykel.
Versionsspecifika ändringar
Drivrutinssläpp kan lägga till API:er, flytta valfria beroenden och ändra säkra standardinställningar. Gå igenom ändringar innan varje mindre eller större uppdatering.
Exempel inkluderar:
- Version 4.0 ändrades
Encrypttill standard tilltrue. - Version 5.0 introducerade
SqlConnectionEncryptOptionochEncrypt=Strictför TDS 8.0. - Version 5.2 introducerade
SqlBatchpå moderna .NET-målplattformar som stöds. - Version 7.0 flyttade drivrutinstillhandahållen Microsoft Entra-autentisering till
Microsoft.Data.SqlClient.Extensions.Azure.
Se vad som är nytt i Microsoft. Data.SqlClient för länkar till releaseanteckningar och en uppdateringssammanfattning.
Relaterade namnrymder och paket
Vissa funktioner använder typer utanför huvudnamnrymden eller valfria paket.
| Namnrymd eller paket | Purpose |
|---|---|
Microsoft.Data.SqlClient.Server |
SQLClient-implementationer av SqlDataRecord och SqlMetaData. |
Microsoft.Data.SqlTypes |
SQLClient-specifika typer såsom SqlFileStream, SqlJson, och SqlVector<T>. |
Microsoft.Data.SqlClient.Diagnostics |
Starkt typade nyttolaster för diagnostikhändelser. |
Microsoft.Data.SqlClient.Extensions.Azure |
Drivrutinsbaserad Microsoft Entra-autentisering för version 7.0 och senare. |
Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider |
Azure Key Vault-integration för Always Encrypted. |
Dra inte slutsatser om paketkrav enbart från ett namnrymd. Följ artikeln om funktionen och informationen om NuGet-paketberoenden för den drivrutinsversion du använder.