DetailPage-MSS-KB

Microsoft Knowledge Base

Identificativo articolo: 949080 - Ultima modifica: domenica 21 aprile 2013 - Revisione: 3.0

 

In questa pagina

Sintomi

Prendere in considerazione i seguenti scenari.

Scenario 1

Creazione di una routine comune language runtime (CLR) che fa riferimento un assembly di Microsoft.NET Framework. L'assembly di.NET Framework non è documentata in Articolo della Knowledge Base 922672. Quindi, l'installazione di 3.5 di.NET Framework o un hotfix per.NET Framework 2.0.

Scenario 2

Si crea un assembly e quindi registrare l'assembly in un database di Microsoft SQL Server. Quindi, si installa una versione diversa dell'assembly nella Global Assembly Cache (GAC).

Quando si esegue la routine CLR o utilizzare l'assembly da uno di questi scenari in SQL Server, viene visualizzato un messaggio di errore analogo al seguente:

Server: Msg 6522, livello 16, stato 2, riga 1
Un di.NET Framework Errore durante l'esecuzione di routine definita dall'utente o di aggregazione 'getsid':

System.IO.FileLoadException: Impossibile caricare il file o l'assembly ' System. DirectoryServices, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' o una delle relative dipendenze. Assembly in host archivio ha una firma diversa dall'assembly nella Global Assembly Cache. (Eccezione da HRESULT: 0x80131050)

System.IO.FileLoadException:

Cause

Quando la CLR carica un assembly, Common Language Runtime verifica che si trova nello stesso assembly nella GAC. Se è presente nello stesso assembly nella GAC, CLR verifica che gli ID di versione del modulo (MVIDs) di questi assembly corrispondente. Se MVIDs di questi assembly non corrispondono, viene visualizzato l'errore del messaggio che il Riferimenti di sezione "Sintomi".

Quando un assembly viene ricompilato, MVID del modifiche di assembly. Pertanto, se si aggiorna il.NET Framework, gli assembly di.NET Framework dispone di diversi MVIDs Poiché tali assembly vengono ricompilati. Inoltre, Se si aggiorna un assembly, l'assembly è ricompilati. Pertanto, l'assembly ha anche un altro MVID.

Workaround

Soluzione alternativa 1

Per risolvere lo scenario 1 nella sezione "Sintomi", è necessario aggiornare manualmente gli assembly di.NET Framework in SQL Server. A tale scopo, utilizzare l'istruzione ALTER ASSEMBLY per punto al nuovo versione dell'assembly in.NET Framework Nella seguente cartella:
%Windir%\Microsoft.NET\Framework\Versione
Nota.Versione rappresenta il versione di.NET Framework che si installazione o l'aggiornamento.

Soluzione 2

Per ovviare a scenario 2 in "Sintomi" di sezione, utilizzare l'istruzione ALTER ASSEMBLY per aggiornare l'assembly in il database.

Se il problema persiste una volta fatto questo, eliminare l'assembly dal database, quindi registrare il nuova versione di l'assembly nel database.

Status

Microsoft ha confermato che questo è un problema nei prodotti Microsoft elencati Nella sezione "Si applica a".

Informazioni

Non è consigliabile utilizzare gli assembly di.NET Framework non sono documentati nell'articolo della Knowledge Base 922672. Articolo della Knowledge Base 922672 Elenca gli assembly che vengono testati nell'ambiente ospitato dal CLR di SQL Server.

Per ulteriori informazioni, fare clic sul numero dell'articolo riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base:
922672  (http://support.microsoft.com/kb/922672/ ) Criteri di supporto per gli assembly di.NET Framework non testati nell'ambiente ospitato dal CLR di SQL Server

Descrizione della routine CLR

Routine CLR includere i seguenti oggetti che vengono implementati utilizzando Integrazione di SQL Server con CLR di.NET Framework:
  • Con valori scalari funzioni definite dall'utente (scalari Funzioni definite dall'utente)
  • Table-valued funzioni definite dall'utente (TVF)
  • Routine definite dall'utente (UDPs)
  • Trigger definiti dall'utente
  • Tipi di dati definiti dall'utente
  • Aggregati definiti dall'utente

Assembly per l'aggiornamento dopo l'installazione di 3.5 di.NET Framework

Dopo l'installazione di 3.5 di.NET Framework, è necessario utilizzare il ALTER ASSEMBLY istruzione per aggiornare gli assembly seguenti:
  • Fatto
  • AspNetMMCExt.dll
  • Cscompmgd. dll
  • IEExecRemote.dll
  • IEHost. dll
  • IIEHost.dll
  • Microsoft.Build.Conversion.dll
  • Microsoft.Build.Engine.dll
  • Build
  • Microsoft.Build.Tasks.dll
  • Microsoft
  • 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
  • Install
  • 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
  • Formatters
  • System.ServiceProcess.dll
  • System.Web.dll
  • System
  • RegularExpressions
Questi assembly si trovano nella cartella seguente:
%Windir%\Microsoft.NET\Framework\v2.0.50727

Come mantenere i dati da tipi di dati definiti dall'utente, dopo avere rilasciato un assembly

Se si elimina un assembly che utilizza un tipo di dati definiti dall'utente da SQL Server, è possibile utilizzare uno dei seguenti metodi per mantenere i dati.

