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 .
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per