Microsoft. Data.SqlClient isim alanı ve uyumluluğu

İsim Microsoft.Data.SqlClient alanı, SQL Server uyumlu veritabanları için desteklenen .NET veri sağlayıcısını içerir. System.Data.SqlClient öğesinin bir çatallanması olarak başladı ve .NET çalışma zamanından bağımsız olarak yeni SQL Server özellikleri sunarken alışıldık ADO.NET programlama modelini korur.

Yeni geliştirme için kullanın Microsoft.Data.SqlClient .

Isim alanını kur ve içe aktarma

NuGet paketini ekleyin:

dotnet add package Microsoft.Data.SqlClient

İsim alanını içe aktarın:

using Microsoft.Data.SqlClient;

Çoğu uygulama , SqlCommand, SqlParameter, SqlDataReader, ve SqlTransaction. SqlConnectionkullanır. Tam açık yüzey için Microsoft. Data.SqlClient API referansına bakınız.

ADO.NET ile ilişkisi

ADO.NET, .NET'e entegre edilmiş veri erişim modelidir. Sağlayıcıdan bağımsız soyutlamaları System.Data.Common ad alanında tanımlar ve Microsoft.Data.SqlClient somut uygulamaları sağlar.

ADO.NET soyutlama SqlClient tipi Purpose
DbConnection SqlConnection Bir veritabanına mantıklı bir bağlantı açar.
DbCommand SqlCommand Transact-SQL (T-SQL) metni veya depolanmış bir prosedürü çalıştırır.
DbParameter SqlParameter Komut metninden ayrı olarak yazılmış bir değer gönderir.
DbDataReader SqlDataReader Sonuç satırlarını sunucudan akış halinde iletir.
DbTransaction SqlTransaction Komutları tek bir işlem içinde gruplar ve tek bir birim olarak commit edilir ya da geri alınır.
DbDataAdapter SqlDataAdapter Bağlantısı kesilmiş DataSet ve DataTable nesneleri doldurur ve günceller.
DbBatch SqlBatch Desteklenen hedef çerçevelerde birden fazla komutu tek bir toplu olarak gönderir.

Microsoft. Data.SqlClient ayrıca aşağıdaki gibi SQL Server'a özgü API'ler de sunar:

  • SqlBulkCopy
  • SqlConnectionStringBuilder
  • SqlConfigurableRetryFactory
  • SqlDependency
  • SQL Server'a özgü kimlik doğrulama, şifreleme ve veri tipi desteği

Bir kütüphane birden fazla veritabanı sağlayıcısını desteklemek zorunda olduğunda ADO.NET soyutlamalarına karşı programlama. Bir uygulama SQL Server'ı hedefliyorsa ve Microsoft Entra doğrulama, Always Encrypted, toplu kopyalama, tablo değerli parametreler veya yapılandırılabilir yeniden deneme mantığı gibi sağlayıcıya özgü özelliklere ihtiyaç duyduğunda SqlClient türlerini kullanın. Uygulamanın geri kalanı sağlayıcıdan bağımsız kalmak zorundasa, sağlayıcıya özgü kodu veri erişim sınırının arkasında tutun.

Bağlantılı ve çevrimdışı erişim

Bağlı erişim, bir komut çalışırken ve uygulama sonuçlarını okurken bağlantıyı açık tutar. Tipik bir istek bu diziyi takip eder:

  1. Bir bağlantı dizesinden SqlConnection oluşturun ve açın.
  2. Bir SqlCommand oluşturun ve SqlParameter değerleri ekleyin.
  3. komutunu yürütün.
  4. Bir skaler değeri, etkilenen satır sayısını veya bir SqlDataReader işleyin.
  5. Okuyucuyu, komutu ve bağlantıyı ortadan kaldırın.

Çoğu web API, servis, işçi ve komut satırı uygulaması için bağlı erişim kullanın. SqlDataReader Satır akışını yapar ve genellikle tüm sonucu bir DataSet'a yüklemekten daha az bellek kullanır.

Bağlantısız erişim, verileri bellek içi bir DataTable veya SqlDataAdapter içine kopyalamak için DataSet kullanır. Uygulama, bellek içindeki verileri okurken veya değiştirirken bağlantıyı kapatabilir, ardından güncellemeleri göndermek için yeniden bağlanabilir. Veri bağlama, bellek içi ilişkiler ve kısıtlamalar, daha sonra uzlaştıracağınız çevrimdışı düzenlemeler veya DataAdapters etrafında oluşturulmuş mevcut bir uygulama için kullanabilirsiniz. Yeni istek odaklı hizmetler için SqlDataReader ve SqlCommand ile başlayın.

Nesne ömrü ve eşzamanlılık

