KB3197883 - แก้ไข: เอเจนต์สแนปช็อตล้มเหลวเมื่อคุณเผยแพร่ UDF ไปยัง SQL Server 2016 Distributor ในการจําลองแบบธุรกรรม

นำไปใช้กับ
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Service Pack 1

อาการ

สมมติว่าคุณมีการตั้งค่าที่ Microsoft SQL Server 2016 ทําหน้าที่เป็น Distributor และ SQL Server 2014 หรือ SQL Server 2012 ทําหน้าที่เป็น Publisher ในการตั้งค่านี้ ถ้าคุณสร้างสแนปช็อต หรือสิ่งพิมพ์ธุรกรรมหรือการผสานบน SQL Server 2012 หรือ SQL Server 2014 Publisher ด้วยฟังก์ชันที่ผู้ใช้กําหนดเอง (UDF) เป็นบทความ เอเจนต์สแนปช็อตจะล้มเหลวขณะเขียนสคริปต์ UDF และคุณได้รับข้อความแสดงข้อผิดพลาดที่คล้ายกับข้อความต่อไปนี้:

หมายเหตุ

สคริปต์สําหรับ UserDefinedFunction 'schema.functionname' ล้มเหลว

ข้อความแสดงข้อผิดพลาดต่อไปนี้สามารถมองเห็นได้จากประวัติงานของเอเจนต์สแนปช็อต:

หมายเหตุ

<DateTime> [5%] เอเจนต์การจําลองแบบพบข้อยกเว้น
<แหล่งที่มาของ DateTime> : ไม่ทราบ
<ชนิดข้อยกเว้น DateTime> : Microsoft.SqlServer.Management.Smo.FailedOperationException
<ข้อความข้อยกเว้น DateTime> : สคริปต์สําหรับ UserDefinedFunction 'schema.functionname' ล้มเหลว
<โค้ดข้อความ DateTime> : Not Applicable

สาเหตุ

ปัญหานี้เกิดขึ้นเนื่องจากเอเจนต์สแนปช็อตใช้ SMO Miscrosft.SqlServer.Smo.dll เพื่อสคริปต์บทความ SQL Server 2016 เพิ่มคุณสมบัติ SMO ใหม่ IsNativelyCompiled สําหรับฟังก์ชัน/กระบวนงานที่จัดเก็บไว้ของ In-Memory คุณสมบัตินี้ไม่ได้แสดงใน SQL Server ที่มีเวอร์ชันก่อนหน้า SQL Server 2016 เมื่อคุณเรียกใช้เอเจนต์สแนปช็อตบน Distributor for SQL Server 2016 จะใช้ Microsoft.SqlServer.Smo.dll ของ SQL Server 2016 แต่จะพยายามตรวจสอบคุณสมบัติ SMO IsNativelyCompiled กับ Publisher SQL Server 2012 หรือ 2014 และล้มเหลวด้วยข้อผิดพลาดข้างต้น

การแก้ปัญหา

ปัญหานี้ได้รับการแก้ไขในการอัปเดตแบบสะสมต่อไปนี้สําหรับ SQL Server:

การอัปเดตสะสม 2 สําหรับ SQL Server 2016 SP1

การอัปเดตสะสม 4 สําหรับ SQL Server 2016

เกี่ยวกับการอัปเดตสะสมสําหรับ SQL Server

การอัปเดตแบบสะสมใหม่แต่ละรายการสําหรับ SQL Server จะมีโปรแกรมแก้ไขด่วนและการแก้ไขข้อบกพร่องด้านความปลอดภัยทั้งหมดที่รวมอยู่ในการอัปเดตแบบสะสมครั้งก่อนหน้า ตรวจดูการอัปเดตแบบสะสมล่าสุดสําหรับ SQL Server:

การอัปเดตสะสมล่าสุดสําหรับ SQL Server 2016

วิธีแก้ไขปัญหาชั่วคราว

เมื่อต้องการแก้ไขปัญหานี้ ให้สร้างฟังก์ชันที่ผู้ใช้กําหนดเอง (UDF) บนผู้สมัครใช้งาน

สถานะ

Microsoft ได้ยืนยันว่านี่เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ที่แสดงไว้ในส่วน "นำไปใช้กับ"

การอ้างอิง

เรียนรู้เกี่ยวกับคำศัพท์ที่ Microsoft ใช้เพื่ออธิบายการอัปเดตซอฟต์แวร์