Mesaj de eroare când ați executa o rutina de CLR sau de a folosi un ansamblu în SQL Server: "Adunarea în magazin gazdă are o semnătură diferite decât Adunarea în GAC. (Excepție de la HRESULT: 0x80131050) "

Traduceri articole Traduceri articole
ID articol: 949080 - View products that this article applies to.
Măriți totul | Reduceți totul

În această pagină

Simptome

Luați în considerare următoarele scenarii.

Scenariul 1

Creați o rutina de runtime (CLR) limbaj comun care face referire la un ansamblu de Microsoft .NET Framework. Asamblare .NET Framework nu este documentată în Knowledge bază anghinară 922672. Apoi, instalați .NET Framework 3.5 sau o remediere rapidă pe bază de .NET Framework 2.0.

Scenariul 2

Creați un ansamblu, și apoi treceți în evidență Adunarea o bază acoperire de date Microsoft SQL Server. Apoi, când instalați o versiune diferită a ansamblului în Cache de asamblare globală (GAC).

Când executa CLR de rutină sau de a folosi Adunarea la oricare din aceste scenarii în SQL Server, primiți un mesaj de eroare asemănător cu următorul:

Server: Msg 6522, nivel 16, stat 2, linia 1
Un .NET Framework Eroare în timpul executării definite de utilizator de rutină sau agregat "getsid":

System.IO.FileLoadException: Nu a putut încărca fișierul sau asamblarea "System.DirectoryServices, versiune = 2.0.0.0, cultură = neutră, PublicKeyToken = b03f5f7f11d50a3a' sau unul dintre dependențele sale. Adunarea în gazdă Magazinul are o semnătură diferite decât Adunarea în GAC. (Excepție de la HRESULT: 0x80131050)

System.IO.FileLoadException:

Cauză

CLR încarcă un ansamblu, atunci când CLR verifică faptul că același este în GAC. Dacă Adunarea același este în GAC, CLR verifică care meci de modulul versiune IDs (MVIDs) din aceste ansambluri. Dacă MVIDs aceste ansambluri nu se potrivesc, primiți eroarea mesaj "Simptome" secțiunea mentiuni.

Atunci când este recompilat un ansamblu, MVID de modificările de asamblare. Prin urmare, dacă vă actualizați .NET Framework, .NET Framework ansambluri au diferite MVIDs deoarece aceste ansambluri sunt recompilat. În plus, Dacă actualizați propria adunare, ansamblul este recompilat. Prin urmare, Adunarea are, de asemenea, un alt MVID.

Remediere

Workaround la spre 1

Pentru a evita scenariul 1 în secțiunea "Simptome", trebuie să actualizați manual asamblări .NET Framework în SQL Server. Pentru aceasta, utilizați instrucțiunea ALTER Adunarea a punct la noi versiune asamblare .NET Framework în a urma pliant:
%WINDIR%\Microsoft.NET\Framework\Versiune
NotăVersiune reprezintă versiune de .NET Framework care le instalat sau actualizat.

Workaround la spre 2

Pentru a lucra în jurul scenariu 2 în "Simptome" secțiunea, utilizați instrucțiunea ALTER ADUNĂRII să actualizeze Adunarea în baza acoperire de date.

Dacă problema încă există după aceasta, drop Adunarea din baza acoperire de date, și apoi Inregistreaza-te Noua versiune a Adunarea în baza acoperire de date.

Stare

Microsoft a confirmat că aceasta este o problemă în produsele Microsoft listate în secțiunea "Se aplică la".

Informații suplimentare

Nu recomandăm să utilizați asamblările .NET Framework care nu sunt documentate în bază de cunoștințe articol 922672. Knowledge bază anghinară 922672 liste de ansambluri care sunt testate în mediul SQL Server CLR-a găzduit.

Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a vedea articolul în bază de cunoștințe Microsoft:
922672 Politica de sprijin pentru asamblări .NET Framework netestat în mediul SQL Server CLR-a găzduit

Descriere de CLR rutine

CLR rutine includ următoarele obiecte care sunt implementate prin utilizarea SQL Server integrarea cu .NET Framework CLR:
  • Scalar-evaluate funcții definite de utilizator (scalar UDFs)
  • Tabelară de tip funcții definite de utilizator (TVFs)
  • Procedurile definite de utilizator (UDPs)
  • Declanșează definite de utilizator
  • Tipurile acoperire de date definite de utilizator
  • Agregate definite de utilizator

Ansambluri de actualizare după ce instalați .NET Framework 3.5

După ce instalați .NET Framework 3.5, trebuie să utilizați ALTER Adunarea declarație de a actualiza la adunările următoarele:
  • 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
Aceste ansambluri sunt în următorul folder:
%WINDIR%\Microsoft.NET\Framework\v2.0.50727

Cum de a păstra date de la tipurile acoperire de date definite de utilizator, după ce fixați un ansamblu

Dacă fixați un ansamblu care utilizează un tip acoperire de date definite de utilizator din SQL Server, utilizați una dintre următoarele metode pentru a păstra datele.

