KB4046918 - PERBAIKAN: Eksekusi gagal ketika fungsi SQL CLR memanggil pernyataan Transact-SQL melalui panggilan peniruan di SQL Server 2016 dan 2017

Berlaku Untuk
SQL Server 2017 on Windows (all editions) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use)

Gejala

Pertimbangkan skenario berikut:

  • Anda memiliki fungsi SQL CLR di SQL Server 2016 dan 2017.
  • Fungsi CLR memanggil pernyataan Transact-SQL melalui panggilan peniruan, seperti dengan memanggil pernyataan EXECUTE AS.

Dalam skenario ini, eksekusi gagal, dan Anda akan menerima pesan kesalahan berikut:

Catatan

  • Msg 6522, Level 16, Status 1, Procedure PrcedureName, baris 0 [ Batch Start Line Number]
  • Terjadi kesalahan .NET Framework selama eksekusi rutinitas yang ditentukan pengguna atau agregat "ProcedureName":
  • System.Data.SqlClient.SqlException: Prinsipal server "LoginName" tidak dapat mengakses database "DatabaseName" dalam konteks keamanan saat ini.

Resolusi

Perbaikan ini disertakan dalam Pembaruan Kumulatif 1 untuk SQL Server 2017.

Informasi paket layanan untuk SQL Server 2016

Masalah ini telah diperbaiki dalam paket layanan berikut untuk SQL Server:

Paket Layanan 2 untuk SQL Server 2016

Tentang build SQL Server 2017

Setiap build baru untuk SQL Server 2017 berisi semua hotfix dan perbaikan keamanan yang ada di build sebelumnya. Kami menyarankan Anda menginstal build terbaru untuk SQL Server 2017.

Tentang paket layanan untuk SQL Server:

Paket layanan bersifat kumulatif. Setiap paket layanan baru berisi semua perbaikan yang ada dalam paket layanan sebelumnya, bersama dengan perbaikan baru apa pun. Rekomendasi kami adalah menerapkan paket layanan terbaru dan pembaruan kumulatif terbaru untuk paket layanan tersebut. Anda tidak perlu menginstal paket layanan sebelumnya sebelum menginstal paket layanan terbaru. Gunakan Tabel 1 dalam artikel berikut untuk menemukan informasi selengkapnya tentang paket layanan terbaru dan pembaruan kumulatif terbaru.

Cara menentukan versi, edisi, dan tingkat pembaruan SQL Server dan komponennya

Status

Microsoft telah mengonfirmasi bahwa ini adalah masalah dalam produk Microsoft sebagaimana tercantum di bagian "Berlaku untuk".

Referensi

Pelajari tentang terminologi yang digunakan Microsoft untuk menjelaskan pembaruan perangkat lunak.