Thông báo lỗi khi bạn thực hiện một thói quen CLR hoặc sử dụng một hội đồng trong SQL Server: "lắp ráp tại máy chủ lưu trữ có một chữ ký khác nhau hơn lắp ráp trong gấc. (Ngoại lệ từ HRESULT: 0x8013105...

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 949080
Triệu chứng
Xem xét kịch bản sau đây.

Kịch bản 1

Bạn tạo một thói quen thời gian chạy (CLR) ngôn ngữ phổ biến mà tài liệu tham khảo một lắp ráp Microsoft Khuôn khổ .NET. Khuôn khổ .NET hội chưa được ghi nhận trong Bài viết cơ sở kiến thức 922672. Sau đó, bạn cài đặt chuyên biệt các.NET Framework 3.5 hoặc một hotfix dựa trên NET Framework 2.0.

Kịch bản 2

Bạn tạo ra một hội đồng, và sau đó bạn kiểm nhập hội đồng trong một bộ máy cơ sở dữ liệu Microsoft SQL Server. Sau đó, bạn cài đặt chuyên biệt một phiên bản khác nhau của việc lắp ráp trong bộ nhớ Cache toàn cầu hội (GẤC).

Khi bạn thực hiện các thói quen CLR hoặc sử dụng lắp ráp từ một trong những tình huống trong SQL Server, bạn nhận được một thông báo lỗi tương tự với những điều sau đây:

Máy chủ: Msg 6522, mức 16, trạm đậu 2, dòng 1
NET Framework xuất hiện lỗi trong khi thực hiện các thói quen người dùng xác định hoặc tổng hợp 'getsid':

System.IO.FileLoadException: Không thể tải tập tin hoặc lắp ráp ' System.DirectoryServices, phiên bản = 2.0.0.0, văn hóa = Trung lập, PublicKeyToken = b03f5f7f11d50a3a' hoặc một trong các phụ thuộc của nó. Lắp ráp trong máy chủ cửa hàng này có một chữ ký khác nhau hơn lắp ráp trong gấc. (Ngoại lệ từ HRESULT: 0x80131050)

System.IO.FileLoadException:
Nguyên nhân
Khi CLR tải lắp ráp một, CLR xác minh rằng Hội đồng tương tự là gấc. Nếu Hội đồng tương tự là gấc, xác minh CLR mà ID phiên bản mô-đun (Bach) của các hội đồng phù hợp. Nếu Bach các Hội đồng không phù hợp với, bạn nhận được lỗi thông điệp rằng các "Triệu chứng" phần đề cập đến.

Khi một hội đồng biên, MVID của các thay đổi lắp ráp. Vì vậy, nếu bạn Cập Nhật Khuôn khổ .NET, hội Khuôn khổ .NET có khác nhau Bach bởi vì những hội đồng biên. Ngoài ra, Nếu bạn cập nhật của riêng bạn lắp ráp, lắp ráp biên. Vì vậy, hội đồng cũng có một khác nhau MVID.
Cách giải quyết khác

Giải pháp 1

Để khắc phục tình huống 1 trong phần "Triệu chứng", bạn phải cập nhật thủ công hội Net Framework trong SQL Server. Để thực hiện việc này, sử dụng các báo cáo Thay đổi lắp ráp để điểm để mới Phiên bản của hội Net Framework trong mục tin thư thoại sau đây:
%Windir%\Microsoft.NET\Framework\Phiên bản
Lưu ýPhiên bản đại diện cho các Phiên bản của Khuôn khổ .NET mà bạn cài đặt chuyên biệt hoặc Cập Nhật.

Giải pháp 2

Để khắc phục tình huống 2 in "Triệu chứng" phần, sử dụng các báo cáo Thay đổi lắp ráp Cập Nhật lắp ráp tại bộ máy cơ sở dữ liệu.

Nếu vấn đề vẫn còn tồn tại sau khi bạn làm điều này, thả lắp ráp từ bộ máy cơ sở dữ liệu, và sau đó kiểm nhập các Các phiên bản mới của lắp ráp trong bộ máy cơ sở dữ liệu.
Tình trạng
Microsoft đã xác nhận rằng đây là một vấn đề trong sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".
Thông tin thêm
Chúng tôi không khuyên bạn nên sử dụng Khuôn khổ .NET hội mà chưa được ghi nhận trong bài viết cơ sở kiến thức 922672. Bài viết cơ sở kiến thức 922672 danh sách các hội đồng khác nhau đã được thử nghiệm trong môi trường lưu trữ ứng dụng SQL Server CLR.

Để biết thêm chi tiết, nhấp vào số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
922672 Hỗ trợ chính sách chưa được kiểm tra Khuôn khổ .NET hội đồng trong môi trường lưu trữ ứng dụng SQL Server CLR

Mô tả về thói quen CLR

Thói quen CLR bao gồm các đối tượng sau đây được thực hiện bằng cách sử dụng SQL Server các tích hợp với Khuôn khổ .NET CLR:
  • Vô hướng người dùng định nghĩa hàm (vô hướng UDFs)
  • Bảng người dùng định nghĩa hàm (TVFs)
  • Người dùng xác định quy trình (UDPs)
  • Người dùng xác định gây nên
  • Loại dữ liệu người dùng định nghĩa
  • Tập hợp người dùng định nghĩa

