ข้อความแสดงข้อผิดพลาดเมื่อคุณเรียกใช้รูทีนการ CLR หรือใช้แอสเซมบลีใน SQL Server: "แอสเซมบลีในโฮสต์ที่จัดเก็บได้ลายเซ็นแตกต่างจากแอสเซมบลีใน GAC (ยกเว้นจาก HRESULT: 0x80131050) "

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 949080 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

อาการ

พิจารณาสถานการณ์ต่อไปนี้

สถานการณ์สมมติที่ 1

คุณสามารถสร้างแบบทั่วไปภาษารันไทม์ (CLR) รูทีนที่อ้างอิง แอสเซมบลี Microsoft .NET Framework แอสเซมบลี.NET Framework มีไม่มีการระบุไว้ใน บทความ Knowledge Base 922672 จากนั้น คุณติดตั้งการ 3.5 Framework .NET หรือโปรแกรมแก้ไขด่วนที่ใช้.NET Framework 2.0

สถานการณ์สมมติ 2

คุณสร้างแอสเซมบลี และจากนั้น คุณลงทะเบียนแอสเซมบลีในฐานข้อมูล Microsoft SQL Server จากนั้น คุณติดตั้งแอสเซมบลีรุ่นอื่นในส่วนกลางแอสเซมบลีแคช (GAC)

เมื่อคุณเรียกใช้รูทีนการ CLR หรือใช้แอสเซมบลีจากอย่างใดอย่างหนึ่งในสถานการณ์เหล่านี้ใน SQL Server คุณได้รับข้อความแสดงข้อผิดพลาดที่คล้ายกับต่อไปนี้:

เซิร์ฟเวอร์: ข่าวสารเกี่ยวกับ 6522 ระดับ 16 สถานะ 2 บรรทัด 1
กรอบงาน.NET เกิดข้อผิดพลาดในระหว่างการดำเนินการของชุดคำสั่งของผู้ใช้กำหนดเองหรือการรวม 'getsid':

System.IO.FileLoadException: ไม่สามารถโหลดแฟ้มหรือแอสเซมบลี ' System.DirectoryServices เวอร์ชั่น = 2.0.0.0 วัฒนธรรม =เป็นกลาง PublicKeyToken = b03f5f7f11d50a3a' หรือการอ้างอิงอย่างใดอย่างหนึ่ง แอสเซมบลีในโฮสต์ ร้านค้ามีลายเซ็นแตกต่างจากแอสเซมบลีใน GAC (ยกเว้นจาก HRESULT: 0x80131050)

System.IO.FileLoadException:

สาเหตุ

เมื่อการ CLR โหลดแอสเซมบลี CLR ที่ตรวจสอบว่า แอสเซมบลีที่เหมือนกันอยู่ใน GAC ถ้า แอสเซมบลีที่เหมือนกันอยู่ใน GAC, CLR ตรวจสอบ ที่ โมดูลรุ่นรหัส (MVIDs) ของแอสเซมบลีเหล่านี้ตรงกัน ถ้า MVIDs เหล่านี้ แอสเซมบลีไม่ตรงกัน คุณได้รับข้อความแสดงข้อผิดพลาดข้อความที่จะ "อาการ" ส่วน mentions

เมื่อแอสเซมบลีเป็น recompiled, MVID ของการ การเปลี่ยนแปลงของแอสเซมบลี ดังนั้น ถ้าคุณปรับปรุง.NET Framework ในแอสเซมบลี.NET Framework มี MVIDs ที่แตกต่างกัน เนื่องจากมี recompiled แอสเซมบลีเหล่านั้น นอกจากนี้ ถ้า คุณปรับปรุงแอสเซมบลีของคุณเอง แอสเซมบลีนี้ recompiled ดังนั้น แอสเซมบลียังมีที่แตกต่างกัน MVID

การหลีกเลี่ยงปัญหา

วิธีแก้ปัญหา 1

เมื่อต้องแก้ไขสถานการณ์สมมติที่ 1 ในส่วน "อาการ" คุณต้องปรับปรุงในแอสเซมบลี.NET Framework ใน SQL Server ด้วยตนเอง เมื่อต้องการทำเช่นนี้ ให้ใช้คำสั่งแอสเซมบลีที่เปลี่ยนแปลงไป จุด เมื่อต้องการใหม่ รุ่นของแอสเซมบลี.NET Framework ใน โฟลเดอร์ต่อไปนี้:
%Windir%\Microsoft.NET\Framework\เวอร์ชั่น
หมายเหตุเวอร์ชั่น แทน รุ่นของ.NET Framework ที่คุณ การติดตั้ง หรือปรับปรุง

วิธีแก้ปัญหา 2

เมื่อต้องแก้ไขสถานการณ์สมมติ 2 นิ้ว "อาการ" ส่วน ใช้คำสั่งALTER แอสเซมบลีแอสเซมบลีในการปรับปรุง ฐานข้อมูล

