Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A dinamikus csatolású kódtárakként (DLL-ként) csomagolt kiterjesztett tárolt eljárások lehetővé teszik az SQL Server funkcióinak kiterjesztését a Visual C++-tal kifejlesztett függvényekkel. A kiterjesztett tárolt eljárások függvényként implementálódnak a DLL-ekben. A függvények mellett a kiterjesztett tárolt eljárások felhasználó által definiált típusokat és összesítő függvényeket is definiálhatnak (például SZUM vagy AVG).
Ha egy ügyfél kiterjesztett tárolt eljárást hajt végre, az SQL Server megkeresi a kiterjesztett tárolt eljáráshoz társított DLL-t, és betölti a DLL-t. Az SQL Server meghívja a kért kiterjesztett tárolt eljárást, és végrehajtja egy megadott biztonsági környezetben. A kiterjesztett tárolt eljárás ezután átadja az eredményhalmazokat, és visszaadja a paramétereket a kiszolgálónak.
Az SQL Server bővítményeket biztosít a Transact-SQL (T-SQL) számára, amelyekkel ellenőrizhető szerelvényeket telepíthet az SQL Serverbe. Az SQL Server engedélykészlete a biztonsági környezetet határozza meg a következő biztonsági szintekkel:
Korlátlan mód: Kód futtatása saját felelősségre; a kódnak nem kell ellenőrizhetően típusbiztosnak lennie.
Biztonságos mód: Ellenőrizhető typesafe kód futtatása; a /clr:safe kapcsolóval fordítva.
Fontos
A Visual Studio 2015 elavult, és a Visual Studio 2017 nem támogatja a /clr:pure és /clr:biztonságos , ellenőrizhető projektek létrehozását. Ha ellenőrizhető kódra van szüksége, javasoljuk, hogy lefordítsa a kódot C#-ra.
Ellenőrizhető szerelvény SQL Serverbe való létrehozásához és betöltéséhez használja a CREATE ASSEMBLY és a DROP ASSEMBLY Transact-SQL parancsot az alábbiak szerint:
CREATE ASSEMBLY <assemblyName> FROM <'Assembly UNC Path'> WITH
PERMISSION_SET <permissions>
DROP ASSEMBLY <assemblyName>
A PERMISSION_SET parancs határozza meg a biztonsági környezetet, és a korlátozás nélküli, a BIZTONSÁGOS vagy a KITERJESZTETT értékekkel rendelkezhet.
Emellett a CREATE FÜGGVÉNY paranccsal is kötést végezhet egy osztály metódusneveihez:
CREATE FUNCTION <FunctionName>(<FunctionParams>)
RETURNS returnType
[EXTERNAL NAME <AssemblyName>:<ClassName>::<StaticMethodName>]
példa
A következő SQL-szkript (például "MyScript.sql") betölt egy szerelvényt az SQL Serverbe, és elérhetővé tesz egy osztály metódusát:
-- Create assembly without external access
drop assembly stockNoEA
go
create assembly stockNoEA
from
'c:\stockNoEA.dll'
with permission_set safe
-- Create function on assembly with no external access
drop function GetQuoteNoEA
go
create function GetQuoteNoEA(@sym nvarchar(10))
returns real
external name stockNoEA:StockQuotes::GetQuote
go
-- To call the function
select dbo.GetQuoteNoEA('MSFT')
go
Az SQL-szkriptek interaktívan végrehajthatók az SQL Query Analyzerben vagy a parancssorban a sqlcmd.exe segédprogrammal. A következő parancssor csatlakozik a MyServerhez, az alapértelmezett adatbázist használja, megbízható kapcsolatot használ, bemeneteket MyScript.sql és kimeneteket MyResult.txt.
sqlcmd -S MyServer -E -i myScript.sql -o myResult.txt