Bagikan melalui


TDS 8.0

Berlaku untuk: SQL Server 2022 (16.x) dan versi yang lebih baru database Azure SQL DatabaseAzure SQL Managed InstanceSQL di Microsoft Fabric

SQL Server 2022 (16.x), Azure SQL Database, dan Azure SQL Managed Instance mendukung Tabular Data Stream (TDS) 8.0.

Protokol Aliran Data Tabular (TDS) adalah protokol lapisan aplikasi yang digunakan oleh klien untuk terhubung ke SQL Server. SQL Server menggunakan Keamanan Lapisan Transportasi (TLS) untuk mengenkripsi data yang dikirimkan di seluruh jaringan antara instans SQL Server dan aplikasi klien.

TDS adalah protokol aman, tetapi dalam versi SQL Server sebelumnya, enkripsi dapat dimatikan atau tidak diaktifkan. Untuk memenuhi standar enkripsi wajib saat menggunakan SQL Server, iterasi protokol TDS diperkenalkan: TDS 8.0.

Jabat tangan TLS sekarang mendahului pesan TDS apa pun, membungkus sesi TDS di TLS untuk memberlakukan enkripsi, menyelaraskan TDS 8.0 dengan HTTPS dan protokol web lainnya. Peningkatan ini secara signifikan berkontribusi pada pengelolaan lalu lintas TDS, karena appliance jaringan standar sekarang dapat memfilter dan melewati kueri SQL dengan aman.

Manfaat untuk TDS 8.0 dibandingkan dengan versi TDS sebelumnya adalah kompatibilitasnya dengan TLS 1.3, dan standar TLS yang akan datang. TDS 8.0 juga sepenuhnya kompatibel dengan TLS 1.2 dan versi TLS sebelumnya.

Cara kerja TDS

Protokol Aliran Data Tabular (TDS) adalah protokol tingkat aplikasi yang digunakan untuk transfer permintaan dan respons antara klien dan sistem server database. Sistem klien biasanya membuat koneksi berumur panjang dengan server. Setelah koneksi dibuat menggunakan protokol tingkat transportasi, pesan TDS ditukar untuk berkomunikasi antara klien dan SQL Server.

Selama masa pakai sesi TDS, ada tiga fase:

  • Inisialisasi
  • Autentikasi
  • Pertukaran data

Enkripsi dinegosiasikan selama fase awal, tetapi negosiasi TDS terjadi melalui koneksi yang tidak terenkripsi. Koneksi SQL Server terlihat seperti ini untuk versi sebelumnya ke TDS 8.0:

TCP jabat ➡️ tangan TDS prelogin (cleartext) dan respons (cleartext) ➡️ pertukaran data autentikasi jabat tangan ➡️ TLS (terenkripsi) ➡️ (dapat dienkripsi atau tidak terenkripsi)

Dengan pengenalan TDS 8.0, koneksi SQL Server adalah sebagai berikut:

TCP jabat tangan ➡️ ➡️ TLS pralogin TDS (terenkripsi) dan pertukaran data autentikasi respons (terenkripsi) ➡️ (terenkripsi) ➡️

Matriks kompatibilitas untuk opsi TDS, TLS, OS, dan enkripsi

Anda dapat mengaktifkan versi TLS 1.2 dan TLS 1.3 di tingkat OS, yang memungkinkan koneksi klien ke SQL Server menggunakan beberapa versi protokol TDS (TDS 7.x dan 8.0). Bergantung pada versi OS, TLS 1.2 dan TLS 1.3 mungkin diaktifkan secara default.

Hanya TDS 7.x yang mendukung komunikasi non-terenkripsi (opsional), TDS 8.0 tidak mendukung ini. TDS 7.x mendukung enkripsi menggunakan TLS hingga versi 1.2. TDS 8.0 memerlukan enkripsi - semuanya selalu dienkripsi dengan TDS 8.0 (Encrypt=Strict). TDS 8.0 tidak memiliki persyaratan versi TLS minimum dan mendukung TLS 1.3. Dukungan TLS 1.3 tergantung pada versi sistem operasi. Tabel berikut ini meringkas berbagai skenario dengan opsi enkripsi dan versi TLS dan TDS yang sesuai.

