Sdílet prostřednictvím


Použití ověřitelných sestavení se serverem SQL Server

Rozšířené uložené procedury jsou reprezentovány ve formě dynamických knihoven (DLL), umožňují rozšiřovat funkce serveru SQL pomocí funkcí vytvořených s Visual C++. Rozšířené uložené procedury jsou implementovány jako funkce uvnitř knihoven DLL. Kromě funkcí mohou rozšířené uložené procedury také definovat uživatelem definované typy a souhrné funkce (například SUM nebo AVG).

Poté, co klient spustí rozšířenou uloženou proceduru, SQL Server hledá knihovnu DLL přidruženou k rozšířené uložené proceduře a načte ji. SQL Server volá požadovanou rozšířenou uloženou proceduru a spustí ji v rámci zadaného kontextu zabezpečení. Rozšířená uložená procedura poté předá sady výsledků a vrátí parametry na server.

SQL Server 2005 poskytuje rozšíření Transact-SQL (T-SQL) tak, aby bylo možné instalovat ověřitelná sestavení na server SQL. Sada oprávnění serveru SQL určuje kontext zabezpečení s následujícími úrovněmi zabezpečení:

  • Neomezený režim: Spouštíte kód na vlastní nebezpečí; kód nemusí být ověřitelný zajišťující bezpečnost typů.

  • Nouzový režim: Spouštíte ověřitelný kód zajišťující bezpečnost typů; kompilovaný s /clr:safe.

Bezpečný režim vyžaduje, aby bylo spuštěné sestavení ověřitelné zajišťující bezpečnost typů.

Chcete-li vytvořit a nahrát ověřitelné sestavení na server SQL, použijte příkazy jazyka Transact-SQL CREATE ASSEMBLY a DROP ASSEMBLY takto:

CREATE ASSEMBLY <assemblyName> FROM <'Assembly UNC Path'> WITH 
  PERMISSION_SET <permissions>
DROP ASSEMBLY <assemblyName>

Příkaz PERMISSION_SET určuje kontext zabezpečení a může nabývat hodnot UNRESTRICTED, SAFE nebo EXTENDED.

Kromě toho můžete použít příkaz CREATE FUNCTION pro vytvoření vazby na názvy metod ve třídě:

CREATE FUNCTION <FunctionName>(<FunctionParams>)
RETURNS returnType
[EXTERNAL NAME <AssemblyName>:<ClassName>::<StaticMethodName>]

Příklad

Následující skript SQL (například "MyScript.sql") nahraje sestavení na server SQL a zpřístupní metodu třídy:

-- 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

Skripty SQL mohou být provedeny interaktivně v nástroji SQL Query Analyzer nebo na příkazovém řádku pomocí nástroje sqlcmd.exe. Následující příkaz na příkazovém řádku se připojí k serveru MyServer, použije výchozí databázi, důvěryhodné připojení, vstup MyScript.sql a výstup MyResult.txt.

sqlcmd –S MyServer -E –i myScript.sql –o myResult.txt

Viz také

Odkaz

Postupy: Přenos na /clr:safe

Classes, Structures, and Unions