Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Rozszerzone procedury składowane, spakowane jako biblioteki linków dynamicznych (DLL), zapewniają sposób rozszerzania funkcjonalności programu SQL Server za pomocą funkcji opracowanych za pomocą języka Visual C++. Rozszerzone procedury składowane są implementowane jako funkcje wewnątrz bibliotek DLL. Oprócz funkcji rozszerzone procedury składowane mogą również definiować typy zdefiniowane przez użytkownika i funkcje agregujące (takie jak SUM lub AVG).
Gdy klient wykonuje rozszerzoną procedurę składowaną, program SQL Server wyszukuje bibliotekę DLL skojarzona z rozszerzoną procedurą składowaną i ładuje bibliotekę DLL. Program SQL Server wywołuje żądaną rozszerzoną procedurę składowaną i wykonuje ją w określonym kontekście zabezpieczeń. Rozszerzona procedura składowana następnie przekazuje zestawy wyników i zwraca parametry z powrotem do serwera.
Program SQL Server udostępnia rozszerzenia języka Transact-SQL (T-SQL), aby umożliwić instalowanie zestawów weryfikowalnych w programie SQL Server. Zestaw uprawnień programu SQL Server określa kontekst zabezpieczeń z następującymi poziomami zabezpieczeń:
Tryb nieograniczony: uruchamianie kodu na własne ryzyko; kod nie musi być weryfikowalny.
Tryb awaryjny: uruchom weryfikowalny kod typesafe; skompilowany za pomocą polecenia /clr:safe.
Ważne
Przestarzałe programy Visual Studio 2015 i Visual Studio 2017 nie obsługują plików /clr:pure i /clr:safe tworzenia weryfikowalnych projektów. Jeśli potrzebujesz weryfikowalnego kodu, zalecamy tłumaczenie kodu na język C#.
Aby utworzyć i załadować zestaw weryfikowalny do programu SQL Server, użyj poleceń języka Transact-SQL CREATE ASSEMBLY i DROP ASSEMBLY w następujący sposób:
CREATE ASSEMBLY <assemblyName> FROM <'Assembly UNC Path'> WITH
PERMISSION_SET <permissions>
DROP ASSEMBLY <assemblyName>
Polecenie PERMISSION_SET określa kontekst zabezpieczeń i może mieć wartości UNRESTRICTED, SAFE lub EXTENDED.
Ponadto możesz użyć polecenia CREATE FUNCTION, aby powiązać nazwy metod w klasie:
CREATE FUNCTION <FunctionName>(<FunctionParams>)
RETURNS returnType
[EXTERNAL NAME <AssemblyName>:<ClassName>::<StaticMethodName>]
Przykład
Następujący skrypt SQL (na przykład o nazwie "MyScript.sql") ładuje zestaw do programu SQL Server i udostępnia metodę klasy:
-- 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
Skrypty SQL można wykonywać interaktywnie w analizatorze zapytań SQL lub w wierszu polecenia za pomocą narzędzia sqlcmd.exe. Poniższy wiersz polecenia łączy się z serwerem MyServer, używa domyślnej bazy danych, używa zaufanego połączenia, danych wejściowych MyScript.sql i danych wyjściowych MyResult.txt.
sqlcmd -S MyServer -E -i myScript.sql -o myResult.txt