Mengenkripsi
opsi
Versi TLS diaktifkan Versi OS Diharapkan
connection
hasil
Catatan
Ketat Hanya TLS 1.3 (atau yang lebih baru) Windows 11

Windows Server 2022 dan yang lebih baru
Keberhasilan TLS 1.3 dinegosiasikan; TDS 8.0 dipicu (Encrypt=Strict)
Ketat TLS 1.2 dan TLS 1.3 Windows 11

Windows Server 2022 dan yang lebih baru
Keberhasilan TLS 1.3 dinegosiasikan; TDS 8.0 dipicu (Encrypt=Strict)
Ketat Hanya TLS 1.2 (atau yang lebih lama) Windows 11

Windows Server 2022 dan yang lebih baru
Keberhasilan TLS 1.2 dinegosiasikan; TDS 8.0 dipicu (Enkripsi=Ketat)
Ketat Hanya TLS 1.2 (atau yang lebih lama) Windows 10

Windows Server 2019 / 2016
Keberhasilan TLS 1.2 dinegosiasikan; TDS 8.0 dipicu (TLS 1.3 tidak tersedia)
Mandatory Hanya TLS 1.3 (atau yang lebih baru) Windows 11

Windows Server 2022 dan yang lebih baru
Failure Encrypt=Mandatory tidak kompatibel dengan TLS 1.3 untuk TDS 8.0
Mandatory TLS 1.2 dan TLS 1.3 Windows 11

Windows Server 2022 dan yang lebih baru
Keberhasilan TLS 1.2 dinegosiasikan; TDS 8.0 tidak dipicu (Encrypt=Mandatory)
Mandatory Hanya TLS 1.2 (atau yang lebih lama) Windows 11

Windows Server 2022 dan yang lebih baru
Keberhasilan TLS 1.2 dinegosiasikan; TDS 8.0 tidak dipicu (Encrypt=Mandatory)
Mandatory Hanya TLS 1.2 (atau yang lebih lama) Windows 10

Windows Server 2019 / 2016
Keberhasilan TLS 1.2 dinegosiasikan; TDS 8.0 tidak didukung pada OS ini (menggunakan TDS 7.x)
Fakultatif Hanya TLS 1.3 (atau yang lebih baru) Windows 11

Windows Server 2022 dan yang lebih baru
Failure Encrypt=Opsional (false) adalah TDS 7.x, yang tidak kompatibel dengan TLS 1.3.
Fakultatif TLS 1.2 dan TLS 1.3 Windows 11

Windows Server 2022 dan yang lebih baru
Keberhasilan TLS 1.3 dinegosiasikan; TDS 8.0 tidak dipicu (Enkripsi=Opsional)
Fakultatif Hanya TLS 1.2 (atau yang lebih lama) Windows 11

Windows Server 2022 dan yang lebih baru
Keberhasilan TLS 1.2 dinegosiasikan; TDS 8.0 tidak dipicu (Enkripsi=Opsional)
Fakultatif Hanya TLS 1.2 (atau yang lebih lama) Windows 10

Windows Server 2019 / 2016
Keberhasilan TLS 1.2 dirundingkan; enkripsi bersifat opsional; koneksi dapat berlanjut
berhasil tanpa enkripsi
Apa saja Hanya TLS 1.3 (atau yang lebih baru) Windows 10

Windows Server 2019 / 2016
Failure TLS 1.3 tidak didukung pada OS ini

Untuk informasi selengkapnya tentang cara klien menggunakan versi TDS yang berbeda, lihat bagian Penggunaan kata kunci di Bagian Perubahan pada properti enkripsi string koneksi .

Dukungan SQL Server 2025

SQL Server 2025 (17.x) memperkenalkan dukungan TDS 8.0 untuk alat baris perintah berikut dan fitur SQL Server:

