Pesan galat ketika Anda menjalankan rutin CLR atau menggunakan perakitan di SQL Server: "Majelis di host toko memiliki tanda tangan yang berbeda daripada Majelis GAC. (Pengecualian dari HRESULT: 0x80131050) "

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 949080 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

Gejala

Pertimbangkan skenario berikut.

Skenario 1

Anda membuat common language runtime (CLR) rutinitas yang referensi Majelis Microsoft .NET Framework. Assembly .NET Framework tidak didokumentasikan dalam Artikel Pangkalan Pengetahuan 922672. Kemudian, Anda menginstal .NET Framework 3.5 atau perbaikan terbaru yang berbasis .NET Framework 2.0.

Skenario 2

Anda membuat Majelis, dan kemudian Anda mendaftar Majelis dalam database Microsoft SQL Server. Kemudian, Anda menginstal versi yang berbeda dari Majelis di Global Majelis Cache (GAC).

Ketika Anda menjalankan rutin CLR atau menggunakan Majelis dari salah satu skenario ini di SQL Server, Anda menerima pesan galat yang menyerupai berikut ini:

Server: Msg 6522, tingkat 16, negara bagian 2, garis jatuh berseri 1
.NET Framework Timbul galat selama eksekusi ditetapkan pengguna rutin atau agregat 'getsid':

System.IO.FileLoadException: Tidak dapat memuat file atau perakitan ' System.DirectoryServices, Version = 2.0.0.0, budaya = neutral, PublicKeyToken = b03f5f7f11d50a3a' atau salah satu dari dependensi. Majelis di host Toko memiliki tanda tangan yang berbeda daripada Majelis dalam GAC. (Pengecualian dari HRESULT: 0x80131050)

System.IO.FileLoadException:

Penyebab

Ketika CLR beban perakitan, CLR memverifikasi bahwa Majelis yang sama dalam GAC. Jika Majelis yang sama adalah dalam GAC, CLR memverifikasi yang Id versi modul (MVIDs) dari Majelis ini cocok. Jika MVIDs ini Majelis tidak cocok, Anda menerima kesalahan pesan yang "Gejala" bagian menyebutkan.

Ketika perakitan adalah recompiled, MVID dari Majelis perubahan. Oleh karena itu, jika Anda memperbarui .NET Framework, Majelis .NET Framework memiliki MVIDs yang berbeda Karena Majelis tersebut recompiled. Selain itu, Jika Anda memperbarui perakitan Anda sendiri, Majelis recompiled. Oleh karena itu, Majelis juga memiliki berbeda MVID.

Teknik pemecahan masalah

Pemecahan masalah 1

Untuk mengatasi skenario 1 di bagian "Gejala", Anda harus secara manual update Majelis .NET Framework di SQL Server. Untuk melakukannya, gunakan Majelis mengubah pernyataan untuk titik untuk yang baru Versi assembly .NET Framework di map berikut:
%Windir%\Microsoft.NET\Framework\Versi
CatatanVersi mewakili Versi .NET Framework yang Anda diinstal atau diperbarui.

Pemecahan masalah 2

Untuk mengatasi skenario 2 in Bagian "gejala" bagian, menggunakan pernyataan Mengubah PERAKITAN untuk memperbarui Dewan pada database.

Jika masalah masih ada Setelah Anda melakukan ini, menjatuhkan perakitan dari database, dan kemudian mendaftar Versi baru Majelis dalam database.

Status

Microsoft telah mengkonfirmasi bahwa ini merupakan masalah di dalam produk Microsoft sebagaimana didaftar di bagian "Berlaku untuk".

Informasi lebih lanjut

Kami tidak menganjurkan bahwa Anda menggunakan Majelis .NET Framework yang tidak didokumentasikan di artikel Pangkalan Pengetahuan 922672. Daftar artikel Pangkalan Pengetahuan 922672 Majelis yang diuji dalam lingkungan SQL Server CLR-host.

Untuk informasi lebih lanjut, klik nomor artikel berikut ini untuk melihat artikel di dalam Pangkalan Pengetahuan Microsoft:
922672 Mendukung kebijakan untuk belum teruji .NET Framework Majelis di lingkungan SQL Server CLR-host.

Deskripsi CLR rutinitas

CLR rutinitas termasuk objek berikut yang diimplementasikan dengan menggunakan SQL Server integrasi dengan .NET Framework CLR:
  • Dihargai skalar user-defined functions (skalar UDFs)
  • Dihargai Daftar Tabel user-defined functions (TVFs)
  • Prosedur yang ditetapkan pengguna (UDPs)
  • Pemicu yang ditetapkan pengguna
  • tipe data ditetapkan pengguna
  • Agregat ditetapkan pengguna

Majelis untuk pembaruan setelah Anda menginstal .NET Framework 3.5

Setelah Anda menginstal .NET Framework 3.5, Anda harus menggunakan ALTER Majelis pernyataan untuk memperbarui Majelis berikut:
  • 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
Majelis ini adalah di dalam folder berikut:
%Windir%\Microsoft.NET\Framework\v2.0.50727

