Utilizarea extinsă proceduri stocate sau SP_OA stocate proceduri pentru a încărca CLR în SQL Server nu este acceptat

Rezumat

Microsoft nu acceptă utilizarea Microsoft Common Language Runtime (inclus în .NET Framework) pentru orice ambalaj apelabilă COM sau extensii gestionate pentru C++ în Microsoft SQL Server 2005, Microsoft SQL Server 2000 sau Microsoft SQL Server 7.0. Această limită pentru suport se referă direct la utilizarea de proceduri stocate extinse și la utilizarea OLE Automation pentru orice încărcare de biblioteci care trebuie să se încarce pentru a executa în spațiul de memorie SQL Server.

SQL Server 2005 și versiunile ulterioare gazdă Common Language Runtime (CLR) și asistență proceduri, funcțiile, declanşează, tipurile și agregate care sunt scrise în CLR langauges. În aceste versiuni, nu poate încărca CLR utilizând proceduress stocate extinse sau sp_OA stocate proceduri.

Mai multe informații

Asamblarea .NET Framework System.Runtime.InteropServices furnizează un mediu robuste pentru invocă asamblări de cod negestionat. Cu toate acestea, există câteva discordances tehnice între implementările intern CLR și SQL Server:

Threading

Pentru a crește performanța, CLR implementează Thread stocare Local.

Pentru mai multe informații despre problemele legate de utilizarea de stocare Local Thread în proceduri stocate extinse, faceți clic pe următoarele numere de articol pentru a vedea articolele în baza de cunoștințe Microsoft:

163449 utilizaţi de Thread Local de stocare în unei proceduri stocate extinse

190987 cum se utilizează proceduri stocate extinse

În plus, CLR utilizează numai pe bază de fir de planificare și nu acceptă modul fibre programare. Cu toate acestea, SQL Server posibilitatea să utilizați modul fibre programare. Pentru a configura această proprietate, utilizați una dintre următoarele metode:

  • Executați procedura sp_configure stocate utilizând opțiunea soclurilor ușor .

  • În SQL Server 2000 sau în SQL Server 7.0, aveți posibilitatea să configurați această proprietate în SQL Server Enterprise Manager. Pentru a face acest lucru, urmați acești pași:

    1. În Enterprise Manager, extindeți Microsoft SQL Server, extindeți Grupul de SQL Serverși apoi faceți clic dreapta pe instanță de SQL Server 2000 sau SQL Server 7.0.

    2. În caseta de dialog Proprietăți SQL Server (configurare) , faceți clic pe fila de procesor .

    3. Faceți clic pentru a bifa caseta de selectare utilizare Windows NT fibre .

  • În SQL Server 2005, aveți posibilitatea să configurați această proprietate în SQL Server Management Studio. Pentru a face acest lucru, urmați acești pași:

    1. În Management Studio, conectarea la instanța de SQL Server 2005.

    2. Obiect Explorer, faceți clic dreapta pe instanța de SQL Server și apoi faceți clic pe Proprietăți.

    3. În caseta de dialog Proprietăți Server , faceți clic pe procesoare.

    4. Faceți clic pentru a bifa caseta de selectare utilizare Windows fibre (lightweight soclurilor) .

Memorie

Utilizarea de proceduri stocate extinse și OLE Automation ambele rula în spațiul de adrese de memorie virtuală de memorie de SQL Server. Memoria de SQL Server implicit este doar o parte din memoria de SQL Server pot utiliza potențial și CLR este cu orice implementări existente pentru aceste resurse de memorie.
Pentru mai multe informații despre gestionarea de memorie SQL Server, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:

316749 nu poate fi suficientă memorie virtuală atunci când aveți un număr mare de baze de date în SQL Server

Interoperabilitate COM

Această secțiune se adresează în mod specific utilizarea OLE Automation în SQL Server și se aplică la obiectele de COM atât în timpul procesului și din afara procesului. Asamblare metadatele pentru funcția interfețe implementează un mecanism de tastat puternic pentru orice invocări.

Ca parte a acestui proiect, COM apelabilă ambalaj pentru o asamblare trebuie să utilizați un mecanism extern de cartografiere ClassID un membru dintr-o clasă de gestionat. Din cauza această mapare explicit, nu există nici capacitatea din punct de vedere negestionate să stabilească o listă de rădăcină de interfețe disponibile.

Proceduri stocate extinse sp_oaCreate utilizează interfața IUnknown::QueryInterface pentru a determina obiectul suport pentru o anumită interfață. Interoperabilitatea CLR și cod negestionat se bazează pe interfața nImplementarea pentru implementarea interfețe. Deoarece nu există niciun echivalent cu o metodă QueryInterface la o asamblare bazate pe CLR, nu se poate crea o instanță a obiectului.

Aveți nevoie de ajutor suplimentar?

Extindeți-vă competențele
Explorați instruirea
Fiți primul care obține noile caracteristici
Alăturați-vă la Microsoft Insider

V-a fost de ajutor această informație?

Vă mulțumim pentru feedback!

Vă mulțumim pentru feedback! Se pare că ar fi util să luați legătura cu unul dintre agenții noștri de asistență Office.

×