1Dukungan TDS 8.0 memperkenalkan perubahan mendasar pada fitur-fitur ini.

Enkripsi koneksi yang ketat

Untuk menggunakan TDS 8.0, SQL Server 2022 (16.x) ditambahkan strict sebagai opsi enkripsi koneksi tambahan ke driver SQL Server (Encrypt=strict). Untuk menggunakan strict jenis enkripsi koneksi, unduh versi terbaru driver .NET, ODBC, OLE DB, JDBC, PHP, dan Python:

Untuk mencegah serangan man-in-the-middle dengan strict enkripsi koneksi, pengguna tidak dapat mengatur opsi TrustServerCertificate ke true dan mengizinkan sertifikat apa pun yang disediakan server. Sebagai gantinya HostNameInCertificate , pengguna akan menggunakan opsi untuk menentukan sertifikat ServerName yang harus dipercaya. Sertifikat yang disediakan oleh server harus melewati validasi sertifikat. Untuk informasi selengkapnya tentang validasi sertifikat, lihat Persyaratan sertifikat untuk SQL Server

Perubahan tambahan pada properti enkripsi string koneksi

Opsi berikut ditambahkan ke string koneksi untuk mengenkripsi komunikasi:

Kata kunci Bawaan Deskripsi
Encrypt salah Opsi string koneksi sebelumnya

Opsi yang valid adalah
- trueatau yes
- false, atau no.
Untuk informasi selengkapnya, lihat Sintaks String Koneksi. Ketika true, SQL Server menggunakan enkripsi TLS 1.2 untuk semua data yang dipertukarkan antara klien dan server jika server memiliki sertifikat yang diinstal.

Opsi string koneksi terbaru

Opsi yang valid adalah
- strict
- mandatory, atau true, atau yes
- optional, atau false, atau no.

Ketika diatur ke strict, SQL Server menggunakan TDS 8.0 untuk semua data yang dipertukarkan antara klien dan server.

Saat diatur ke mandatory, , trueatau yes, SQL Server menggunakan TDS 7.x dengan enkripsi TLS/SSL untuk semua data yang dikirim antara klien dan server jika server memiliki sertifikat yang diinstal.

Ketika diatur ke optional, false, atau no, koneksi menggunakan TDS 7.x dan akan dienkripsi hanya jika diperlukan oleh SQL Server.
TrustServerCertificate salah Opsi string koneksi sebelumnya

Ketika diatur ke true (tidak disarankan), driver tidak memvalidasi sertifikat TLS/SSL server. Jika true, sertifikat TLS/SSL server secara otomatis tepercaya (melewati validasi) saat lapisan komunikasi dienkripsi menggunakan TLS.

Jika false, driver memvalidasi sertifikat TLS/SSL server. Jika validasi sertifikat server gagal, driver akan menimbulkan kesalahan dan menutup koneksi. Nilai defaultnya adalah false. Pastikan nilai yang diteruskan agar serverName sama persis dengan Common Name (CN) nama atau DNS dalam Subject Alternate Name sertifikat server agar koneksi TLS/SSL berhasil.

Perubahan perilaku untuk Microsoft SQL Server ODBC Driver 18 dan yang lebih baru

Jika Encrypt diatur ke strict, pengaturan ini menentukan lokasi sertifikat yang akan digunakan untuk validasi sertifikat server (sama persis). Driver mendukung ekstensi file PEM, DER, dan CER.

Jika Encrypt diatur ke true atau false, dan TrustServerCertificate properti tidak ditentukan atau diatur ke null, , trueatau false, driver menggunakan ServerName nilai properti pada URL koneksi sebagai nama host untuk memvalidasi sertifikat SQL Server TLS/SSL.
HostNameInCertificate null Nama host yang akan digunakan dalam memvalidasi sertifikat SQL Server TLS/SSL. HostNameInCertificate Jika properti tidak ditentukan atau diatur ke null, driver menggunakan ServerName nilai properti sebagai nama host untuk memvalidasi sertifikat SQL Server TLS/SSL.