Memperbarui Aplikasi dari klien asli SQL Server 2005

Berlaku untuk: SQL Server Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Unduh driver OLE DB

Artikel ini membahas perubahan mencolok pada Driver OLE DB untuk SQL Server sejak SQL Server Native Client pada SQL Server 2005 (9.x).

Saat Anda meningkatkan dari Microsoft Data Access Components (MDAC) ke Driver OLE DB untuk SQL Server, Anda mungkin juga melihat beberapa perbedaan perilaku. Untuk informasi selengkapnya, lihat Memperbarui Aplikasi ke Driver OLE DB untuk SQL Server dari MDAC.

SQL Server Native Client 9.0 dikirim dengan SQL Server 2005 (9.x). SQL Server Native Client 10.0 dikirim dengan SQL Server 2008 (10.0.x). SQL Server Native Client 10.5 dikirim dengan SQL Server 2008 R2 (10.50.x). SQL Server Native Client 11.0 dikirim dengan SQL Server 2012 (11.x) dan SQL Server 2014 (12.x).

Perubahan perilaku di Driver OLE DB untuk SQL Server dibandingkan dengan Klien Asli SQL Server 2005 (9.x) Deskripsi
Bantalan OLE DB hanya untuk skala yang ditentukan. Untuk konversi di mana data yang dikonversi dikirim ke server, Driver OLE DB untuk bantalan SQL Server berikutnya nol dalam data hanya hingga panjang maksimum nilai tanggalwaktu. SQL Server Native Client 9,0 dilapisi hingga 9 digit.
Validasi DBTYPE_DBTIMESTAMP untuk ICommandWithParameter::SetParameterInfo. Driver OLE DB untuk SQL Server menerapkan persyaratan OLE DB untuk bScale di ICommandWithParameter::SetParameterInfo untuk diatur ke presisi detik pecahan untuk DBTYPE_DBTIMESTAMP.
Prosedur tersimpan sp_columns sekarang mengembalikan "TIDAK" alih-alih "TIDAK" untuk kolom IS_NULLABLE. Di Driver OLE DB untuk SQL Server, prosedur tersimpan sp_columns sekarang mengembalikan "TIDAK" alih-alih "TIDAK" untuk kolom IS_NULLABLE.
Kesalahan berbeda dikembalikan ketika tanggal berada di luar rentang. Untuk jenis tanggalwaktu, nomor kesalahan yang berbeda akan dikembalikan oleh Driver OLE DB untuk SQL Server untuk tanggal di luar rentang daripada yang dikembalikan dalam versi sebelumnya.

Secara khusus, SQL Server Native Client 9.0 mengembalikan 22007 untuk semua nilai tahun di luar rentang dalam konversi string ke tanggalwaktu, dan Driver OLE DB untuk SQL Server mengembalikan 22008 ketika tanggal berada dalam rentang yang didukung oleh datetime2 tetapi di luar rentang yang didukung oleh tanggalwaktu atau smalldatetime.
nilai tanggalwaktu memotong detik pecahan dan tidak dibulatkan jika pembulatan akan mengubah hari. Sebelum SQL Server Native Client 10.0, perilaku klien untuk nilai tanggalwaktu yang dikirim ke server adalah membulatkannya ke 1/300 detik terdekat. Dalam Driver OLE DB untuk SQL Server, skenario ini menyebabkan pemotongan detik pecahan jika pembulatan berubah hari.
Kemungkinan pemotokan detik untuk nilai tanggalwaktu . Aplikasi yang dibangun dengan Driver OLE DB untuk SQL Server yang tersambung ke server SQL Server 2005 akan memotong detik dan detik pecahan untuk bagian waktu data yang dikirim ke server jika Anda mengikat ke kolom tanggalwaktu dengan pengidentifikasi jenis DBTYPE_DBTIMESTAMP (OLE DB) atau SQL_TIMESTAMP (ODBC) dan skala 0.

Contohnya:

Input data: 1994-08-21 21:21:36.000

Data yang disisipkan: 1994-08-21 21:21:00.000
Konversi data OLE DB dari DBTYPE_DBTIME ke DBTYPE_DATE tidak lagi dapat menyebabkan hari berubah. Sebelum SQL Server Native Client 10.0, jika bagian waktu dari DBTYPE_DATE dalam setengah detik tengah malam, kode konversi OLE DB menyebabkan hari berubah. Dalam Driver OLE DB untuk SQL Server, hari tidak akan berubah (detik pecahan dipotong dan tidak dibulatkan).
Perubahan konversi IBCPSession::BCColFmt. Di Driver OLE DB untuk SQL Server, saat Anda menggunakan IBCPSession::BCOColFmt untuk mengonversi SQLDATETIME atau SQLDATETIME ke jenis string, nilai pecahan diekspor. Misalnya, saat mengonversi jenis SQLDATETIME untuk mengetik SQLNVARCHARMAX, versi sebelum SQL Server Native Client 10.0 dikembalikan
1989-02-01 00:00:00.
Driver OLE DB untuk pengembalian SQL Server
1989-02-01 00:00:00.0000000.
Aplikasi kustom yang menggunakan API BCP sekarang dapat melihat peringatan. API BCP akan menghasilkan pesan peringatan jika panjang data lebih besar dari panjang yang ditentukan untuk bidang untuk semua jenis. Sebelumnya, peringatan ini hanya diberikan untuk jenis karakter, tetapi tidak akan dikeluarkan untuk semua jenis.
Menyisipkan string kosong ke dalam sql_variant terikat sebagai jenis tanggal/waktu menghasilkan kesalahan. Di SQL Server Native Client 9.0, memasukkan string kosong ke dalam sql_variant terikat sebagai jenis tanggal/waktu tidak menghasilkan kesalahan. Driver OLE DB untuk SQL Server menghasilkan kesalahan dengan benar dalam situasi ini.
SQL Server mungkin mengembalikan hasil yang berbeda saat pemicu berjalan. Perubahan yang diperkenalkan pada SQL Server 2008 (10.0.x) dapat menyebabkan aplikasi memiliki hasil yang berbeda yang dikembalikan dari pernyataan yang menyebabkan pemicu berjalan ketika NOCOUNT OFF berlaku. Dalam situasi ini, aplikasi Anda mungkin menghasilkan kesalahan. Untuk mengatasi kesalahan ini, atur NOCOUNT ON di pemicu.

Lihat juga

Menggunakan ADO dengan Driver OLE DB untuk SQL Server