ถ้าปัญหายังคงมีอยู่ หลังจากที่คุณทำเช่นนี้ ปล่อยแอสเซมบลีจากฐานข้อมูล และ ลงทะเบียน รุ่นใหม่ แอสเซมบลี ในฐานข้อมูล

สถานะ

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

ข้อมูลเพิ่มเติม

เราไม่แนะนำให้ คุณใช้แอสเซมบลี.NET Framework ที่มีไม่ได้ในบทความ Knowledge Base 922672 บทความ Knowledge Base 922672 รายการแอสเซมบลีที่จะถูกทดสอบในสภาพแวดล้อมที่โฮสต์-CLR ของเซิร์ฟเวอร์ SQL

สำหรับข้อมูลเพิ่มเติม คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
922672 สนับสนุนนโยบายสำหรับแอสเซมบลี.NET Framework untested ในสภาพแวดล้อมที่โฮสต์-CLR ของเซิร์ฟเวอร์ SQL

คำอธิบายของงานประจำ CLR

งานประจำ CLR รวม วัตถุต่อไปนี้ที่ถูกนำไปใช้ โดยใช้ SQL Server การรวมกับการ CLR Framework .NET:
  • ไลน์ลาร์ผู้ใช้กำหนดฟังก์ชัน (ลาร์ UDFs)
  • ค่าตารางผู้ใช้กำหนดฟังก์ชัน (TVFs)
  • ขั้นตอนที่มีการกำหนดโดยผู้ใช้ (UDPs)
  • กำหนดโดยผู้ใช้ทริกเกอร์
  • ชนิดข้อมูลที่ผู้ใช้กำหนดเอง
  • ผลที่ผู้ใช้กำหนดเอง

แอสเซมบลีในการปรับปรุงหลังจากที่คุณติดตั้งการ 3.5 Framework .NET

หลังจากที่คุณติดตั้งการ 3.5 Framework .NET คุณต้องใช้เปลี่ยน แอสเซมบลีใบแจ้งยอดการปรับปรุงแอสเซมบลีที่ต่อไปนี้:
  • Accessibility.dll
  • AspNetMMCExt.dll
  • Cscompmgd.dll
  • IEExecRemote.dll
  • IEHost.dll
  • IIEHost.dll
  • Microsoft.Build.Conversion.dll
  • Microsoft.Build.Engine.dll
  • Microsoft.Build.Framework.dll
  • Microsoft.Build.Tasks.dll
  • Microsoft.Build.Utilities.dll
  • Microsoft.CompactFramework.Build.Tasks.dll
  • Microsoft.JScript.dll
  • Microsoft.VisualBasic.Vsa.dll
  • Microsoft.Vsa.dll
  • Microsoft.Vsa.Vb.CodeDOMProcessor.dll
  • Microsoft_VsaVb.dll
  • Sysglobl.dll
  • System.Configuration.Install.dll
  • System.Design.dll
  • System.DirectoryServices.dll
  • System.DirectoryServices.Protocols.dll
  • System.Drawing.dll
  • System.Drawing.Design.dll
  • System.EnterpriseServices.dll
  • System.Management.dll
  • System.Messaging.dll
  • System.Runtime.Serialization.Formatters.Soap.dll
  • System.ServiceProcess.dll
  • System.Web.dll
  • System.Web.Mobile.dll
  • System.Web.RegularExpressions.dll
แอสเซมบลีเหล่านี้อยู่ในโฟลเดอร์ต่อไปนี้:
%Windir%\Microsoft.NET\Framework\v2.0.50727

วิธีการเก็บรักษาข้อมูลจากชนิดข้อมูลที่ผู้ใช้กำหนดเองหลังจากที่คุณลบแอสเซมบลี

ถ้าคุณปล่อยแอสเซมบลีที่ใช้ชนิดข้อมูลที่ผู้ใช้กำหนดเองจาก SQL Server คุณสามารถใช้หนึ่งในวิธีต่อไปนี้เมื่อต้องเก็บข้อมูล

สมมติว่า ต่อไปนี้เป็นสถานการณ์สมมติ:
  • คุณสร้างแอสเซมบลีที่มีชื่ออยู่ MyAssembly.dll
  • การอ้างอิงแอสเซมบลีMyAssemblyการ แอสเซมบลีSystem.DirectoryServices.dll
  • คุณมีชนิดข้อมูลที่ผู้ใช้กำหนดเองที่มีชื่ออยู่ MyDateTime
  • ชนิดข้อมูลMyDateTimeใช้MyAssembly.dll แอสเซมบลี
  • คุณสร้างตารางที่มีชื่อเป็น MyTable
  • ตาราง MyTable ประกอบด้วยข้อมูลของข้อมูลMyDateTime ชนิดนี้

