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.
ODBC är det primära interna dataåtkomst-API:et för program som skrivits i C och C++ för SQL Server. Microsoft ODBC Driver för SQL Server ansluter till SQL Server, Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics och SQL database i Microsoft Fabric. För de databasversioner som varje drivrutinsversion stödjer, se SQL-versionskompatibilitet.
Andra språk som kan använda ODBC är COBOL, Perl, PHP och Python. ODBC används i stor utsträckning i dataintegrationsscenarier, och Microsoft-drivrutinerna för PHP för SQL Server är byggda på denna drivrutin.
sqlcmd- och bcp-verktygen fungerar med denna drivrutin, men de installeras separat: paketet mssql-tools18 på Linux och macOS, samt Microsoft Command Line Utilities på Windows. Använd sqlcmd för att köra Transact-SQL (T-SQL)-satser, systemprocedurer och skriptfiler. Använd bcp för att bulkkopiera data mellan en instans av SQL Server och en datafil, i båda riktningarna.
Välj startpunkt
- För att installera drivrutinen, gå till Systemkrav, installation och drivrutinsfiler för Windows, eller installera ODBC-drivrutinen på Linux, installera ODBC-drivrutinen på macOS och installera unixODBC-drivrutinshanteraren.
- För att skriva din första applikation, gå till Connect to och sök i en databas med C++, sedan DSN och reťazec pripojenia-nyckelord och attribut för reťazec pripojenia-alternativen. Om din kompilator inte kan hitta headers eller om din build inte länkar, gå till Utveckla C- och C++-applikationer med ODBC-drivrutinen.
- För att ansluta till Azure SQL med lösenordslös autentisering, gå till Använd Microsoft Entra ID med ODBC-drivrutinen.
- För att göra en befintlig app motståndskraftig mot tillfälliga fel, gå till Anslutningsresiliens och hög tillgänglighet samt katastrofåterställning.
- För att uppgradera från version 17, gå till Stora versionsskillnader och Felsökning av anslutningskryptering.
- För att diagnostisera ett anslutnings- eller frågefel, gå till Felsökning av anslutningskryptering och Kända problem (Linux och macOS).
Produktionsbaslinje för Azure SQL
Använd det här kodfragmentet som utgångspunkt för en produktionsorienterad Azure SQL anslutning. Den laddar servernamnet och databasnamnet från applikationskonfigurationen, autentiserar med en hanterad identitet så att ingen hemlighet syns i reťazec pripojenia, och möjliggör Tabular Data Stream (TDS) 8.0-kryptering med fullständig certifikatvalidering. Den anger en inloggningstimeout för varje försök och försöker igen vid tillfälliga fel med exponentiell backoff och jitter.
C++-kodexemplet i den här artikeln utelämnar include-direktiv, allokering av handtag och loggningshjälpen av utrymmesskäl.
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;
}
ConnectRetryCount och ConnectRetryInterval aktivera vilolägesanslutningsresiliens, vilket transparent återställer en anslutning som tappats medan den var inaktiv. De gör inget nytt försök att ansluta initialt, därför innehåller det här kodexemplet även återförsökslogik på applikationsnivå. Behåll båda.
ODBC rapporterar diagnostik genom SQLGetDiagRec snarare än bara returkoden, så klassificera fel innan du försöker igen. Ett autentiserings- eller konfigurationsfel misslyckas sedan omedelbart istället för att förbruka hela återförsöksbudgeten.
Mer information om varje del av den här konfigurationen finns i:
- Nyckelord och attribut för DSN och anslutningssträngar
- Använd Microsoft Entra ID med ODBC-drivrutinen
- Felsökning av anslutningskryptering
- Anslutningsmotståndskraft
- Hög tillgänglighet och haveriberedskap
För katalogen över Azure SQL-tillfälliga fel, se tillfälliga felkoder.
Centrala egenskaper
- Plattformsoberoende: Samma API på Windows, Linux och macOS.
- Microsoft Entra ID-autentisering: Lösenordslösa anslutningar med hanterad identitet, tjänsteprincip, interaktiva och integrerade flöden.
- Strikt kryptering: TDS 8.0-anslutningar med full certifikatvalidering i version 18 och senare versioner.
- Alltid krypterat: Klientbaserad kryptering för känsliga kolumner, med stöd för anpassade nyckellagringsleverantörer.
- Anslutningsresiliens: Transparent återställning av en anslutning som tappats medan den var inaktiv.
-
Hög tillgänglighet: Stöd för lyssnare för tillgänglighetsgrupp med
MultiSubnetFailover. - Dataklassificering: Känslighetsmetadata för klassificerade kolumner.
- Vektordatatyp: Inbyggt stöd för vektortypen .
- Distribuerade transaktioner: XA-transaktionsstöd via Microsoft Distributed Transaction Coordinator (MSDTC).
- Följeslagarverktyg: sqlcmd och bcp, installerade separat.
Get started
| Article | Description |
|---|---|
| Ladda ned ODBC-drivrutinen för SQL Server | Installerare och paketnedladdningar för varje stödd drivrutinsversion, på alla tre plattformar. |
| Utveckla C- och C++-applikationer med ODBC-drivrutinen | Vilka headers som ska inkluderas, i vilken ordning, vilka bibliotek som ska länkas och hur man väljer mellan asynkron exekvering och trådar. |
| Anslut till och kör frågor mot en databas med C++ | Ett komplett C++-exempel som kopplar in, kör en fråga och läser resultat, så att du kan bekräfta din setup från början till slut. |
| Supportlivscykel | Vilka drivrutinsversioner som fortfarande stöds, och datumet då varje drivrutin lämnar stödet. |
| Större skillnader mellan olika versioner | Vad går sönder när du går från version 17 till version 18, med början i ändringen av standardinställningen för kryptering. |
Installera drivrutinen
| Article | Description |
|---|---|
| Systemkrav, installation och drivrutinsfiler (Windows) | Stödde Windows-versioner, installationskommandoraden för tyst distribution och var varje drivrutinsfil hamnar på disken. |
| Systemkrav (Linux och macOS) | Vilka Linux-distributioner och macOS-versioner varje drivrutinsversion stödjer, plus kompatibilitet med SQL Server-versionen. |
| Installera ODBC-drivrutinen på Linux | Steg för pakethanterare i Alpine, Debian, Red Hat, SUSE, Ubuntu och Azure Linux, samt offlineinstallation och drivrutinsfilernas placeringar. |
| Installera ODBC-drivrutinen på macOS | Homebrew-tryck och formelsteg för macOS, inklusive hur man installerar version 18, 17 eller 13.1. |
| Installera unixODBC-drivrutinshanteraren (Linux och macOS) | Installera eller uppgradera unixODBC, drivrutinshanteraren som laddar ODBC-drivrutinen på Linux och macOS. |
Konfigurera och ansluta
| Article | Description |
|---|---|
| Nyckelord och attribut för DSN och anslutningssträngar | Den fullständiga katalogen över reťazec pripojenia-nyckelord, DSN-poster och SQLSetConnectAttr attribut, med accepterade värden för varje. |
| Nyckelord för anslutningssträngar och namn på datakällor (Linux och macOS) | Hur odbc.ini och odbcinst.ini definierar en DSN på Linux och macOS, samt de TLS- och TCP-keepalive-inställningar som är specifika för dessa plattformar. |
| ODBC Data Source Administrator DSN (Windows) | Alla alternativ på Windows DSN-guidsidor, för när du konfigurerar en datakälla via UI:t istället för en reťazec pripojenia. |
| Drivrutinsbaserad anslutningspoolning (Windows) | Vilka nyckelord i anslutningssträngen och attribut gör att en anslutning hamnar i en egen pool, och vilka kräver en extra tur och retur för återställning? |
Autentisera och säkra
| Article | Description |
|---|---|
| Använd Microsoft Entra ID med ODBC-drivrutinen | Alla Authentication nyckelordsvärden, från hanterad identitet och tjänsthuvudnamn till interaktiv och integrerad, med den konfiguration som var och en kräver. |
| Använd Always Encrypted med ODBC-drivrutinen | Kryptera känsliga kolumner i klientprocessen så att klartext aldrig når servern, med drivrutinens API-sammanfattning och dess dokumenterade begränsningar. |
| Dataklassificering | Läs känslighetsetiketterna som servern fäster vid klassificerade kolumner, så att din applikation kan upprätthålla sin egen dataskyddspolicy. |
| Använd integrerad autentisering (Linux och macOS) | Konfigurera Kerberos så att en Linux- eller macOS-klient kan ansluta med Windows-uppgifter istället för en SQL Server-inloggning. |
Hög tillgänglighet och återhämtning
| Article | Description |
|---|---|
| Anslutningsmotståndskraft | Hur ConnectRetryCount och ConnectRetryInterval återställer en anslutning när servern kopplar ned den när den är inaktiv, och fel av typen IMCxx som drivrutinen returnerar när återställning inte är möjlig. |
| Hög tillgänglighet och haveriberedskap | Koppla upp dig via en tillgänglighetsgruppslyssnare och använd MultiSubnetFailover så att failover inte stannar vid en subnätstimeout. |
| Använd transparent nätverks-IP-upplösning | Hur den gamla TransparentNetworkIPResolution reservlösningen fördelar anslutningsförsök mellan flera IP-adresser och varför MultiSubnetFailover ersätter den. |
Arbeta med data
| Article | Description |
|---|---|
| Datatyp för vektor | Bind, skicka och hämta vektortypen , inklusive dess inbyggda C-representation och stöd för bulkkopiering. |
| Använd XA-transaktioner med DTC | Registrera SQL Server i en distribuerad transaktion via Microsoft Distributed Transaction Coordinator på Windows, Linux eller macOS. |
| Programmeringsriktlinjer (Linux och macOS) | Vilka funktioner drivrutinen har stöd för i Linux och macOS, vilka den inte har stöd för, och hur hanteringen av teckenuppsättningar och OpenSSL skiljer sig från Windows. |
Diagnostisera och felsöka
| Article | Description |
|---|---|
| Felsökning av anslutningskryptering | Åtgärda certifikat- och krypteringsfel som version 18 visar eftersom den krypterar som standard. |
| Dataåtkomstspårning (Linux och macOS) | Slå på förarspårning och samla in en loggfil när du behöver se vilka anrop din applikation faktiskt gör. |
| Kända problem (Linux och macOS) | Bekräftade defekter och deras lösningar. Kontrollera här innan du skickar in ett supportärende. |
| Vanliga frågor (Linux och macOS) | Korta svar på de frågor som oftast dyker upp om drivrutinen på Linux och macOS. |
Versionsanteckningar och buggfixar
| Article | Description |
|---|---|
| Versionsnoter för Windows | Nya funktioner, beteendeförändringar och fixar i varje Windows-drivrutinsrelease. |
| Versionsanteckningar för Linux och macOS | Nya funktioner, beteendeförändringar och fixar i varje Linux- och macOS-drivrutinsversion. |
| Versionsanteckningar för SQL Server-verktygen | Ändringar i sqlcmd- och bcp-verktygen , som installeras separat från drivrutinen på Linux och macOS. |
Reference
| Article | Description |
|---|---|
| ODBC-drivrutin på Windows | En versions-för-version sammanfattning av vad drivrutinen stödjer på Windows, samt ett index över Windows-specifika artiklar. |
| Funktioner i ODBC-drivrutinen på Windows | Vilken version introducerade varje Windows-funktion, plus de beteendeförändringar som följde med den. |
Begär en funktion
För att begära en funktion, skicka in en idé via SQL Server-feedback.
Relaterat innehåll
- ODBC Programmer's Reference: ODBC API-specifikationen som denna drivrutin implementerar, dokumenterad separat från drivrutinen.
- SQL Server Native Client-funktioner: Drivrutinsbeteende dokumenterat endast i innehållet i Native Client. Dessa artiklar gäller ODBC-drivrutinen för SQL Server, utom där de beskriver OLE DB.
- BCP-verktyg: Bulkkopieringsverktyget, installerat separat från drivrutinen.
- sqlcmd-verktyg: Kommandoradsfrågeverktyget, installerat separat från drivrutinen.
- Matris för drivrutinsfunktionsstöd
- blogg SQL Server-drivrutiner