Làm thế nào để nâng cấp hoặc hạ cấp chi tiết có hội tham chiếu một đối tượng CLR trong phiên bản của SQL Server 2005


Lỗi #: 490 (SQL Hotfix)

Tóm tắt


Khi bạn cố gắng để nâng cấp hoặc hạ cấp chi tiết cho một đối tượng runtime (CLR) ngôn ngữ phổ biến trong phiên bản của Microsoft SQL Server 2005, bạn không thể thay đổi bản hội tham chiếu trong siêu dữ liệu của hội. Ngoài ra, nếu bạn sử dụng chi tiết mạnh mẽ tên đối tượng CLR, bạn không thể hạ cấp hội bằng cách sử dụng lệnh ALTER chi tiết.

GIỚI THIỆU


Bài viết này mô tả cách nâng cấp hoặc hạ cấp chi tiết có hội tham chiếu một đối tượng CLR trong phiên bản của SQL Server 2005.

Thông tin


Làm thế nào để nâng cấp hoặc hạ cấp chi tiết

Trong SQL Server 2005, bạn có thể sử dụng thay đổi chi tiết nâng cấp hoặc hạ cấp chi tiết riêng không được tạo ra với tên mạnh mẽ. Lấy tên mạnh mẽ, bạn có thể nâng cấp nhưng không thể hạ cấp hội bằng cách sử dụng lệnh ALTER chi tiết.

Bạn không thể nâng cấp hoặc hạ cấp chi tiết trong tình huống sau:
  • A được lập cho một đối tượng CLR Phiên bản. Chi tiết A có chi tiết tham khảo. Chi tiết tham chiếu là hội B.
  • Chi tiết B đã không chi tiết tham khảo.
  • Bạn biên dịch hội A để tham khảo các phiên bản khác nhau của hội B.
Trong trường hợp này, bạn có thể sử dụng thay đổi chi tiết nâng cấp chi tiết B lên phiên bản mới. Nếu hội B không chi tiết mạnh mẽ tên, bạn cũng có thể hạ cấp chi tiết B một phiên bản cũ. Tuy nhiên, bạn không thể sử dụng thay đổi chi tiết nâng cấp hoặc hạ cấp hội A bản dạo.

Hiện tượng này xảy ra vì SQL Server tạo một chính sách hợp CLR khi bạn tạo cấu A. Chính sách hợp CLR này tự động bản đồ bản hội B vào siêu dữ liệu hợp nhất để phiên bản thực hội B. SQL Server tải phiên bản mới của hội B lúc chạy khi bạn nâng cấp hoặc hạ cấp chi tiết B cho một số phiên bản khác. Hiện tượng này xảy ra ngay cả khi hội A là phiên bản gốc của hội sinh Tuy nhiên, khi bạn cố gắng để nâng cấp hoặc hạ cấp hội A khi hội A có phiên bản mới của hội B trong siêu dữ liệu, báo cáo chi tiết thay đổi sẽ thất bại và bạn nhận được thông báo lỗi giống như sau:
Thông báo lỗi 1
TB 6529, mức 16, trạng thái 1, dòng 1

Thay đổi hội thất bại vì danh tham chiếu hội 'RefAsm' đã thay đổi. Đảm bảo rằng phiên bản, tên và công cộng không thay đổi.
Thông báo lỗi 2
TB 6282, mức 16, trạng thái 1, dòng 1

Thay đổi chi tiết không thành công do hội tham chiếu sẽ thay đổi. Danh sách tham khảo chi tiết phải ở đó.

Nâng cấp hoặc hạ cấp hội

Lưu ý:
  • Các bước nâng cấp hoặc hạ cấp chi tiết một trong tình huống được mô tả trong phần "Làm thế nào để nâng cấp hoặc hạ cấp chi tiết".
  • Ví dụ này giả định rằng phiên bản hội hai là 1.0.0.0 và hội đều được viết bằng C#. Khi bạn làm theo các bước sau, bạn phải nâng cấp chi tiết A và hội B Phiên bản 2.0.0.0.
Nâng cấp hoặc hạ cấp chi tiết A, hãy làm theo các bước sau.
  1. Sao lưu Phiên bản 1.0.0.0 hội B vào một thư mục.
  2. Thay đổi và sau đó biên dịch hội B Phiên bản 2.0.0.0.
  3. Sử dụng lệnh ALTER chi tiết nâng cấp chi tiết B trong SQL Server 2005.
  4. Thay đổi và sau đó biên dịch hội A Phiên bản 2.0.0.0. Khi bạn thực hiện việc này, tham khảo phiên bản 1.0.0.0 hội B từ bản sao lưu mà bạn đã tạo ở bước 1. Để thực hiện việc này, sử dụng công cụ biên soạn Csc.exe cùng với chuyển đổi /reference . Ví dụ: sử dụng các lệnh sau:
    CSC /target:library/ra:AssemblyA.dll AssemblyA.cs AssemblyInfo.cs /reference: "BackupFolder\AssemblyB.dll"
    Lưu ý Để kiểm tra xem phiên bản chi tiết B trong siêu dữ liệu chi tiết A, mở hội A bằng cách sử dụng tiện ích Ildasm.exe. Sau đó, kiểm tra thông tin siêu dữ liệu cho hội tham chiếu trong phần khai báo .
  5. Sử dụng lệnh ALTER chi tiết nâng cấp chi tiết A trong SQL Server 2005.

Làm thế nào để hạ cấp chi tiết mạnh mẽ tên

Nếu bạn sử dụng chi tiết mạnh mẽ tên đối tượng CLR, SQL Server 2005 không hỗ trợ bằng cách sử dụng lệnh ALTER hội hạ cấp hệ thống. Nếu bạn cố gắng hạ cấp phiên bản chi tiết bằng cách sử dụng lệnh ALTER chi tiết, bạn nhận được thông báo lỗi tương tự như sau:
TB 6579, mức 16, trạng thái 1, dòng 1
Thay đổi chi tiết từ ' Asm1, phiên bản = 1.1.0.0, văn hóa = neutral, publickeytoken = 3a52b896cff0513d processorarchitecture = msil' để ' Asm1, phiên bản = 1.0.0.0, văn hóa = neutral, publickeytoken = 3a52b896cff0513d processorarchitecture = msil' không nâng cấp tương thích.
Khi bạn hạ cấp chi tiết mạnh mẽ tên, làm theo các bước sau:
  1. Bỏ tất cả các đối tượng phụ thuộc vào chi tiết.
  2. Thả các phiên bản mới hơn của hội.
  3. Tạo phiên bản cũ của hội.
  4. Tạo tất cả các đối tượng yêu cầu phụ thuộc vào chi tiết.
Lưu ý Bạn có thể nâng cấp chi tiết mạnh mẽ tên bằng cách sử dụng lệnh ALTER chi tiết. Tuy nhiên, nếu nâng cấp bao gồm một tham chiếu hội, bạn phải làm theo các bước tương tự được liệt kê trong phần "Nâng cấp hoặc hạ cấp chi tiết".

Tham khảo


Để biết thêm thông tin về báo cáo chi tiết thay đổi, ghé thăm Web site sau của Microsoft Developer Network (MSDN):Để biết thêm thông tin về Tiện ích Ildasm.exe, ghé thăm website sau của MSDN: