L'uso di stored procedure estese o SP_OA stored procedure per caricare CLR in SQL Server non è supportato

Versione originale del prodotto: SQL Server
Numero KB originale: 322884

Riepilogo

SQL Server 2005 e versioni successive ospitano Common Language Runtime (CLR) e supportano procedure, funzioni, trigger, tipi e aggregazioni scritti nei linguaggi CLR. In queste versioni non è possibile caricare CLR usando stored procedure estese o sp_OA stored procedure.

Versione originale del prodotto: SQL Server
Numero KB originale: 322884

Ulteriori informazioni

L'assembly System.Runtime.InteropServices .NET Framework offre un ambiente affidabile per richiamare assembly da codice non gestito. Esistono tuttavia diverse differenze tecniche tra le implementazioni interne di CLR e SQL Server.

Threading

Per aumentare le prestazioni, CLR implementa l'archiviazione locale dei thread.

CLR usa inoltre solo la pianificazione basata su thread e non supporta la pianificazione in modalità Fiber. Tuttavia, SQL Server può usare la pianificazione in modalità Fiber. Per configurare questa proprietà, eseguire la sp_configure stored procedure usando l'opzione lightweight pooling. Per altre informazioni su questo argomento, vedere Opzione di configurazione del server di pooling leggero.

Memoria

L'uso di stored procedure estese e automazione OLE viene eseguito nello spazio indirizzi di memoria virtuale della memoria di SQL Server. La memoria SQL Server predefinita è solo una frazione della memoria che SQL Server può potenzialmente usare e CLR compete con qualsiasi implementazione esistente per queste risorse di memoria.

Interoperabilità COM

Questa sezione descrive in modo specifico l'uso di Automazione OLE in SQL Server e si applica sia agli oggetti COM in-process che out-of-process. I metadati dell'assembly per le interfacce di funzione implementano un meccanismo tipizzato per qualsiasi chiamata.

Come parte di questa progettazione, il wrapper COM Callable per un assembly deve usare un meccanismo esterno di mapping di un ClassID a un membro di una classe gestita. A causa di questo mapping esplicito, non esiste alcuna possibilità da una prospettiva non gestita di stabilire un elenco radice di interfacce disponibili.

La stored procedure sp_oaCreate estesa usa l'interfaccia IUnknown::QueryInterface per determinare il supporto dell'oggetto per una particolare interfaccia. L'interoperabilità tra CLR e codice non gestito si basa sull'interfaccia IDispatch per l'implementazione delle interfacce. Poiché non esiste alcun equivalente a un QueryInterface metodo in un assembly basato su CLR, non è possibile creare un'istanza dell'oggetto .