Hội đồng Cập Nhật sau khi bạn cài đặt chuyên biệt các.NET Framework 3.5

Sau khi bạn cài đặt chuyên biệt các.NET Framework 3.5, bạn phải sử dụng thay đổi Lắp ráp các tuyên bố để cập nhật các hội đồng sau đây:
  • 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
Các hội đồng khác nhau nằm trong mục tin thư thoại sau đây:
%Windir%\Microsoft.NET\Framework\v2.0.50727

Làm thế nào để giữ lại dữ liệu từ các loại dữ liệu người dùng xác định sau khi bạn thả một hội đồng

Nếu bạn thả một hội đồng sử dụng một loại xác định người sử dụng dữ liệu từ máy chủ SQL, bạn có thể sử dụng một trong những phương pháp sau để bảo vệ dữ liệu.

Giả sử rằng sau đây là kịch bản:
  • Bạn tạo một hội có tên là MyAssembly.dll.
  • Tài liệu tham khảo lắp ráp MyAssembly các Lắp ráp System.DirectoryServices.dll .
  • Bạn có một loại dữ liệu người dùng xác định có tên là MyDateTime.
  • Sử dụng các loại dữ liệu MyDateTimeMyAssembly.dll lắp ráp.
  • Bạn tạo một bảng có tên là MyTable.
  • Bảng MyTable chứa dữ liệu dữ liệu MyDateTime loại.

Phương pháp 1: Sử dụng tiện ích bcp.exe

  1. Sử dụng các tiện ích Bcp.exe cùng với việc chuyển đổi –n để sao chép Các dữ liệu từ bảng MyTable vào một tập tin. Ví dụ, chạy các lệnh sau tại dấu kiểm nhắc lệnh:
    bcp MyDatabase.dbo.MyTable out C:\MyFile.bcp -n –SSQLServerName  -T
  2. Ở SQL Server Management Studio, hãy thực hiện theo các bước sau:
    1. Thả bảng MyTable.
    2. Thả các loại dữ liệu MyDateTime .
    3. Thả System.DirectoryServices.dll lắp ráp.
    4. Thả hội MyAssembly .
  3. Ở SQL Server Management Studio, hãy thực hiện theo các bước sau:
    1. kiểm nhập System.DirectoryServices.dll lắp ráp.
    2. kiểm nhập hội đồng MyAssembly .
    3. Tạo kiểu dữ liệu MyDateTime .
    4. Tạo ra một bảng mới có cùng cấu trúc bảng như bảng MyTable.
  4. Sử dụng tiện ích Bcp.exe cùng với việc –n chuyển sang nhập dữ liệu từ các tập tin vào bảng MyTable. Ví dụ, chạy các lệnh sau tại dấu kiểm nhắc lệnh:
    bcp MyDatabase.dbo.MyTable in C:\MyFile.bcp -n –SSQLServerName  -T

Phương pháp 2: Sử dụng chèn... CHỌN báo cáo

Giả sử rằng loại dữ liệu MyDateTime chiếm 9 byte trong lưu trữ.
  1. Trong SQL Server Management Studio, tạo ra một bảng mới mà có chứa một cột kiểu dữ liệu VARBINARY(9) bằng cách chạy sau đây nội dung:
    CREATE TABLE TempTable (c1 VARBINARY(9))
  2. Chạy sau Thêm... CHỌN tuyên bố để đưa các TempTable bảng:
    INSERT INTO TempTable SELECT CAST(c1 as VARBINARY(9)) FROM MyTable
  3. Ở SQL Server Management Studio, hãy thực hiện theo các bước sau:
    1. Thả bảng MyTable.
    2. Thả các loại dữ liệu MyDateTime .
    3. Thả System.DirectoryServices.dll lắp ráp.
    4. Thả hội MyAssembly .
  4. Ở SQL Server Management Studio, hãy thực hiện theo các bước sau:
    1. kiểm nhập System.DirectoryServices.dll lắp ráp.
    2. kiểm nhập hội đồng MyAssembly .
    3. Tạo kiểu dữ liệu MyDateTime .
    4. Tạo ra một bảng mới có cùng cấu trúc bảng như bảng MyTable.
  5. Chạy sau Thêm... CHỌN tuyên bố để đưa các Bảng MyTable:
    INSERT INTO MyTable SELECT c1 FROM TempTable
Tham khảo
Để biết thêm chi tiết về các phiên bản lắp ráp, truy cập vào các web site Microsoft Developer Network (MSDN) sau đây: Cho biết thêm thông tin về làm thế nào để cập nhật một hội đồng, truy cập vào web site MSDN sau đây Trang web: Cho biết thêm thông tin về làm thế nào để thả một hội đồng, truy cập vào web site MSDN sau đây Trang web: Cho biết thêm thông tin về làm thế nào để kiểm nhập một hội đồng trong một bộ máy cơ sở dữ liệu SQL Server 2005 Hãy truy cập MSDN Web site sau: Cho thông tin thêm về Tiện ích Bcp.exe, hãy truy cập MSDN Web site sau:

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 949080 - Xem lại Lần cuối: 01/07/2013 20:56:00 - Bản sửa đổi: 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 Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition

  • kbexpertiseadvanced kbtshoot kbprb kbmt KB949080 KbMtvi
Phản hồi