วิธีที่ 1: ใช้โปรแกรมอรรถประโยชน์ bcp.exe

  1. ใช้โปรแกรมอรรถประโยชน์ Bcp.exe ร่วมกับสวิตช์–nการคัดลอก ข้อมูลจากตาราง MyTable ลงในแฟ้ม ตัวอย่าง ทำงาน คำสั่งต่อไปนี้ที่พร้อมท์คำสั่ง:
    bcp MyDatabase.dbo.MyTable out C:\MyFile.bcp -n –SSQLServerName  -T
  2. ใน SQL Server Studio จัดการ ให้ทำตามขั้นตอนเหล่านี้:
    1. ปล่อยตาราง MyTable
    2. ปล่อยชนิดข้อมูลMyDateTime
    3. ปล่อยSystem.DirectoryServices.dll แอสเซมบลี
    4. ปล่อยแอสเซมบลีMyAssembly
  3. ใน SQL Server Studio จัดการ ให้ทำตามขั้นตอนเหล่านี้:
    1. ลงทะเบียนSystem.DirectoryServices.dll แอสเซมบลี
    2. ลงทะเบียนแอสเซมบลีMyAssembly
    3. สร้างชนิดข้อมูลMyDateTime
    4. สร้างตารางใหม่ที่มีโครงสร้างตารางเดียวกันเป็น ตาราง MyTable
  4. ใช้โปรแกรมอรรถประโยชน์ Bcp.exe ร่วมกับสวิตช์–nไป นำเข้าข้อมูลจากแฟ้มลงในตาราง MyTable ตัวอย่าง ทำงาน คำสั่งต่อไปนี้ที่พร้อมท์คำสั่ง:
    bcp MyDatabase.dbo.MyTable in C:\MyFile.bcp -n –SSQLServerName  -T

วิธีที่ 2: ใช้การแทรก... คำสั่ง select

สมมติว่า ชนิดข้อมูลMyDateTimeกินพื้นที่ 9 ไบต์ในการเก็บข้อมูล
  1. ใน SQL Server Studio จัดการ สร้างตารางใหม่ที่ ประกอบด้วยคอลัมน์มีชนิดข้อมูลVARBINARY(9)โดยการเรียกใช้ต่อไปนี้ คำสั่ง:
    CREATE TABLE TempTable (c1 VARBINARY(9))
  2. การทำงานต่อไปนี้แทรก... เลือกคำสั่งเพื่อเติมข้อมูลนั้น ตาราง tempTable:
    INSERT INTO TempTable SELECT CAST(c1 as VARBINARY(9)) FROM MyTable
  3. ใน SQL Server Studio จัดการ ให้ทำตามขั้นตอนเหล่านี้:
    1. ปล่อยตาราง MyTable
    2. ปล่อยชนิดข้อมูลMyDateTime
    3. ปล่อยSystem.DirectoryServices.dll แอสเซมบลี
    4. ปล่อยแอสเซมบลีMyAssembly
  4. ใน SQL Server Studio จัดการ ให้ทำตามขั้นตอนเหล่านี้:
    1. ลงทะเบียนSystem.DirectoryServices.dll แอสเซมบลี
    2. ลงทะเบียนแอสเซมบลีMyAssembly
    3. สร้างชนิดข้อมูลMyDateTime
    4. สร้างตารางใหม่ที่มีโครงสร้างตารางเดียวกันเป็น ตาราง MyTable
  5. การทำงานต่อไปนี้แทรก... เลือกคำสั่งเพื่อเติมข้อมูลนั้น ตาราง MyTable:
    INSERT INTO MyTable SELECT c1 FROM TempTable

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรุ่นของแอสเซมบลี แวะไป ต่อไปนี้ของ Microsoft Developer Network (MSDN) เว็บไซต์:
.aspx http://msdn2.microsoft.com/en-us/library/51ket42z (VS.80)
สำหรับ ข้อมูลเพิ่มเติมเกี่ยวกับวิธีการปรับปรุงแอสเซมบลี แวะไปที่เว็บของ MSDN ต่อไปนี้ ไซต์:
http://msdn2.microsoft.com/en-us/library/ms186711.aspx
สำหรับ ข้อมูลเพิ่มเติมเกี่ยวกับวิธีการลบแอสเซมบลี แวะไปที่เว็บของ MSDN ต่อไปนี้ ไซต์:
http://msdn2.microsoft.com/en-us/library/ms177514.aspx
สำหรับ ข้อมูลเพิ่มเติมเกี่ยวกับวิธีการลงทะเบียนแอสเซมบลีในฐานข้อมูล SQL Server 2005 แวะไปที่ MSDN เว็บไซต์ต่อไปนี้:
http://msdn2.microsoft.com/en-us/library/ms189524.aspx
สำหรับ ข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมอรรถประโยชน์ Bcp.exe แวะไปที่ MSDN เว็บไซต์ต่อไปนี้:
http://msdn2.microsoft.com/en-us/library/ms162802.aspx

คุณสมบัติ

หมายเลขบทความ (Article ID): 949080 - รีวิวครั้งสุดท้าย: 7 มกราคม 2556 - Revision: 1.0
ใช้กับ
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
Keywords: 
kbexpertiseadvanced kbtshoot kbprb kbmt KB949080 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:949080

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com