Cara mempertahankan data dari tipe data ditetapkan pengguna setelah Anda menjatuhkan perakitan

Jika Anda drop Majelis yang menggunakan tipe data ditetapkan pengguna dari SQL Server, Anda dapat menggunakan salah satu metode berikut untuk mempertahankan data.

Berasumsi bahwa berikut adalah skenario:
  • Anda membuat sebuah Majelis yang namanya MyAssembly.dll.
  • MyAssembly Majelis referensi Majelis System.DirectoryServices.dll .
  • Anda memiliki tipe data user-defined namanya MyDateTime.
  • tipe data MyDateTime menggunakan MyAssembly.dll Majelis.
  • Anda membuat sebuah Daftar Tabel yang bernama MyTable adalah.
  • MyTable Daftar Tabel berisi data data MyDateTime Ketik.

Metode 1: Gunakan utilitas bcp.exe

  1. Menggunakan utilitas Bcp.exe bersama dengan beralih ?n untuk menyalin data dari Daftar Tabel MyTable ke file. Misalnya, jalankan perintah berikut pada prompt perintah:
    bcp MyDatabase.dbo.MyTable out C:\MyFile.bcp -n ?SSQLServerName  -T
  2. Dalam SQL Server Management Studio, ikuti langkah berikut:
    1. Drop tabel atak MyTable.
    2. Drop tipe data MyDateTime .
    3. Drop System.DirectoryServices.dll Majelis.
    4. Drop Majelis MyAssembly .
  3. Dalam SQL Server Management Studio, ikuti langkah berikut:
    1. Mendaftar System.DirectoryServices.dll Majelis.
    2. Mendaftar Majelis MyAssembly .
    3. Membuat jenis data MyDateTime .
    4. Membuat sebuah Daftar Tabel yang memiliki struktur Daftar Tabel yang sama sebagai Daftar Tabel MyTable.
  4. Menggunakan utilitas Bcp.exe bersama-sama dengan ?n beralih ke mengimpor data dari file ke Daftar Tabel MyTable. Misalnya, jalankan perintah berikut pada prompt perintah:
    bcp MyDatabase.dbo.MyTable in C:\MyFile.bcp -n ?SSQLServerName  -T

Metode 2: Gunakan INSERT... Pilih pernyataan

Berasumsi bahwa jenis data MyDateTime menempati 9 byte dalam penyimpanan.
  1. Dalam SQL Server Management Studio, membuat sebuah Daftar Tabel baru yang berisi kolom jenis data VARBINARY(9) dengan menjalankan berikut pernyataan:
    CREATE TABLE TempTable (c1 VARBINARY(9))
  2. Menjalankan berikut masukkan... Pilih pernyataan untuk mengisi TempTable tabel:
    INSERT INTO TempTable SELECT CAST(c1 as VARBINARY(9)) FROM MyTable
  3. Dalam SQL Server Management Studio, ikuti langkah berikut:
    1. Drop tabel atak MyTable.
    2. Drop tipe data MyDateTime .
    3. Drop System.DirectoryServices.dll Majelis.
    4. Drop Majelis MyAssembly .
  4. Dalam SQL Server Management Studio, ikuti langkah berikut:
    1. Mendaftar System.DirectoryServices.dll Majelis.
    2. Mendaftar Majelis MyAssembly .
    3. Membuat jenis data MyDateTime .
    4. Membuat sebuah Daftar Tabel yang memiliki struktur Daftar Tabel yang sama sebagai Daftar Tabel MyTable.
  5. Menjalankan berikut masukkan... Pilih pernyataan untuk mengisi MyTable tabel:
    INSERT INTO MyTable SELECT c1 FROM TempTable

Referensi

Untuk informasi lebih lanjut tentang versi perakitan, kunjungi situs web Microsoft Developer Network (MSDN) berikut:
.aspx http://msdn2.Microsoft.com/en-US/Library/51ket42z (VS.80)
Untuk informasi lebih lanjut tentang cara memperbarui Majelis, kunjungi Website MSDN berikut situs:
http://msdn2.Microsoft.com/en-US/Library/ms186711.aspx
Untuk informasi lebih lanjut tentang bagaimana untuk menjatuhkan perakitan, kunjungi Website MSDN berikut situs:
http://msdn2.Microsoft.com/en-US/Library/ms177514.aspx
Untuk selengkapnya tentang cara mendaftarkan Majelis dalam database SQL Server 2005, kunjungi Website MSDN berikut:
http://msdn2.Microsoft.com/en-US/Library/ms189524.aspx
Untuk informasi lebih lanjut tentang utilitas Bcp.exe, kunjungi Website MSDN berikut:
http://msdn2.Microsoft.com/en-US/Library/ms162802.aspx

Properti

ID Artikel: 949080 - Kajian Terakhir: 07 Januari 2013 - Revisi: 1.0
Berlaku bagi:
  • 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
Kata kunci: 
kbexpertiseadvanced kbtshoot kbprb kbmt KB949080 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini: 949080

Berikan Masukan

 

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