Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De Microsoft.Data.SqlClient naamruimte bevat de ondersteunde .NET-dataprovider voor SQL Server-compatibele databases. Het begon als een fork van System.Data.SqlClient en behoudt het vertrouwde ADONET-programmeermodel, terwijl nieuwe SQL Server-functies onafhankelijk van de .NET-runtime werden geleverd.
Gebruiken Microsoft.Data.SqlClient voor nieuwe ontwikkeling.
Installeer en importeer de naamruimte
Voeg het NuGet-pakket toe:
dotnet add package Microsoft.Data.SqlClient
Importeer de naamruimte:
using Microsoft.Data.SqlClient;
De meeste applicaties gebruiken SqlConnection, SqlCommand, SqlParameter, , SqlDataReaderen SqlTransaction. Raadpleeg de Microsoft.Data.SqlClient API-referentie voor de volledige openbare API.
Relatie tot ADO.NET
ADO.NET is het data-toegangsmodel dat is ingebouwd in .NET. Het definieert provider-onafhankelijke abstracties in de System.Data.Common naamruimte, en Microsoft. Data.SqlClient levert de concrete implementaties.
| ADO.NET-abstractie | SqlClient-type | Purpose |
|---|---|---|
| DbConnection | SqlConnection | Opent een logische verbinding naar één database. |
| DbCommand | SqlCommand | Voert Transact-SQL (T-SQL) tekst of een opgeslagen procedure uit. |
| DbParameter | SqlParameter | Stuurt een getypte waarde los van de commandotekst. |
| DbDataReader | SqlDataReader | Streamt resultaatrijen vanaf de server door. |
| DbTransaction | SqlTransaction | Groepeert commando's in één transactie die wordt vastgelegd of teruggedraaid als een eenheid. |
| DbDataAdapter | SqlDataAdapter | Vult niet-verbonden DataSet- en DataTable-objecten in en werkt deze bij. |
| DbBatch | SqlBatch | Stuurt meerdere commando's in één batch op ondersteunde doelframeworks. |
Microsoft. Data.SqlClient biedt ook SQL Server-specifieke API's zoals:
SqlBulkCopySqlConnectionStringBuilderSqlConfigurableRetryFactorySqlDependency- SQL Server-specifieke authenticatie, encryptie en ondersteuning voor gegevenstypen
Programmeer tegen de ADO.NET-abstracties wanneer een bibliotheek meerdere databaseproviders moet ondersteunen. Gebruik de SqlClient-typen wanneer een applicatie zich richt op SQL Server en provider-specifieke functies nodig heeft, zoals Microsoft Entra-authenticatie, Always Encrypted, bulkkopie, tabelwaardenparameters of configureerbare herkansingslogica. Houd provider-specifieke code achter een datatoegangsgrens als de rest van de applicatie provider-onafhankelijk moet blijven.
Toegang met en zonder verbinding
Connected access houdt een verbinding open terwijl een commando wordt uitgevoerd en terwijl de applicatie de resultaten leest. Een typisch verzoek volgt deze volgorde:
- Maak een
SqlConnectionaan van een verbindingsreeks en open die. - Maak een
SqlCommanden voeg waarden toe.SqlParameter - Voer de opdracht uit.
- Verwerk een scalaire waarde, een aantal beïnvloede rijen, of een
SqlDataReader. - Verwijder de lezer, commando en verbinding.
Gebruik verbonden toegang voor de meeste web-API's, diensten, werkprocessen en opdrachtregeltoepassingen.
SqlDataReader stroomt rijen en gebruikt meestal minder geheugen dan het laden van het gehele resultaat in een DataSet.
Losgekoppelde toegang wordt gebruikt SqlDataAdapter om gegevens te kopiëren naar een in-memory DataSet of DataTable. De applicatie kan de verbinding sluiten terwijl deze de gegevens in het geheugen leest of verandert, en vervolgens opnieuw verbinden om updates te verzenden. Gebruik het voor databinding, in-memory relaties en constraints, offline bewerkingen die je later synchroniseert met de gegevensbron, of een bestaande applicatie die is gebouwd rond DataAdapters. Voor nieuwe verzoekgerichte diensten begin met SqlCommand en SqlDataReader.
Objectlevensduur en gelijktijdigheid
Open en geef een SqlConnection vrij voor elke eenheid werk. Connection pooling hergebruikt de onderliggende fysieke verbinding, dus houd niet één globale verbinding open gedurende de levensduur van een applicatie. Verwijder verbindingen, commando's, lezers, transacties en kopieer objecten snel in bulk. In asynchrone code, gebruik await using voor types die IAsyncDisposable implementeren op het doelframework, zoals SqlConnection en SqlDataReader op .NET, en gewone using voor types die alleen IDisposable implementeren, zoals SqlBulkCopy.
SqlConnection, SqlCommand, SqlDataReader, en SqlTransaction ondersteunen geen gelijktijdig gebruik door meerdere threads. Geef elke gelijktijdige bewerking een eigen verbinding en vertrouw op verbindingspooling. Multiple Active Result Sets (MARS) staat meer dan één actieve resultaatset toe op een verbinding, maar maakt SqlClient-objecten niet thread-veilig.
Relatie tot System.Data.SqlClient
System.Data.SqlClientis de oudere provider die wordt geleverd met .NET Framework en eerdere .NET-releases.
Microsoft.Data.SqlClient Gebruikt veel van dezelfde typenamen, maar heeft verschillende pakketten, namespaces, standaardinstellingen, functies en ondersteuningsbeleid.
Verwijs niet naar beide aanbieders in de nieuwe applicatiecode. Types met dezelfde naam uit de twee pakketten zijn niet uitwisselbaar. Een System.Data.SqlClient.SqlConnection kan bijvoorbeeld niet worden doorgegeven waar een Microsoft.Data.SqlClient.SqlConnection vereist is.
Migratie begint meestal met het toevoegen van het Microsoft.Data.SqlClient pakket en het wijzigen van namespace-referenties, maar je moet ook de connectie-encryptie, parameters, configuratie, transitieve afhankelijkheden en runtime-gedrag bekijken. Gebruik Migreren van System.Data.SqlClient naar Microsoft.Data.SqlClient voordat je implementeert.
Versiecompatibiliteit
De driverpakketversie is onafhankelijk van de .NET-versie van de applicatie en de database-engineversie. Controleer alle drie:
| Onderdeel | Wat u moet controleren |
|---|---|
| Microsoft.Data.SqlClient | De release-lijn wordt ondersteund en bevat de functies die je applicatie gebruikt. |
| .NET of .NET Framework | De applicatie richt zich op een runtime die door die driverrelease wordt ondersteund. |
| SQL Server-compatibele database | De driverrelease ondersteunt de databaseversie en de server ondersteunt elke gevraagde protocolfunctie, zoals TDS 8.0. |
Voor huidige matrices, zie SqlClient driver support lifecycle.
Versiespecifieke wijzigingen
Driverreleases kunnen API's toevoegen, optionele afhankelijkheden verplaatsen en veilige standaardinstellingen wijzigen. Bekijk wijzigingen vóór elke kleine of grote update.
Enkele voorbeelden:
- Versie 4.0 veranderde
Encryptnaar standaard naartrue. - Versie 5.0 introduceerde
SqlConnectionEncryptOptionenEncrypt=Strictvoor TDS 8.0. - In versie 5.2 werd
SqlBatchgeïntroduceerd voor ondersteunde moderne .NET-doelplatforms. - Versie 7.0 verplaatste door de drivers geleverde Microsoft Entra-authenticatie naar
Microsoft.Data.SqlClient.Extensions.Azure.
Bekijk wat er nieuw is bij Microsoft. Data.SqlClient voor links naar release-notities en een upgrade-samenvatting.
Gerelateerde naamruimtes en pakketten
Sommige functies gebruiken types buiten de hoofdnaamruimte of optionele pakketten.
| Naamruimte of pakket | Purpose |
|---|---|
Microsoft.Data.SqlClient.Server |
SqlClient-implementaties van SqlDataRecord en SqlMetaData. |
Microsoft.Data.SqlTypes |
SQLClient-specifieke types zoals SqlFileStream, SqlJson, en SqlVector<T>. |
Microsoft.Data.SqlClient.Diagnostics |
Sterk getypeerde diagnostische gebeurtenisladingen. |
Microsoft.Data.SqlClient.Extensions.Azure |
Door de driver geleverde Microsoft Entra-authenticatie voor versie 7.0 en later. |
Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider |
Azure Key Vault-integratie voor Always Encrypted. |
Leid pakketvereisten niet alleen af uit een naamruimte. Raadpleeg het artikel over deze functie en de afhankelijkheidsinformatie van het NuGet-pakket voor de versie van het stuurprogramma die je gebruikt.