Si supponga che sia il seguente scenario:
  • Si crea un assembly il cui nome è MyAssembly. dll.
  • I riferimenti all'assembly MyAssembly il Assembly System.DirectoryServices.dll .
  • Hai il cui nome è un tipo di dati definito dall'utente MyDateTime.
  • Il tipo di dati MyDateTime utilizza il myAssembly. dll assembly.
  • Si crea una tabella il cui nome è MyTable.
  • La tabella MyTable contiene i dati dei dati MyDateTime tipo.

Metodo 1: Utilizzare l'utilità bcp.exe.

  1. Utilizzare l'utilità Bcp.exe exe con l'opzione – n per copiare i dati dalla tabella MyTable in un file. Ad esempio, eseguire il comando seguente al prompt dei comandi:
    bcp MyDatabase.dbo.MyTable out C:\MyFile.bcp -n –SSQLServerName  -T
  2. In SQL Server Management Studio, attenersi alla seguente procedura:
    1. Eliminare la tabella MyTable.
    2. Eliminare il tipo di dati MyDateTime .
    3. Rilasciare il System.DirectoryServices.dll assembly.
    4. Eliminare l'assembly MyAssembly .
  3. In SQL Server Management Studio, attenersi alla seguente procedura:
    1. Registrare il System.DirectoryServices.dll assembly.
    2. Registrare l'assembly MyAssembly .
    3. Creare il tipo di dati MyDateTime .
    4. Creare una nuova tabella con la stessa struttura di tabella tabella MyTable.
  4. Utilizzare l'utilità Bcp.exe exe con l'opzione – n a importare i dati dal file tabella MyTable. Ad esempio, eseguire il comando seguente al prompt dei comandi:
    bcp MyDatabase.dbo.MyTable in C:\MyFile.bcp -n –SSQLServerName  -T

Metodo 2: Utilizzare il comando Inserisci... Istruzione SELECT

Si supponga che il tipo di dati MyDateTime occupa 9 byte di archiviazione.
  1. In SQL Server Management Studio, creare una nuova tabella che contiene una colonna del tipo di dati VARBINARY(9) eseguendo le seguenti operazioni istruzione:
    CREATE TABLE TempTable (c1 VARBINARY(9))
  2. Eseguire il seguente INSERT... Selezionare istruzione per compilare la TempTable tabella:
    INSERT INTO TempTable SELECT CAST(c1 as VARBINARY(9)) FROM MyTable
  3. In SQL Server Management Studio, attenersi alla seguente procedura:
    1. Eliminare la tabella MyTable.
    2. Eliminare il tipo di dati MyDateTime .
    3. Rilasciare il System.DirectoryServices.dll assembly.
    4. Eliminare l'assembly MyAssembly .
  4. In SQL Server Management Studio, attenersi alla seguente procedura:
    1. Registrare il System.DirectoryServices.dll assembly.
    2. Registrare l'assembly MyAssembly .
    3. Creare il tipo di dati MyDateTime .
    4. Creare una nuova tabella con la stessa struttura di tabella tabella MyTable.
  5. Eseguire il seguente INSERT... Selezionare istruzione per compilare la Tabella MyTable:
    INSERT INTO MyTable SELECT c1 FROM TempTable

Riferimenti

Per ulteriori informazioni sulla versione dell'assembly, visitare il seguente sito Web Microsoft Developer Network (MSDN):
aspx (VS. 80) http://msdn2.microsoft.com/en-us/library/51ket42z (http://msdn2.microsoft.com/en-us/library/51ket42z(VS.80).aspx)
Per ulteriori informazioni su come aggiornare un assembly, visitare i seguenti Web di MSDN sito:
http://msdn2.microsoft.com/en-us/library/ms186711.aspx (http://msdn2.microsoft.com/en-us/library/ms186711.aspx)
Per ulteriori informazioni su come rimuovere un assembly, visitare i seguenti Web di MSDN sito:
http://msdn2.microsoft.com/en-us/library/ms177514.aspx (http://msdn2.microsoft.com/en-us/library/ms177514.aspx)
Per ulteriori informazioni su come registrare un assembly in un database di SQL Server 2005 visitare il seguente sito Web MSDN:
http://msdn2.microsoft.com/en-us/library/ms189524.aspx (http://msdn2.microsoft.com/en-us/library/ms189524.aspx)
Per ulteriori informazioni sull'utilità Bcp.exe, visitare il seguente sito Web MSDN:
http://msdn2.microsoft.com/en-us/library/ms162802.aspx (http://msdn2.microsoft.com/en-us/library/ms162802.aspx)

Le informazioni in questo articolo si applicano a:
  • 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
Chiavi: 
kbexpertiseadvanced kbtshoot kbprb kbmt KB949080 KbMtit
Traduzione automatica articoliTraduzione automatica articoli
IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.
Clicca qui per visualizzare la versione originale in inglese dell’articolo: 949080  (http://support.microsoft.com/kb/949080/en-us/ )
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Condividi
Altre opzioni per il supporto
Forum del supporto di Microsoft Community
Contattaci direttamente
Ricerca di un partner certificato Microsoft
Microsoft Store