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
Ez a cikk azt ismerteti, hogyan hozhat létre kapcsolatot egy SQL Server-adatbázissal.
Kapcsolat tulajdonságai
Tekintse meg a DSN és a Linuxon és macOS-en támogatott kapcsolati sztring kulcsszavait és attribútumait.
Fontos
Ha adatbázis-tükrözést használó adatbázishoz csatlakozik (feladatátvételi partnerrel rendelkezik), ne adja meg az adatbázis nevét a kapcsolati sztringben. Ehelyett küldjön egy database_name parancsot az adatbázishoz való csatlakozáshoz a lekérdezések végrehajtása előtt.
Az illesztőprogram kulcsszónak átadott érték az alábbiak egyike lehet:
Az illesztőprogram telepítésekor használt név.
Az illesztőprogram-kódtár elérési útja, amely a sablonban .ini illesztőprogram telepítéséhez használt fájlban van megadva.
A DSN-k megadása nem kötelező. A DSN használatával definiálhat kapcsolati sztringszavakat egy DSN olyan név alatt, amelyet aztán hivatkozhat a kapcsolati sztringben. DSN létrehozásához hozza létre (ha szükséges) és szerkessze a ~/.odbc.ini fájlt (.odbc.ini a kezdőkönyvtárban) egy olyan felhasználói DSN-hez, amely csak az aktuális felhasználó számára érhető el, vagy /etc/odbc.ini egy rendszerszintű DSN-hez (rendszergazdai jogosultság szükséges.) A következő odbc.ini egy minta, amely a DSN minimálisan szükséges bejegyzéseit jeleníti meg:
# [DSN name]
[MSSQLTest]
Driver = ODBC Driver 18 for SQL Server
# Server = [protocol:]server[,port]
Server = tcp:localhost,1433
Encrypt = yes
#
# Note:
# Port isn't a valid keyword in the odbc.ini file
# for the Microsoft ODBC driver on Linux or macOS
#
Ha a fenti DSN használatával szeretne csatlakozni egy kapcsolati sztringben, a következő kulcsszót DSN kell megadnia: DSN=MSSQLTest;UID=my_username;PWD=<password>
A fenti kapcsolati sztring a következő kulcsszó nélküli DSN kapcsolati sztring megadásának felel meg: Driver=ODBC Driver 18 for SQL Server;Server=tcp:localhost,1433;Encrypt=yes;UID=my_username;PWD=<password>
Megadhatja a kiszolgálóhoz való csatlakozáshoz szükséges protokollt és portot. Például: Server=tcp:servername,12345. A Linux és a macOS illesztőprogramok tcpcsak a protokollt támogatják.
Ha statikus porton lévő elnevezett példányhoz szeretne csatlakozni, használja a Server=servername,port_number parancsot. A dinamikus porthoz való csatlakozás a 17.4-es verzió előtt nem támogatott.
Alternatív megoldásként hozzáadhatja a DSN-adatokat egy sablonfájlhoz, és végrehajthatja a következő parancsot, hogy hozzáadja a következőhöz ~/.odbc.ini :
odbcinst -i -s -f <template_file>
Az ini fájlok teljes dokumentációját a odbcinstunixODBC dokumentációjában találja. Az SQL Server ODBC-illesztőprogramjára vonatkozó fájl bejegyzéseit odbc.ini a Linuxon és macOS-en támogatottak DSN- és kapcsolati sztringszavai és attribútumai című témakörben találhatja meg.
Ellenőrizheti, hogy az illesztőprogram működik-e isql a kapcsolat tesztelésével, vagy használhatja ezt a parancsot:
bcp master.INFORMATION_SCHEMA.TABLES out OutFile.dat -S <server> -U <name> -P <password>
TLS/SSL használata
A Transport Layer Security (TLS), korábbi nevén Secure Sockets Layer (SSL) használatával titkosíthatja az SQL Server-kapcsolatokat. A TLS védi az SQL Server-felhasználóneveket és -jelszavakat a hálózaton keresztül. A TLS a kiszolgáló identitását is ellenőrzi a középen belüli (MITM) támadások elleni védelem érdekében.
A titkosítás engedélyezése növeli a biztonságot a teljesítmény rovására.
További információ: Az SQL Server-kapcsolatok titkosítása és a titkosítás érvényesítése nélküli használata.
A Titkosítás és a TrustServerCertificate beállításaitól függetlenül a kiszolgáló bejelentkezési hitelesítő adatai (felhasználónév és jelszó) mindig titkosítva vannak. Az alábbi táblázatok a Titkosítás és a TrustServerCertificate beállítások hatását mutatják be.
ODBC Driver 18 és újabb
| Titkosítási beállítás | Megbízhatósági kiszolgáló tanúsítványa | Kiszolgáló kényszerítő titkosítása | Result |
|---|---|---|---|
| Nem | Nem | Nem | A kiszolgálótanúsítvány nincs bejelölve. Az ügyfél és a kiszolgáló között küldött adatok nincsenek titkosítva. |
| Nem | Igen | Nem | A kiszolgálótanúsítvány nincs bejelölve. Az ügyfél és a kiszolgáló között küldött adatok nincsenek titkosítva. |
| Igen | Nem | Nem | A kiszolgálótanúsítvány be van jelölve. Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek. |
| Igen | Igen | Nem | A kiszolgálótanúsítvány nincs bejelölve. Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek. |
| Nem | Nem | Igen | A kiszolgálótanúsítvány be van jelölve. Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek. |
| Nem | Igen | Igen | A kiszolgálótanúsítvány nincs bejelölve. Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek. |
| Igen | Nem | Igen | A kiszolgálótanúsítvány be van jelölve. Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek. |
| Igen | Igen | Igen | A kiszolgálótanúsítvány nincs bejelölve. Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek. |
| Szigorú | - | - | A TrustServerCertificate figyelmen kívül lesz hagyva. A kiszolgálótanúsítvány be van jelölve. Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek. |
Megjegyzés:
Szigorú csak a TDS 8.0-kapcsolatokat támogató kiszolgálókon érhető el.
ODBC Driver 17 és újabb
| Titkosítási beállítás | Megbízhatósági kiszolgáló tanúsítványa | Kiszolgáló kényszerítő titkosítása | Result |
|---|---|---|---|
| Nem | Nem | Nem | A kiszolgálótanúsítvány nincs bejelölve. Az ügyfél és a kiszolgáló között küldött adatok nincsenek titkosítva. |
| Nem | Igen | Nem | A kiszolgálótanúsítvány nincs bejelölve. Az ügyfél és a kiszolgáló között küldött adatok nincsenek titkosítva. |
| Igen | Nem | Nem | A kiszolgálótanúsítvány be van jelölve. Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek. |
| Igen | Igen | Nem | A kiszolgálótanúsítvány nincs bejelölve. Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek. |
| Nem | Nem | Igen | A kiszolgálótanúsítvány nincs bejelölve. Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek. |
| Nem | Igen | Igen | A kiszolgálótanúsítvány nincs bejelölve. Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek. |
| Igen | Nem | Igen | A kiszolgálótanúsítvány be van jelölve. Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek. |
| Igen | Igen | Igen | A kiszolgálótanúsítvány nincs bejelölve. Az ügyfél és a kiszolgáló között küldött adatok titkosítva lesznek. |
Kapcsolattitkosítás használatakor az SQL Server TLS/SSL-tanúsítványban szereplő közönséges név (CN) vagy alternatív tárgy neve (SAN) pontosan meg kell egyeznie a kapcsolati sztringben megadott kiszolgálónévvel vagy IP-címmel. A HostnameInCertificate kulcsszó (v18.0+) a TLS/SSL-tanúsítványban szereplő neveknek megfelelő alternatív név megadására használható. A kulcsszó megadásakor az SQL Server TLS/SSL-tanúsítványának meg kell egyeznie vagy a kiszolgáló nevével, vagy a HostnameInCertificate.
Alapértelmezés szerint a titkosított kapcsolatok mindig ellenőrzik a kiszolgáló tanúsítványát. Ha azonban önaláírt tanúsítvánnyal rendelkező kiszolgálóhoz csatlakozik, és nem használ szigorú titkosítási módot, hozzáadhatja azt a TrustServerCertificate lehetőséget, hogy megkerülje a tanúsítvány megbízható hitelesítésszolgáltatók listájára való ellenőrzését:
Driver={ODBC Driver 18 for SQL Server};Server=ServerNameHere;Encrypt=YES;TrustServerCertificate=YES
Szigorú titkosítási módban a rendszer mindig ellenőrzi a tanúsítványt. A szabványos tanúsítványérvényesítés lehetőségeként a ServerCertificate kulcsszó (v18.1+) segítségével megadhatja egy tanúsítványfájl elérési útját, amely megfelel az SQL Server-tanúsítványnak. Ez a beállítás csak szigorú titkosítás esetén érhető el. Az elfogadott tanúsítványformátumok a PEM, a DER és a CER. Ha meg van adva, a rendszer ellenőrzi az SQL Server-tanúsítványt, és ellenőrzi, hogy a ServerCertificate megadott egyezés pontos-e.
A Linuxon és macOS-en futó TLS az OpenSSL-kódtárat használja. Az alábbi táblázat az OpenSSL minimálisan támogatott verzióit és az egyes platformok alapértelmezett tanúsítványmegbízhatósági tárolóhelyeit mutatja be:
| Plattform | Az OpenSSL minimális verziója | A tanúsítványmegbízhatósági tároló alapértelmezett helye |
|---|---|---|
| Debian 10, 11, 12 | 1.1.1 | /etc/ssl/certs |
| Debian 9 | 1.1.0 | /etc/ssl/certs |
| Debian 8.71 | 1.0.1 | /etc/ssl/certs |
| OS X 10.11, macOS | 1.0.2 | /usr/local/etc/openssl/certs |
| Red Hat Enterprise Linux 9 | 3.0.1 | /etc/pki/tls/cert.pem |
| Red Hat Enterprise Linux 8 | 1.1.1 | /etc/pki/tls/cert.pem |
| Red Hat Enterprise Linux 7 | 1.0.1 | /etc/pki/tls/cert.pem |
| Red Hat Enterprise Linux 6 | 1.0.0-10 | /etc/pki/tls/cert.pem |
| SUSE Linux Enterprise 15 | 1.1.0 | /etc/ssl/certs |
| SUSE Linux Enterprise 11, 12 | 1.0.1 | /etc/ssl/certs |
| Ubuntu 22.04, 23.04 | 3.0.2 | /etc/ssl/certs |
| Ubuntu 20.04 | 1.1.1 | /etc/ssl/certs |
| Ubuntu 18.04 | 1.1.0 | /etc/ssl/certs |
| Ubuntu 16.04 | 1.0.2 | /etc/ssl/certs |
| Ubuntu 14.04 | 1.0.1 | /etc/ssl/certs |
| Alpine 3.17, 3.18 | 3.0.1 | /etc/ssl/certs |
A kapcsolati sztringben a Encrypt opció megadásával is titkosítást beállíthat, ha az SQLDriverConnect használatával csatlakozik.
A TCP Keep-Alive beállításainak módosítása
Az ODBC Driver 17.4-től kezdődően az illesztőprogram milyen gyakran küldi el az életben maradó csomagokat, és küldi újra azokat, ha a válasz nem érkezik meg, konfigurálható.
A konfiguráláshoz adja hozzá a következő beállításokat az illesztőprogram szakaszához odbcinst.ini, és/vagy a DSN szakaszához odbc.ini. Ha DSN-hez csatlakozik, az illesztőprogram a DSN szakaszában megadott beállításokat fogja használni, ha van ilyen; ellenkező esetben, vagy ha csak kapcsolati sztringgel csatlakozik, akkor az illesztőprogram szakaszában odbcinst.initalálható beállításokat fogja használni. Ha a beállítás egyik helyen sem található, az illesztőprogram az alapértelmezett értéket használja.
Az ODBC Driver 17.8-tól kezdődően KeepAliveKeepAliveInterval a kapcsolati sztringben kulcsszavak is megadhatók.
KeepAlive=<integer>Azt szabályozza, hogy a TCP milyen gyakran kísérli meg ellenőrizni, hogy az inaktív kapcsolat még mindig érintetlen-e egy megtartott csomag küldésével. Az alapértelmezett érték 30 másodperc.KeepAliveInterval=<integer>meghatározza a keep-alive újraküldések közötti időközt, amíg a válasz meg nem érkezik. Az alapértelmezett érték 1 másodperc.