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.
ADO.NET är dataåtkomstmodellen som är inbyggd i .NET. Microsoft. Data.SqlClient implementerar den modellen för SQL Server-kompatibla databaser och lägger till SQL Server-specifika funktioner.
Microsoft. Data.SqlClient-landningssidan tillhandahåller drivrutinskartan och produktionsbaslinjen. Den här artikeln förklarar hur drivrutinen passar in i ADO.NET.
ADO.NET-abstraktioner och SqlClient-typer
ADO.NET definierar leverantörsoberoende abstraktioner i System.Data.Common namnrymden. Microsoft. Data.SqlClient tillhandahåller konkreta implementationer.
| ADO.NET-abstraktion | SqlClient-typ | Purpose |
|---|---|---|
| DbConnection | SqlConnection | Öppnar en logisk anslutning till en databas. |
| DbCommand | SqlCommand | Exekverar 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 atomär transaktion. |
| DbDataAdapter | SqlDataAdapter | Fyller och uppdaterar frånkopplade DataSet och DataTable objekt. |
| DbBatch | SqlBatch | Skickar flera kommandon som en batch på stödda målramverk. |
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.
Ansluten dataåtkomst
Ansluten åtkomst håller en anslutning tillgänglig medan ett kommando körs och medan applikationen läser sina resultat.
En vanlig begäran följer denna sekvens:
- Skapa en
SqlConnectionfrån en anslutningssträng. - Öppna anslutningen.
- Skapa en
SqlCommandoch lägg tillSqlParametervärden. - Kör kommandot.
- Bearbeta ett skalärt värde, antal påverkade rader eller
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.
Att öppna och kassera en SqlConnection för varje arbetsenhet är det vanliga mönstret. Connection pooling återanvänder den underliggande fysiska kopplingen. Håll inte en global anslutning öppen under hela applikationens livstid.
Frånkopplad dataåtkomst
SqlDataAdapteröverför data mellan SQL Server och en minnesinbyggd DataSet eller DataTable. Applikationen kan stänga anslutningen medan den läser eller ändrar minnesdata, och sedan ansluta igen för att skicka uppdateringar.
Använd frånkopplad åtkomst när du behöver:
- Databindning till
DataSetellerDataTable. - Relationer och begränsningar i minnet.
- Offline-redigeringar som avstämms senare.
- Kompatibilitet med en befintlig applikation byggd kring DataAdapters.
För nya request-orienterade tjänster börjar du med SqlCommand och SqlDataReader om du inte behöver den frånkopplade objektmodellen.
SQL Server-specifika funktioner
Microsoft. Data.SqlClient lägger till API:er och anslutningsbeteende som inte ingår i det leverantörsoberoende ADO.NET-kontraktet:
- Microsoft Entra-autentisering och återanrop för åtkomsttoken.
- TDS 8.0 strikt kryptering och SQL Server-certifikatalternativ.
- Alltid krypterade och säkra enklaver.
-
SqlBulkCopyför högkapacitetsdataladdning. - Tabellvärdeparametrar.
- SQL Server-datatyper, inklusive JSON och vektortyper.
- Konfigurerbar omprövningslogik.
- SQL Server-diagnostik, statistik och räknare.
- Tillgänglighetsgrupp och failover-anslutningsalternativ.
Att använda dessa funktioner kopplar den koden till Microsoft. Data.SqlClient. Behåll leverantörsspecifik kod bakom en dataåtkomstgräns om resten av applikationen måste förbli leverantörsoberoende.
Objektets livslängd och samtidighet
Släng anslutningar, kommandon, läsare, transaktioner och masskopiera objekt snabbt. Använd await using med asynkron kod när en typ implementerar IAsyncDisposable.
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.
Paket och namnrymder
Installera NuGet-paketet Microsoft.Data.SqlClient och importera Microsoft.Data.SqlClient namnrymden. Drivrutinen levereras oberoende av .NET, så dess funktion, utgivnings- och supportscheman skiljer sig från .NET-runtimen.
System.Data.SqlClient är den äldre leverantören. Använd Microsoft. Data.SqlClient för ny utveckling. För en befintlig applikation, följ Migrate from System.Data.SqlClient to Microsoft. Data.SqlClient.