Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Microsoft. Data.SqlClient az új SQL Server funkciók támogatott szolgáltatója .NET alkalmazásokban. Megőrzi az ADO.NET programozási modellt, amelyet System.Data.SqlClienthasznál, de a csomagok, névterek, alapértelmezések és néhány nyilvános típus eltér.
Kezeld a migrációt szolgáltatói frissítésként, ne csak névtér cseréjének.
Az áttelepítés tervezése
A kód megváltoztatása előtt:
Jegyezze fel az alkalmazás által támogatott .NET,
System.Data.SqlClientSQL Server és Microsoft SQL szolgáltatások verzióit.Inventory hitelesítési módok, kapcsolati karakterlánc kulcsszavak, egyedi tanúsítványok, mindig titkosított szolgáltatók,
DbProviderFactorieskonfiguráció, SQL Server felhasználó által definiált típusok ésSystem.Data.SqlTypeshasználat.Futtasd le az alkalmazás aktuális tesztjeit, és mentsd el az alapvonalat a kapcsolat, lekérdezés, tranzakció, újrapróbálás és teljesítmény viselkedéséhez.
Közvetlen és tranzitív csomaghivatkozások keresése:
dotnet list package --include-transitive
Migráljon egyszerre egy alkalmazást vagy megosztott adathozzáférési könyvtárat. Ne adj át szolgáltató-specifikus objektumokat a kód között, amely még használ System.Data.SqlClient , és a kód között, amely használja Microsoft.Data.SqlClient.
Cseréld ki a csomagot
Távolítsd el az explicit System.Data.SqlClient csomaghivatkozást, ha ott van:
dotnet remove package System.Data.SqlClient
Adja hozzá a Microsoft.Data.SqlClient elemet:
dotnet add package Microsoft.Data.SqlClient
Ha a Microsoft. Data.SqlClient 7.0 vagy újabb verziók illesztőprogram-alapú Microsoft Entra hitelesítési módot használnak, akkor add hozzá a következőket:
dotnet add package Microsoft.Data.SqlClient.Extensions.Azure --version <same-version-as-Microsoft.Data.SqlClient>
A verzió és csomag kiválasztásáért lásd: Telepítés, frissítés és telepítés Microsoft. Data.SqlClient.
Névterek frissítése
Cseréld ki a fő szolgáltató névterét:
-using System.Data.SqlClient;
+using Microsoft.Data.SqlClient;
Frissítse a teljesen minősített neveket, aliasokat, generált kódot, függőségi injekciós regisztrációkat, tükröződési láncokat, konfigurációkat és tesztduplákat, amelyek a - System.Data.SqlClientre utalnak.
Ne cserélje le az általános System.Data vagy System.Data.Common névtereket.
Microsoft.Data.SqlClienttovábbra is ADO.NET típusokat használ, mint CommandTypepéldául , DbType, IsolationLevel, DataTable, DbConnection, , és DbCommand ezekből a névterekből.
Néhány SQL Server-specifikus típus más névtérekre költözikMicrosoft.Data:
| Típus | Korábbi névtér | Microsoft.Data.SqlClient névtér |
|---|---|---|
SqlDataRecord, SqlMetaData |
Microsoft.SqlServer.Server |
Microsoft.Data.SqlClient.Server |
SqlFileStream |
System.Data.SqlTypes |
Microsoft.Data.SqlTypes |
SqlNotificationRequest |
System.Data.Sql |
Microsoft.Data.Sql |
OperationAbortedException |
System.Data |
Microsoft.Data |
Microsoft.Data.SqlClient Az 5.0-ban és az újabb verzióban más SQL Server common language runtime (CLR) típusok megmaradnak Microsoft.SqlServer.Server. Frissítsen minden típust a fordítóhibák és a Microsoft.Data.SqlClient API-referencia alapján, a teljes névtér lecserélése helyett.
Frissítés a .NET Framework konfigurációját
Egy olyan alkalmazásnak, amely a DbProviderFactories használatával old fel szolgáltatókat, szolgáltatóregisztrációra lehet szüksége a App.config vagy a Web.config helyen:
<configuration>
<system.data>
<DbProviderFactories>
<add name="SqlClient Data Provider"
invariant="Microsoft.Data.SqlClient"
description=".NET data provider for SQL Server"
type="Microsoft.Data.SqlClient.SqlClientFactory, Microsoft.Data.SqlClient" />
</DbProviderFactories>
</system.data>
</configuration>
Frissítse a kódot, amely a szolgáltató invariáns nevét kéri:
DbProviderFactory factory =
DbProviderFactories.GetFactory("Microsoft.Data.SqlClient");
Ne add hozzá ezt a konfigurációt, amikor az alkalmazás közvetlenül létrehozza SqlConnection , és nem használja DbProviderFactories.
Titkosítás és tanúsítvány ellenőrzése felülvizsgálata
Microsoft. Data.SqlClient biztonságosabb alapértelmezéseket használ, mint a System.Data.SqlClient.
| Viselkedés | System.Data.SqlClient | Microsoft.Data.SqlClient |
|---|---|---|
| Alapértelmezett titkosítás | Encrypt=false |
Encrypt=true A 4.0-s verziótól kezdve |
| Kiszolgálótanúsítvány érvényesítése | Csak akkor érvényesíti a tanúsítványt, ha az ügyfél titkosítása engedélyezve van | A 2.0-s verziótól kezdve a tanúsítványt annak TrustServerCertificate megfelelően validálja, mikor kényszeríti a szerver a titkosítást, még akkor is, ha Encrypt=false |
| Szigorú titkosítás | Nem támogatott |
Encrypt=Strict a TDS 8.0-ra képes szerverek 5.0 verziójától kezdve |
SqlConnectionStringBuilder.Encrypt típus |
bool |
SqlConnectionEncryptOption az 5.0-s verziótól kezdve |
Ne állítsd Encrypt=false be vagy TrustServerCertificate=true általános migrációs megoldásként. Konfigurálj egy tanúsítványt, amelyben az ügyfél megbízik, és használj egy szervernevet, amely megfelel a tanúsítványnak. Csak olyan kontrollált fejlesztői környezetekben használjuk TrustServerCertificate=true , ahol az ellenőrzés nem lehetséges.
A SqlConnectionEncryptOption módosítása forrásszinten kompatibilis a gyakori értékadások esetén az implicit konverziók révén, de binárisan kompatibilitástörő változás. Fordíts újra minden olyan szerelvényt, amely hozzáfér a(z) SqlConnectionStringBuilder.Encrypt elemhez.
Részletekért lásd: Titkosítás és tanúsítvány validálás.
Kapcsolódási láncok felülvizsgálata
Microsoft. Data.SqlClient olyan kulcsszavakat és álneveket ad hozzá, amelyeket a System.Data.SqlClient nem ismer fel. Például olyan aliasokat fogad el, amelyeknek olyan terei vannak, mint Application Intent és Multi Subnet Failover.
Ne építs kapcsolati sztringet a(z) Microsoft.Data.SqlClient.SqlConnectionStringBuilder használatával, majd ne add át azt a(z) System.Data.SqlClient számára. Fokozatosan migráció során tartsd az egyes kapcsolati karakterlánc builder-eket a szolgáltatójával párosítva.
Vizsgáld át az autentikációt, titkosítást, újrapróbálást, failovert és tanúsítványkulcsszavakat a Connection string szintaxisának megfelelően.
Paraméter viselkedésének felülvizsgálata
A teszt dátuma és időpontja paraméterei egyértelműen:
| Paraméter | System.Data.SqlClient működése | A Microsoft.Data.SqlClient működése |
|---|---|---|
DbType.Time egy DateTime értékkel |
Elfogadja az értéket | Használj értéket TimeSpan |
DbType.Date egy DateTime értékkel |
Dátum- és időkomponenseket lehet küldeni | Lerövidíti az időkomponenseket |
Határozza meg a SqlDbType, hosszát, pontosságát és skáláját azoknál a paramétereknél, amelyeknél az SQL Server típuskövetkeztetése megváltoztathatja a lekérdezési terveket vagy a konverziós viselkedést. Ne használd AddWithValue migrációs gyorsbillentyűként, ha az adatbázis típusa ismert.
Ellenőrizd a tranzitív szolgáltatói hivatkozásokat
A közvetlen csomag eltávolítása nem garantálja, hogy ez System.Data.SqlClient eltűnt. Run:
dotnet list package --include-transitive
Ha mindkét szolgáltató marad:
- Azonosítsd azt a csomagot, amely bevonja a
System.Data.SqlClientelemet. - Frissítsd vagy cseréld ki ezt a függőséget, amikor lehet.
- Tartsd a szolgáltató-specifikus típusokat a függőségi határon belül, amikor mindkettőnek maradnia kell.
- Használj explicit névtéri aliazsokat csak ideiglenes segítségként. Ne adj át kapcsolatot, tranzakciót, paramétert vagy olvasót egyik szolgáltatótól a másikhoz.
Különös figyelmet fordítsanak az SQL Server CLR típusú könyvtárakra és a régebbi adathozzáférési keretrendszerekre, amelyek nyilvános API-jaikban tárják System.Data.SqlClient fel a típusokat.
A globalizáció működésének áttekintése
A .NET Framework és a .NET verziók a .NET 5 előtt a National Language Support (NLS) globalizációt használják a Windows-on. A jelenlegi .NET verziók alapértelmezés szerint az International Components for Unicode (ICU) rendszert használják Windows-on, Linuxon és macOS-en.
Ez a futási időbeli különbség megváltoztathatja néhány SqlString összehasonlítást. Az SQL Server NLS összehasonlító viselkedést használ. Ha az ügyféloldali SqlString összehasonlításoknak szerver viselkedésének kell illeszkednie, teszteljék az érintett értékeket, és vizsgálják át a globalizációt és az intenzív osztályt. Egy alkalmazás szükség esetén használhat NLS-t ICU helyett.
A Microsoft.Data.SqlClient nem támogatja a globalizációtól független módot.
Validáld a migrált alkalmazást
Építs és tesztelj minden támogatott célkeretrendszert és operációs rendszert.
Ellenőrzés:
- Csomag-visszaállítás és közzétételi kimenet.
- Az alkalmazás által használt SQL-hitelesítés, Windows-integrált hitelesítés és Microsoft Entra-hitelesítés.
- TLS-egyeztetés, tanúsítvány-ellenőrzés és kapcsolati karakterlánc elemzése.
- Kapcsolatkészlet és hozzáférési jogkivonat frissítése.
- Paramétertípusok, nullértékek, pontosság, méretarány, dátum és idő viselkedése.
- Tranzakciók, lemondás, időkorlátok, próbálkozások és újraindítások.
- Always Encrypted, SQL Server CLR típusok, tömeges másolat, lekérdezési értesítések és más, szolgáltató-specifikus funkciók, amelyeket az alkalmazás használ.
- Naplózás, számlálók, nyomkövetés és kivételkezelés.
Reprezentatív lekérdezéseket futtatni minden támogatott adatbázis-motor verzió ellen. Egy sikeres fordítás nem validálja a kapcsolatbiztonságot, a futási idejű függőségeket vagy az adatkonverziókat.