ข้ามไปที่เนื้อหาหลัก
การสนับสนุน
ลงชื่อเข้าใช้
ลงชื่อเข้าใช้ด้วย Microsoft
ลงชื่อเข้าใช้หรือสร้างบัญชี
สวัสดี
เลือกบัญชีอื่น
คุณมีหลายบัญชี
เลือกบัญชีที่คุณต้องการลงชื่อเข้าใช้

จุดบกพร่อง #: 490 (โปรแกรมแก้ไขด่วนของ SQL)

สรุป

เมื่อคุณพยายามปรับรุ่น หรือปรับลดรุ่นแอสเซมบลีสำหรับวัตถุรันไทม์ (CLR) ภาษาทั่วไปในอินสแตนซ์ของ Microsoft SQL Server 2005 คุณไม่สามารถเปลี่ยนรุ่นของแอสเซมบลีที่อ้างอิงในข้อมูลเมตาของแอสเซมบลี นอกจากนี้ ถ้าคุณใช้แอสเซมบลีที่มีชื่อที่คาดเดายากสำหรับวัตถุ CLR คุณไม่สามารถปรับลดรุ่นแอสเซมบลี โดยใช้คำสั่ง ALTER แอสเซมบลี

บทนำ

บทความนี้อธิบายวิธีการปรับรุ่น หรือปรับลดรุ่นแอสเซมบลีที่มีแอสเซมบลีที่อ้างอิงสำหรับวัตถุ CLR ในอินสแตนซ์ของ SQL Server 2005

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

วิธีการปรับรุ่น หรือปรับลดรุ่นแอสเซมบลี

ใน SQL Server 2005 คุณสามารถใช้คำสั่ง ALTER แอสเซมบลีการปรับรุ่น หรือปรับลดรุ่นแอสเซมบลีแบบสแตนด์อโลนที่ถูกสร้างขึ้น ด้วยชื่อที่คาดเดายาก สำหรับตัวอย่างแน่นหนาชื่อแอสเซมบลี คุณสามารถปรับรุ่น แต่ไม่สามารถปรับลดรุ่นแอสเซมบลี โดยใช้คำสั่ง ALTER แอสเซมบลี

คุณไม่สามารถปรับรุ่น หรือปรับลดรุ่นแอสเซมบลีในสถานการณ์จำลองต่อไปนี้:

  • แอสเซมบลี A ถูกสร้างขึ้นสำหรับวัตถุในอินสแตนซ์ CLR แอสเซมบลี A มีแอสเซมบลีที่อ้างอิง แอสเซมบลีที่อ้างอิงมีแอสเซมบลี B.

  • แอสเซมบลี B ได้ไม่มีแอสเซมบลีที่อ้างอิง

  • คุณคอมไพล์ใหม่แอสเซมบลี A ในการอ้างอิงแอสเซมบลี B. รุ่นอื่น

ในสถานการณ์สมมตินี้ คุณสามารถใช้คำสั่ง ALTER แอสเซมบลีเพื่ออัพเกรดแอสเซมบลี B เป็นเวอร์ชันใหม่ ถ้าแอสเซมบลี B ไม่ใช่แอสเซมบลีรัดกุมชื่อ คุณสามารถจะปรับลดรุ่นแอสเซมบลี B ไปเป็นรุ่นเก่า อย่างไรก็ตาม คุณไม่สามารถใช้คำสั่ง ALTER แอสเซมบลี การปรับรุ่น หรือปรับลดรุ่น A แอสเซมบลีเป็นรุ่น recompiled

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

ข้อความแสดงข้อผิดพลาด 1

6529 ระดับ 16 ข่าวสารเกี่ยวกับสถานะ 1 บรรทัด 1

เปลี่ยนแอสเซมบลีล้มเหลวเนื่องจากมีการเปลี่ยนแปลงข้อมูลเฉพาะตัวของแอสเซมบลีที่อ้างอิง 'RefAsm' ตรวจสอบให้แน่ใจว่า ได้เปลี่ยนเวอร์ชัน ชื่อ และคีย์สาธารณะ

ข้อความแสดงข้อผิดพลาด 2

6282 ระดับ 16 ข่าวสารเกี่ยวกับสถานะ 1 บรรทัด 1

เปลี่ยนแอสเซมบลีล้มเหลวเนื่องจากแอสเซมบลีที่อ้างอิงจะเปลี่ยนแปลง รายการแอสเซมบลีที่อ้างอิงต้องเหมือนเดิม

ปรับรุ่น หรือปรับลดรุ่นแอสเซมบลี

หมายเหตุ

  • ขั้นตอนเหล่านี้ปรับรุ่น หรือปรับลดรุ่น A แอสเซมบลีในสถานการณ์ที่อธิบายไว้ในส่วน "วิธีการปรับรุ่น หรือปรับลดรุ่นแอสเซมบลี"

  • ตัวอย่างนี้สมมติว่า รุ่นของแอสเซมบลีที่สองเป็นทั้ง 1.0.0.0 ถึงแอสเซมบลีของทั้งสองอย่างจะถูกเขียนใน C# เมื่อคุณทำตามขั้นตอนเหล่านี้ คุณพยายามปรับรุ่นแอสเซมบลี A และ B ของแอสเซมบลีรุ่น 2.0.0.0

