Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Rozšířené uložené procedury zabalené jako knihovny DLL (Dynamic-Link Library) poskytují způsob, jak rozšířit funkce SQL Serveru prostřednictvím funkcí vyvinutých v jazyce Visual C++. Rozšířené uložené procedury se implementují jako funkce uvnitř knihoven DLL. Kromě funkcí můžou rozšířené uložené procedury také definovat uživatelem definované typy a agregační funkce (například SUM nebo AVG).
Když klient spustí rozšířenou uloženou proceduru, SQL Server vyhledá knihovnu DLL přidruženou k rozšířené uložené procedurě a načte knihovnu DLL. SQL Server volá požadovanou rozšířenou uloženou proceduru a spustí ji v zadaném kontextu zabezpečení. Rozšířená uložená procedura pak předává sady výsledků a vrací parametry zpět na server.
SQL Server poskytuje rozšíření jazyka Transact-SQL (T-SQL), která umožňují instalovat ověřitelná sestavení do SQL Serveru. Sada oprávnění SQL Serveru určuje kontext zabezpečení s následujícími úrovněmi zabezpečení:
Neomezený režim: Spusťte kód na vlastní nebezpečí; kód nemusí být ověřitelně typově bezpečný.
Nouzový režim: Spusťte ověřitelný kód typusafe; zkompilován pomocí /clr:safe.
Důležité
Visual Studio 2015 zastaralé a Visual Studio 2017 nepodporuje vytváření ověřitelných projektů /clr:pure a /clr:safe . Pokud potřebujete ověřitelný kód, doporučujeme kód přeložit do jazyka C#.
Pokud chcete vytvořit a načíst ověřitelné sestavení do SQL Serveru, použijte příkazy Jazyka Transact-SQL CREATE ASSEMBLY a DROP ASSEMBLY následujícím způsobem:
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 mít hodnoty UNRESTRICTED, SAFE nebo EXTENDED.
Kromě toho můžete pomocí příkazu CREATE FUNCTION vytvořit vazbu 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 s názvem "MyScript.sql") načte sestavení do SQL Serveru 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 lze spouštět interaktivně v nástroji SQL Query Analyzer nebo na příkazovém řádku pomocí nástroje sqlcmd.exe. Následující příkazový řádek se připojí k MyServeru, používá výchozí databázi, používá důvěryhodné připojení, vstupy MyScript.sql a výstupy MyResult.txt.
sqlcmd -S MyServer -E -i myScript.sql -o myResult.txt