Aracılığıyla paylaş


sql Server ile doğrulanabilir montajlarý kullanarak (C++/ CLI)

Dinamik bağlantı kitaplıkları (DLL'ler) olarak paketlenmiş genişletilmiş saklı yordamlar Visual C++ ile geliştirilen işlevler üzerinden SQL Server işlevselliğinin genişletilmesi için bir yol sağlar. Genişletilmiş saklı yordamlar DLL'ler içinde işlevler olarak uygulanır. İşlevlere ek olarak, genişletilmiş saklı yordamlar aynı zamanda kullanıcı tanımlı türler ve toplama işlevleri (örneğin, SUM veya AVG) öğelerini de tanımlayabilir.

Bir istemci genişletilmiş bir saklı yordam yürüttüğünde, SQL Sunucusu genişletilmiş saklı yordamla ilişkilendirilmiş DLL'i arar ve yükler. SQL Server istenen genişletilmiş depolanan yordamı çağırır ve belirtilen güvenlik bağlamında yürütülür. Genişletilmiş saklı yordam daha sonra sonuç kümelerini geçirir ve parametreleri sunucuya geri döndürür.

SQL Server 2005 SQL Server'a doğrulanabilir birleştirmeler yüklemenize olanak vermek için Transact-SQL'e (T-SQL) uzantılar sağlar. SQL Server izin kümesi, aşağıdaki güvenlik düzeyleriyle güvenlik bağlamını belirler:

  • Kısıtlanmamış mod: Kodu kendi sorumluluğunuzda çalıştırın; kod doğrulanabilir şekilde tür güvenli olmak zorunda değildir.

  • Güvenli mod: /clr:safe ile derlenen doğrulanabilir typesafe kodunu çalıştırın.

Güvenli mod, doğrulanabilir typesafe olması için yürütülen derlemeler gerektirir.

SQL sunucusuna doğrulanabilir bir derleme oluşturmak ve yüklemek için aşağıdaki gibi DERLEME OLUŞTUR ve DERLEME AT Transact-SQL komutlarını kullanın.

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

C:\MyDBApp\SQLCLRTest.dll'WITH komutu güvenlik bağlamını belirtir ve değerlere kısıtlamasız, güvenli veya genişletilmiş bir şekilde sahip olabilir.

Ayrıca bir sınıftaki yöntem adlarına bağlanması için CREATE FUNCTION komutunu kullanabilirsiniz:

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

Örnek

Aşağıdaki SQL betiği (örneğin, "MyScript.sql" adındaki) SQL Sunucusuna bir derleme yükler ve bir sınıfın yöntemini kullanılabilir hale getirir:

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

SQL betikleri etkileşimli olarak SQL Query Analyzer'da veya sqlcmd.exe yardımcı programı ile komut satırında yürütülebilir. Aşağıdaki komut satırı MyServer'a bağlanır, varsayılan veritabanını kullanır, güvenilen bir bağlantı, MyScript.sql girdileri ve MyResult.txt çıktılarını kullanır.

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

Ayrıca bkz.

Başvuru

Nasıl yapılır: /clr:safe için geçiş (C++/ CLI)

Sınıflar, yapılar ve sendikalar