Her iş birimi için bir SqlConnection tane açın ve serbest bırakın. Bağlantı havuzu temel fiziksel bağlantıyı yeniden kullanır, bu yüzden bir uygulamanın ömrü boyunca tek bir küresel bağlantıyı açık tutmayın. Bağlantıları, komutları, okuyucuları, işlemleri ve toplu kopya nesnelerini hemen ortadan kaldırın. Asenkron kodda, hedef çerçevede IAsyncDisposable uygulayan türler için await using kullanın; .NET'te SqlConnection ve using gibi, ve yalnızca IDisposable uygulayan türler için, SqlBulkCopy gibi, normal SqlDataReader kullanın.

SqlConnection, SqlCommand, SqlDataReader, ve SqlTransaction birden fazla iş parçacığından eşzamanlı kullanımı desteklemiyor. Her eşzamanlı operasyona kendi bağlantısını verin ve bağlantı havuzuna güvenin. Birden fazla Aktif Sonuç Kümesi (MARS), bir bağlantıda birden fazla aktif sonuç setine izin verir, ancak SqlClient nesnelerini iş parçacığına güvenli hale getirmez.

System.Data.SqlClient ile ilişki

System.Data.SqlClient.NET Framework ve önceki .NET sürümleriyle birlikte gelen eski sağlayıcıdır. Microsoft.Data.SqlClient Birçok aynı tür ismini kullanır, ancak farklı paketler, isim alanları, varsayılanlar, özellikler ve destek politikaları vardır.

Yeni uygulama kodunda her iki sağlayıcıya da referans vermeyin. İki paketten aynı isimli türler birbirinin yerine geçemez. Örneğin, bir System.Data.SqlClient.SqlConnection, bir Microsoft.Data.SqlClient.SqlConnection gerektiğinde verilemez.

Göç genellikle paketi Microsoft.Data.SqlClient eklemek ve isim alanı referanslarını değiştirerek başlar, ancak bağlantı şifrelemesi, parametreler, yapılandırma, geçişli bağımlılıklar ve çalışma zamanı davranışını da gözden geçirmeniz gerekir. Dağıtımdan önce System.Data.SqlClient'tan Microsoft.Data.SqlClient'e Geçiş başlıklı yönergeleri izleyin.

Sürüm uyumluluğu

Sürücü paketi sürümü, uygulamanın .NET sürümü ve veritabanı motoru sürümünden bağımsızdır. Üçünü de kontrol edin:

Component Doğrulanması gerekenler
Microsoft.Data.SqlClient Sürüm serisi desteklenir ve uygulamanızın kullandığı özellikleri içerir.
.NET veya .NET Framework Uygulama, o sürücü sürümüyle desteklenen bir çalışma zamanını hedefliyor.
SQL Server uyumlu veritabanı Sürücü sürümü veritabanı sürümünü destekler ve sunucu ise TDS 8.0 gibi istenen protokol özelliklerini destekler.

Mevcut matrisler için SqlClient sürücü destek yaşam döngüsü bkz.

Sürüme özgü değişiklikler

Sürücü sürümleri API'ler ekleyebilir, isteğe bağlı bağımlılıkları taşıyabilir ve güvenli varsayılanları değiştirebilir. Her küçük veya büyük güncellemeden önce değişiklikleri gözden geçirin.

Örnekler şunları içerir:

  • Sürüm 4.0, Encrypt için varsayılanı true olarak değiştirdi.
  • Sürüm 5.0, TDS 8.0 için SqlConnectionEncryptOption ve Encrypt=Strict tanıttı.
  • 5.2 sürümü, desteklenen modern .NET hedeflerinde SqlBatch kullanıma sundu.
  • Sürüm 7.0, sürücü tarafından sağlanan Microsoft Entra kimlik doğrulamasını Microsoft.Data.SqlClient.Extensions.Azure içine taşıdı.

Sürüm notu bağlantıları ve yükseltme özeti için Microsoft.Data.SqlClient'teki yenilikler bölümüne bakın.

Bazı özellikler ana isim alanı dışındaki türler veya isteğe bağlı paketler kullanır.

İsim alanı veya paket Purpose
Microsoft.Data.SqlClient.Server SqlDataRecord ve SqlMetaData’in SqlClient uygulamaları.
Microsoft.Data.SqlTypes SqlClient'e özgü türler, örneğin SqlFileStream, SqlJson, ve SqlVector<T>.
Microsoft.Data.SqlClient.Diagnostics Kesin türlenmiş tanılama olay yükleri.
Microsoft.Data.SqlClient.Extensions.Azure Sürüm 7.0 ve üzeri için sürücü tarafından sağlanan Microsoft Entra kimlik doğrulaması.
Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider Always Encrypted için Azure Key Vault tümleştirmesi.

Paket gereksinimlerini sadece bir isim alanından çıkarmayın. Kullandığınız sürücü sürümü için özellik makalesini ve NuGet paket bağımlılık bilgilerini takip edin.