Presupunem că este următorul scenariu:
  • Creați un ansamblu al cărui nume este MyAssembly.dll.
  • MyAssembly Adunarea referințe Adunarea System.DirectoryServices.dll .
  • Ai un tip acoperire de date definite de utilizator al cărui nume este MyDateTime.
  • Tipul acoperire de date MyDateTime foloseste MyAssembly.dll Adunarea.
  • Creați un tabel al cărui nume este MyTable.
  • Tabelul MyTable conține date acoperire de date MyDateTime tip.

Metoda 1: Utilizați utilitarul bcp.exe

  1. Utilizați utilitarul Bcp.exe cu n -comutator pentru a copia datele din tabelul de MyTable într-un fișier. De exemplu, executați următoarea comandă la un prompt de comandă:
    bcp MyDatabase.dbo.MyTable out C:\MyFile.bcp -n –SSQLServerName  -T
  2. În SQL Server Management Studio, urmați acești pași:
    1. Picătură în tabelul MyTable.
    2. Picătură cu tipul acoperire de date MyDateTime .
    3. Picătură System.DirectoryServices.dll Adunarea.
    4. Picătură Adunarea MyAssembly .
  3. În SQL Server Management Studio, urmați acești pași:
    1. Registru System.DirectoryServices.dll Adunarea.
    2. Inregistreaza-te de Adunarea MyAssembly .
    3. Crea tipul acoperire de date MyDateTime .
    4. Creați un tabel nou care are aceeași structură de tabel ca tabelul MyTable.
  4. Utilizați utilitarul Bcp.exe cu n -comutator pentru importul datelor din fișierul în tabelul MyTable. De exemplu, executați următoarea comandă la un prompt de comandă:
    bcp MyDatabase.dbo.MyTable in C:\MyFile.bcp -n –SSQLServerName  -T

Metoda 2: Utilizați Inserare... Instruc?iunea SELECT

Să presupunem că tipul acoperire de date MyDateTime ocupă 9 octeți în depozit.
  1. În SQL Server Management Studio, creați un tabel nou care conține o coloană cu tipul acoperire de date VARBINARY(9) rulând următoarele declarație:
    CREATE TABLE TempTable (c1 VARBINARY(9))
  2. Executați următoarele Inserare... Selectați declarație pentru a popula Tabelul tempTable:
    INSERT INTO TempTable SELECT CAST(c1 as VARBINARY(9)) FROM MyTable
  3. În SQL Server Management Studio, urmați acești pași:
    1. Picătură în tabelul MyTable.
    2. Picătură cu tipul acoperire de date MyDateTime .
    3. Picătură System.DirectoryServices.dll Adunarea.
    4. Picătură Adunarea MyAssembly .
  4. În SQL Server Management Studio, urmați acești pași:
    1. Registru System.DirectoryServices.dll Adunarea.
    2. Inregistreaza-te de Adunarea MyAssembly .
    3. Crea tipul acoperire de date MyDateTime .
    4. Creați un tabel nou care are aceeași structură de tabel ca tabelul MyTable.
  5. Executați următoarele Inserare... Selectați declarație pentru a popula Tabelul MyTable:
    INSERT INTO MyTable SELECT c1 FROM TempTable

Referințe

Pentru mai multe informații despre versiunea de asamblare, următorul site Web Rețea Microsoft pentru dezvoltatori (MSDN):
http://msdn2.Microsoft.com/en-us/library/51ket42z (VS.80) .aspx
Pentru mai multe informații despre cum se actualizează un ansamblu, vizitați următorul Web MSDN site-ul:
http://msdn2.Microsoft.com/en-us/library/ms186711.aspx
Pentru mai multe informații despre cum să renunțe la un ansamblu, vizitați următorul Web MSDN site-ul:
http://msdn2.Microsoft.com/en-us/library/ms177514.aspx
Pentru mai multe informații despre cum să se înregistreze un ansamblu într-o bază acoperire de date SQL Server 2005, vizitați următorul site MSDN Web:
http://msdn2.Microsoft.com/en-us/library/ms189524.aspx
Pentru mai multe informații despre utilitarul Bcp.exe, vizitați următorul site MSDN Web:
http://msdn2.Microsoft.com/en-us/library/ms162802.aspx

Proprietă?i

ID articol: 949080 - Ultima examinare: 7 ianuarie 2013 - Revizie: 1.0
Se aplică la:
  • 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
Cuvinte cheie: 
kbexpertiseadvanced kbtshoot kbprb kbmt KB949080 KbMtro
Traducere automată
IMPORTANT: Acest articol a fost tradus de software-ul de traducere automată Microsoft, si nu de un traducător. Microsoft vă oferă atât articole traduse de persoane, cât și articole traduse automat, astfel incat aveti access la toate articolele din Baza noastră de informatii în limba dvs. materna. Totuși, un articol tradus automat nu este întotdeauna perfect. Acesta poate conține greșeli de vocabular, sintaxă sau gramatică, la fel cum un vorbitor străin poate face greșeli vorbind limba dvs. materna. Compania Microsoft nu este responsabilă pentru nici o inexactitate, eroare sau daună cauzată de traducerea necorespunzătoare a conținutului sau de utilizarea traducerii necorespunzătoare de către clienții nostri. De asemenea, Microsoft actualizează frecvent software-ul de traducere automată.
Face?i clic aici pentru a vizualiza versiunea în limba engleză a acestui articol: 949080

Trimite?i feedback

 

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