เมื่อต้องการปรับรุ่น หรือปรับลดรุ่นแอสเซมบลี A ให้ทำตามขั้นตอนเหล่านี้

  1. สำรองรุ่น 1.0.0.0 แอสเซมบลี B ไปยังโฟลเดอร์

  2. ปรับเปลี่ยน และแอสเซมบลี B รุ่น 2.0.0.0 ที่คอมไพล์ใหม่แล้ว

  3. ใช้คำสั่ง ALTER แอสเซมบลีเพื่ออัพเกรดแอสเซมบลี B ใน SQL Server 2005

  4. ปรับเปลี่ยน และแอสเซมบลี A รุ่น 2.0.0.0 ที่คอมไพล์ใหม่แล้ว เมื่อคุณทำเช่นนี้ อ้างอิงรุ่น 1.0.0.0 B แอสเซมบลีจากสำเนาสำรองที่คุณทำไว้ในขั้นตอนที่ 1 เมื่อต้องการทำเช่นนี้ ใช้เครื่องมือของคอมไพเลอร์ Csc.exe ร่วมกับสวิตช์/reference ตัวอย่างเช่น ใช้คำสั่งต่อไปนี้:

    csc /target:library/ออก: .cs AssemblyA.dll ของAssemblyAAssemblyInfo.cs /reference: "BackupFolder\AssemblyB.dll"หมายเหตุ เมื่อต้องการตรวจสอบรุ่นของแอสเซมบลี B ในข้อมูลเมตาของแอสเซมบลี A เปิด A แอสเซมบลี โดยใช้โปรแกรมอรรถประโยชน์ Ildasm.exe นี้ แล้ว ตรวจสอบข้อมูลเมตาสำหรับแอสเซมบลีที่อ้างอิงภายใต้ส่วนของรายการ

  5. ใช้คำสั่ง ALTER แอสเซมบลีเพื่ออัพเกรด A แอสเซมบลีใน SQL Server 2005

วิธีการปรับลดรุ่นแอสเซมบลีที่มีชื่อที่คาดเดายาก

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

6579 ระดับ 16 ข่าวสารเกี่ยวกับสถานะ 1 บรรทัด 1
เปลี่ยนแอสเซมบลีจาก ' Asm1 รุ่น = 1.1.0.0 วัฒนธรรมกลาง publickeytoken = = 3a52b896cff0513d, processorarchitecture = msil' เพื่อ ' Asm1 รุ่น = 1.0.0.0 วัฒนธรรมกลาง publickeytoken = = 3a52b896cff0513d, processorarchitecture = msil' จะไม่ปรับปรุงความเข้ากัน

เมื่อคุณต้องการปรับลดรุ่นแอสเซมบลีที่มีชื่อที่คาดเดายาก ให้ทำตามขั้นตอนเหล่านี้:

  1. ปล่อยวัตถุทั้งหมดที่ขึ้นอยู่กับแอสเซมบลี

  2. ปล่อยรุ่นที่ใหม่กว่าของแอสเซมบลี

  3. สร้างรุ่นเก่าของแอสเซมบลี

  4. สร้างวัตถุที่จำเป็นทั้งหมดที่ขึ้นอยู่กับแอสเซมบลี

หมายเหตุ คุณสามารถปรับรุ่นแอสเซมบลีที่มีชื่อที่คาดเดายาก ด้วยการใช้คำสั่ง ALTER แอสเซมบลี อย่างไรก็ตาม ถ้าการอัพเกรดเกี่ยวข้องกับแอสเซมบลีที่อ้างอิง คุณต้องทำตามขั้นตอนเดียวกับที่แสดงไว้ในส่วน "การปรับรุ่นหรือการลดระดับการประกอบการผลิต"

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำสั่ง ALTER แอสเซมบลี แวะไปเว็บไซต์ Microsoft Developer Network (MSDN) ต่อไปนี้:

http://msdn2.microsoft.com/en-us/library/ms186711.aspxสำหรับข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมอรรถประโยชน์นี้ Ildasm.exe แวะไปเว็บไซต์ต่อไปนี้:

http://msdn2.microsoft.com/en-us/library/aa309387(VS.71).aspx

ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ

ชุมชนช่วยให้คุณถามและตอบคําถาม ให้คําติชม และรับฟังจากผู้เชี่ยวชาญที่มีความรู้มากมาย

ข้อมูลนี้เป็นประโยชน์หรือไม่

คุณพึงพอใจกับคุณภาพภาษาเพียงใด
สิ่งที่ส่งผลต่อประสบการณ์ใช้งานของคุณ
เมื่อกดส่ง คำติชมของคุณจะถูกใช้เพื่อปรับปรุงผลิตภัณฑ์และบริการของ Microsoft ผู้ดูแลระบบ IT ของคุณจะสามารถรวบรวมข้อมูลนี้ได้ นโยบายความเป็นส่วนตัว

ขอบคุณสำหรับคำติชมของคุณ!

×