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.
ODBC-illesztőprogram letöltése
Az ODBC az elsődleges natív adatelérési API az SQL Server C és C++ nyelven írt alkalmazásaihoz. A Microsoft ODBC Driver for SQL Server a következőkhöz kapcsolódik: SQL Serverhez, Azure SQL Database-hez, Azure SQL Managed Instance-hez, Azure Synapse Analyticshez és a Microsoft Fabricben lévő SQL-adatbázishoz. Az egyes illesztőprogramok által támogatott adatbázis-verziókról lásd: SQL verzió kompatibilitás.
Az ODBC-t használó egyéb nyelvek közé tartozik a COBOL, a Perl, a PHP és a Python. Az ODBC-t széles körben használják adatintegrációs helyzetekben, és a Microsoft Drivers for PHP for SQL Server ezen meghajtón alapul.
A sqlcmd és bcp segédprogramok ezzel az illesztőprogramdal dolgoznak, de külön telepítik: a mssql-tools18 csomagot Linuxon és macOS-en, a Microsoft Command Line Utilities pedig Windows-on. A sqlcmd segítségével Transact-SQL (T-SQL) utasításokat, rendszereljárásokat és szkriptfájlokat futtathatsz. Használd a bcp-t, hogy tömegesen másolj adatokat egy SQL Server példány és egy adatfájl között, mindkét irányban.
Válassza ki a kiindulási pontot
- A driver telepítéséhez menj a Rendszerkövetelmények, telepítés és illevezetőfájlok Windows részére, vagy Telepítsd az ODBC drivert Linuxon, telepítsd az ODBC drivert macOS-re, és telepítsd az unixODBC driver managert.
- Az első alkalmazás megírásához nyisd meg a Kapcsolódás adatbázishoz és annak lekérdezése C++ használatával, majd a DSN- és kapcsolatisztring-kulcsszavak és -attribútumok című témakört a kapcsolati sztring beállításaihoz. Ha a fordítód nem találja meg a fejléceket, vagy a build nem csatlakozik, menj a Develop C és C++ alkalmazások menübe az ODBC driverrel.
- Az Azure SQL-hez jelszó nélküli hitelesítéssel való csatlakozáshoz lásd: A Microsoft Entra ID használata az ODBC-illesztőprogrammal.
- Ha egy meglévő alkalmazást átmeneti hibákkal ellenállóvá szeretnék tenni, menj a Kapcsolati reziszliencia és a Magas elérhetőség és katasztrófa-helyreállítás kategóriába.
- A 17-es verzióból való frissítéshez menj a Fő verzióbeli különbségek és a Kapcsolat titkosítási hibaelhárítás oldalra.
- A kapcsolati vagy lekérdezési probléma diagnosztizálásához menj a Connection encryption troubleshooting és Known issues (Linux és macOS) részekhez.
Azure SQL üzemi alapkonfigurációja
Használja ezt a kódrészletet egy éles Azure SQL kapcsolat kiindulópontjaként. Betölti a szerver nevét és adatbázis nevét az alkalmazás konfigurációjából, menedzselt identitással autentikál, így nem jelenik meg titok a kapcsolati karakterlánc-ben, és lehetővé teszi a Tabular Data Stream (TDS) 8.0 titkosítást teljes tanúsítvány validációval. Kísérletenként bejelentkezési időkorlátot állít be, és újrapróbálja az átmeneti hibákat exponenciális visszalépéssel és jitterrel.
A cikkben szereplő C++-kódrészlet a rövidség kedvéért kihagyja az include-okat, a handle-ek lefoglalását és a naplózási segédfüggvényt.
std::wstring BuildConnectionString(const wchar_t* server, const wchar_t* database) {
std::wstring cs = L"Driver={ODBC Driver 18 for SQL Server}";
cs += L";Server=tcp:"; cs += server; cs += L",1433";
cs += L";Database="; cs += database;
cs += L";Authentication=ActiveDirectoryMsi"; // managed identity, no stored secret
cs += L";Encrypt=strict"; // TDS 8.0 with certificate validation
cs += L";ConnectRetryCount=3"; // idle connection resiliency, not initial connect
cs += L";ConnectRetryInterval=10";
return cs;
}
// Transient fault codes documented for Azure SQL, plus the resource governance
// codes. Network termination and timeout errors (64, 233, 258, 10053, 10054,
// 10060) are retried a bounded number of times, which is the documented
// guidance for them. 258 is the code the driver reports for a connect timeout.
// 10053 and 10054 can also mean the encryption handshake failed rather than a
// plain network reset, so read the error text before assuming a network fault.
bool IsTransient(SQLINTEGER nativeError) {
switch (nativeError) {
case 615: case 926: case 4060: case 4221:
case 10928: case 10929: case 10936:
case 40197: case 40501: case 40613:
case 42108: case 42109:
case 49918: case 49919: case 49920:
case 40020: case 40143: case 40166: case 40540: // failover subcodes
case 64: case 233: case 258:
case 10053: case 10054: case 10060:
return true;
default:
return false;
}
}
// Retries only errors that a new connection can clear, with exponential backoff
// plus jitter so that concurrent clients don't retry in lockstep.
SQLRETURN ConnectWithRetry(SQLHDBC hDbc, const std::wstring& connectionString, int maxAttempts) {
SQLRETURN rc = SQL_ERROR;
for (int attempt = 1; attempt <= maxAttempts; ++attempt) {
// Set the per-attempt connect timeout through the connection attribute.
// This works on every driver version, so the sample doesn't depend on
// which connection string keywords a given release accepts.
SQLSetConnectAttrW(hDbc, SQL_ATTR_LOGIN_TIMEOUT,
reinterpret_cast<SQLPOINTER>(static_cast<SQLLEN>(30)), 0);
rc = SQLDriverConnectW(hDbc, nullptr,
const_cast<SQLWCHAR*>(reinterpret_cast<const SQLWCHAR*>(connectionString.c_str())),
SQL_NTS, nullptr, 0, nullptr, SQL_DRIVER_NOPROMPT);
if (SQL_SUCCEEDED(rc)) {
Log("INFO", "connected on attempt %d/%d", attempt, maxAttempts);
return rc;
}
// Walks the diagnostic records and returns the first record that carries
// a real SQL Server error number. Microsoft Entra failures report several
// driver-specific records first, whose native error is 0.
SQLINTEGER native = LogDiagnostics(SQL_HANDLE_DBC, hDbc, "connect");
if (attempt == maxAttempts || !IsTransient(native)) return rc;
// Cap the backoff at 64 seconds. This also keeps the shift in range
// when a caller passes a large maxAttempts.
int shift = (attempt - 1 < 6) ? attempt - 1 : 6;
DWORD delayMs = (1UL << shift) * 1000UL + (DWORD)(GetTickCount64() % 500);
Log("WARN", "retrying in %lu ms (attempt %d/%d)", delayMs, attempt + 1, maxAttempts);
Sleep(delayMs);
}
return rc;
}
A ConnectRetryCount és a ConnectRetryInterval lehetővé teszi a inaktív kapcsolatokkal szembeni rugalmasságot, amely automatikusan helyreállítja az inaktivitás közben megszakadt kapcsolatot. Nem próbálják újra a kezdeti csatlakozást, ezért ez a snippet alkalmazásszintű újrapróbálást is végrehajt. Mindkettőt tartsd meg.
Az ODBC a diagnosztikai információkat a SQLGetDiagRec segítségével közli, nem csupán a visszatérési kódon keresztül, ezért újrapróbálkozás előtt osztályozza a hibákat. Egy hitelesítési vagy konfigurációs hiba azonnal meghibásodik, ahelyett, hogy az egész újrapróbálási költségvetést elhasználná.
A konfiguráció egyes részeivel kapcsolatos további információkért lásd:
- A DSN és a kapcsolatkarakterlánc kulcsszavai és attribútumai
- Használd a Microsoft Entra ID-t az ODBC driverrel
- Kapcsolat titkosítási hibakeresés
- Kapcsolat rugalmassága
- Magas rendelkezésre állás és vészhelyreállítás
Az Azure SQL átmeneti hibáinak katalógusát lásd: átmeneti hibák hibakódjai.
Legfontosabb funkciók
- Többplatformos: Ugyanaz az API Windows-on, Linuxon és macOS-en.
- Microsoft Entra ID hitelesítés: Jelszó nélküli kapcsolatok kezelt identitással, szolgáltatási alapvetővel, interaktív és integrált flow-okkal.
- Szigorú titkosítás: TDS 8.0 kapcsolatok teljes tanúsítvány ellenőrzéssel a 18-as verzióban és későbbi verziókban.
- Always Encrypted: Kliensoldali titkosítás érzékeny oszlopokhoz, egyedi kulcstároló szolgáltatók támogatásával.
- Kapcsolat-helyreállítás: Az inaktív állapotban megszakadt kapcsolat észrevétlen helyreállítása.
-
Magas elérhetőség: Elérhető csoporthallgatói támogatás .
MultiSubnetFailover - Adatosztályozás: Érzékenységi metaadatok osztályozott oszlopokhoz.
- Vektor adattípus: Natív támogatás a vektortípushoz .
- Elosztott tranzakciók: XA tranzakciós támogatás a Microsoft Distributed Transaction Coordinator (MSDTC) segítségével.
- Kísérő eszközök: sqlcmd és bcp, külön telepítve.
Első lépések
| Cikk | Description |
|---|---|
| ODBC-illesztőprogram letöltése az SQL Serverhez | Telepítő és csomagletöltések minden támogatott illezőprogram-verzióhoz, mindhárom platformon. |
| C és C++ alkalmazások fejlesztése az ODBC illezserrel | Melyik fejléceket kell beilleszteni, milyen sorrendben, mely könyvtárakat kapcsoljuk össze, és hogyan válasszunk aszinkron végrehajtás és szálak között. |
| Kapcsolódás adatbázishoz és annak lekérdezése C++ használatával | Egy teljes C++ minta, amely csatlakozik, lefuttat egy lekérdezést és olvas eredményeket, így végtől végig megerősítheted a beállításodat. |
| Támogatási életciklus | Mely illesztőprogram-verziók támogatottak még, és melyiknek mikor szűnik meg a támogatása. |
| Főbb verzióbeli különbségek | Mi törik meg, amikor a 17-es verzióról a 18-as verzióra váltasz, kezdve a titkosítás alapértelmezett változásával. |
Az illesztőprogram telepítése
| Cikk | Description |
|---|---|
| Rendszerkövetelmények, telepítés és illesztőprogramfájlok (Windows) | Támogatta a Windows verziókat, a telepítő parancssorát a néma telepítéshez, és ahol minden driver fájl a meghajtón lekerül. |
| Rendszerkövetelmények (Linux és macOS) | Melyik Linux disztribúciók és macOS kiadásai támogatják az egyes driver-verziókat, plusz az SQL Server verzió kompatibilitását. |
| Telepítsd az ODBC drivert Linuxon | A csomagkezelő lépései Alpine, Debian, Red Hat, SUSE, Ubuntu és Azure Linux esetén, valamint az offline telepítés és az illesztőprogram fájljainak helye. |
| Telepítsd az ODBC drivert macOS-re | Homebrew tap- és formula-lépések macOS-hez, beleértve a 18-as, 17-es vagy 13.1-es verzió telepítését. |
| Telepítsd az unixODBC illesztőprogramkezelőt (Linux és macOS) | Telepítsd vagy frissítsd az unixODBC-t, az illesztőprogramkezelőt, amely betölti az ODBC illezőprogramot Linuxon és macOS-en. |
Konfigurálás és csatlakoztatás
| Cikk | Description |
|---|---|
| A DSN és a kapcsolatkarakterlánc kulcsszavai és attribútumai | A kapcsolati karakterlánc kulcsszavak, DSN bejegyzések és SQLSetConnectAttr attribútumok teljes katalógusa, mindegyikhez elfogadott értékekkel. |
| Kapcsolati string kulcsszavak és adatforrásnevek (Linux és macOS) | Hogyan odbc.ini és odbcinst.ini definiáljuk a DSN-t Linuxon és macOS-en, valamint a TLS és TCP életben tartási beállításokat ezekre a platformokra. |
| ODBC adatforrás adminisztrátor DSN (Windows) | A Windows DSN-varázsló oldalain található összes beállítás arra az esetre, amikor egy adatforrást a felhasználói felületen keresztül konfigurálsz, nem pedig kapcsolati karakterlánccal. |
| Illesztőprogram-függő kapcsolatkészlet (Windows) | A kapcsolati karakterlánc mely kulcsszavai és attribútumai helyeznek egy kapcsolatot külön kapcsolatkészletbe, és melyek igényelnek egy további oda-vissza kérést a visszaállításhoz. |
Hitelesítés és biztonság
| Cikk | Description |
|---|---|
| Használd a Microsoft Entra ID-t az ODBC driverrel | Minden Authentication kulcsszóérték, a felügyelt identitástól és a szolgáltatásnévtől az interaktívig és az integráltig, a mindegyikhez szükséges beállításokkal együtt. |
| Az Always Encrypted használata az ODBC-illesztőprogrammal | Titkosítsuk az érzékeny oszlopokat a kliensfolyamatban úgy, hogy a tiszta szöveg soha ne jusson el a szerverhez, az illesztőprogram API összefoglalójával és annak dokumentált korlátaival. |
| Adatbesorolás | Olvassa el a szerver által a titkosított oszlopokhoz csatolt érzékenységi címkéket, hogy az alkalmazásod érvényesítse saját adatvédelmi szabályzatát. |
| Integrált hitelesítést használj (Linux és macOS) | Konfiguráld a Kerberost úgy, hogy egy Linux vagy macOS kliens Windows hitelesítő értékkel csatlakozhasson SQL Server bejelentkezés helyett. |
Magas rendelkezésre állás és rugalmasság
| Cikk | Description |
|---|---|
| Kapcsolat rugalmassága | Hogyan állítja helyre a ConnectRetryCount és a ConnectRetryInterval a kapcsolatot, amikor a szerver tétlen állapotban bontja azt, valamint milyen IMCxx hibákat ad vissza az illesztőprogram, amikor a helyreállítás nem lehetséges. |
| Magas rendelkezésre állás és vészhelyreállítás | Csatlakozz egy elérhető csoporthallgatón keresztül, és használd MultiSubnetFailover , hogy a failover ne akadjon meg egy alhálózati időkorlátnál. |
| Használj átlátszó hálózati IP felbontást | Hogyan rendezi a régi TransparentNetworkIPResolution tartalék több IP-cím közötti kapcsolódási kísérleteket, és miért MultiSubnetFailover váltja felül ezt. |
Adatkezelés
| Cikk | Description |
|---|---|
| Vektor adattípus | A vector típus csatolása, küldése és lekérése, beleértve annak natív C-beli reprezentációját és a tömeges másolás támogatását. |
| XA tranzakciók használata DTC-vel | Regisztrálja az SQL Server-t egy elosztott tranzakcióban a Microsoft Distributed Transaction Coordinator-on keresztül Windows-on, Linuxon vagy macOS-en. |
| Programozási irányelvek (Linux és macOS) | Melyik funkciókat támogatja a driver, Linuxon és macOS-en, amit nem, és hogyan különbözik a karakterkészlet és az OpenSSL kezelése a Windows-tól. |
Diagnosztizálás és hibaelhárítás
| Cikk | Description |
|---|---|
| Kapcsolat titkosítási hibakeresés | Javítsd ki a 18-as verzió által felbukkanó tanúsítvány- és titkosítási hibákat, mert alapértelmezés szerint titkosít. |
| Adathozzáférési követés (Linux és macOS) | Kapcsold be a driver trace-t, és rögzíts egy naplófájlt, amikor látod, milyen hívásokat hajt végre az alkalmazásod. |
| Ismert problémák (Linux és macOS) | Megerősített hibák és azok megoldásai. Mielőtt támogatási keresetet nyújtanál be, nézd meg ide. |
| Gyakran ismételt kérdések (Linux és macOS) | Rövid válaszok azokra a kérdésekre, amelyek leggyakrabban felmerülnek a driverrel kapcsolatban Linux és macOS rendszeren. |
Kiadási jegyzetek és hibajavítások
| Cikk | Description |
|---|---|
| Kiadási jegyzetek Windows-hoz | Új funkciók, viselkedésváltozások és javítások minden Windows illepőprogram-kiadásban. |
| Kiadási jegyzetek Linux és macOS számára | Új funkciók, viselkedésváltozások és javítások minden Linux és macOS illezőgép kiadásban. |
| Kiadási jegyzetek az SQL Server eszközökhöz | Változások a sqlcmd és bcp segédeszközökben, amelyek külön telepíthetők a drivertől Linuxon és macOS-en. |
Reference
| Cikk | Description |
|---|---|
| ODBC illesztőprogram Windows rendszerhez | Verzióról verzióra összefoglaló arról, mit támogat a meghajtó Windows-on, valamint a Windows-specifikus cikkek indexe. |
| Az ODBC illezser jellemzői a Windows-on | Melyik kiadás vezette be az egyes Windows funkciókat, valamint a hozzá tartozó viselkedésváltozásokat. |
Szolgáltatás igénylése
Funkció kéréséhez ötletet küldj be az SQL Server visszajelzésével.
Kapcsolódó tartalom
- ODBC programozói referencia: Az ODBC API specifikáció, amelyet ez az illesztőprogram valósít meg, és amelyet az illesztőprogramtól külön dokumentálnak.
- SQL Server Native Client funkciók: A meghajtó viselkedése csak a Native Client tartalomban dokumentált. Ezek a cikkek az ODBC Driver for SQL Server-re vonatkoznak, kivéve, ha leírják az OLE DB-t.
- bcp segédeszköz: A tömeges másolási segédeszköz, amelyet külön telepítenek az illesztőprogramtól.
- sqlcmd segédeszköz: A parancssoros lekérdezés segédeszköz, amely külön telepített a drivertől.
- Driver funkció támogató mátrix
- SQL Server-illesztőprogramok blogja