Aracılığıyla paylaş


Derleme oluşturma

Saklı yordamlar veya Tetikleyiciler gibi yönetilen veritabanı nesnelerini derlenir ve derleme adı verilen birimlerinde dağıtmış. Yönetilen dll derlemeler kayıtlı, de Microsoft  SQL Servermontaj sağlar işlevleri kullanılmadan önce. Bir derlemede kaydetmek için bir SQL Serververitabanı, create assembly deyimi kullanın. Bu konuda nasıl bir derleme create assembly deyimi kullanarak bir veritabanında kayıt ve montaj için güvenlik ayarlarını belirleme konusunda anlatılmaktadır.

create assembly deyimi

create assembly deyimi, bir veritabanında derleme oluşturmak için kullanılır. İşte bir örnek:

CREATE ASSEMBLY SQLCLRTest
FROM 'C:\MyDBApp\SQLCLRTest.dll'

CREATE ASSEMBLY SQLCLRTest
FROM 'C:\MyDBApp\SQLCLRTest.dll'

from yan tümcesi oluşturmak için derleme yol belirtir. Bu yol, bir evrensel adlandırma kuralı (unc) yolu veya yerel makinede fiziksel dosya yolu ya da olabilir.

SQL Serverbir derlemenin farklı sürümleri aynı adı, Kültür ve ortak anahtar ile kayıt izin vermez.

Diğer derlemeler başvuru derlemeler oluşturmak mümkündür. İçinde derleme oluşturulduğunda SQL Server, SQL Serverbaşvurulan derlemeler veritabanına zaten oluşturulmaz da kök düzeyinde Kurul tarafından başvurulan derlemeler oluşturur.

Veritabanı kullanıcı veya kullanıcı rolleri oluşturabilir ve böylece kendi, derlemeler bir veritabanı izinleri verilir. Meclisleri oluşturmak için veritabanı kullanıcı veya rol create assembly izni olmalıdır.

Derleme, eğer diğer derlemeler başvuru yalnızca başarılı:

  • Adlı veya başvurulan derleme aynı kullanıcı veya rol sahibi.

  • Adlı veya başvurulan derleme aynı veritabanında oluşturulur.

Güvenlik derlemeler oluştururken belirtme

Derleme içine oluştururken bir SQL Serververitabanı, üç farklı düzeyde güvenlik kodu çalıştırabilir birini belirtebilirsiniz: SAFE, EXTERNAL_ACCESS, ya UNSAFE. Ne zaman CREATE ASSEMBLYdeyimi çalıştırmak, derleme sunucuda kayıt başarısız olmasına neden olabilecek kod derleme belirli denetimleri gerçekleştirilmez. Daha fazla bilgi için bkz: kimliğe bürünme örnek CodePlex üzerinde; bkz: SQL Server Database Engine Samplesdaha fazla bilgi için.

SAFEvarsayılan izin kümesi ise senaryoları çoğunluğu için çalışır. Verilen güvenlik düzeyini belirtmek için sözdizimi create assembly deyimi aşağıdaki gibi değiştirin:

CREATE ASSEMBLY SQLCLRTest
FROM 'C:\MyDBApp\SQLCLRTest.dll'
WITH PERMISSION_SET = SAFE

CREATE ASSEMBLY SQLCLRTest
FROM 'C:\MyDBApp\SQLCLRTest.dll'
WITH PERMISSION_SET = SAFE

Bir derleme oluşturmak mümkün SAFEizni sadece kod yukarıdaki üçüncü satırı ihmal olarak ayarlayın:

CREATE ASSEMBLY SQLCLRTest
FROM 'C:\MyDBApp\SQLCLRTest.dll'

CREATE ASSEMBLY SQLCLRTest
FROM 'C:\MyDBApp\SQLCLRTest.dll'

Kod derleme içinde çalışınca altında SAFEizni ayarlamak, yalnızca hesaplama ve veri erişimi işlem yönetilen sağlayıcısı aracılığıyla sunucu içindeki yapabilirsiniz.

external_access ve güvenli olmayan birleştirmeler oluşturma

EXTERNAL_ACCESShangi kod dosyaları, ağ, kayıt defteri ve ortam değişkenleri gibi sunucu dışındaki kaynaklara erişmesi senaryolarını ele alır. Sunucu bir dış kaynağa eriştiğinde, yönetilen kod çağırma kullanıcının güvenlik bağlamında taklit eder.

UNSAFEkod izni olduğu için derleme verifiably güvenli değil veya ek erişim gerektiren bu durumlarda sınırlı kaynakları gibi MicrosoftWin32 API.

Oluşturmak için bir EXTERNAL_ACCESSveya UNSAFEKurul SQL Server, aşağıdaki iki durumlardan biri gerekir tanıştı:

  1. Derlemenin kesin ad imzalı olduğunu veya Authenticode bir sertifikayla imzalanmıştır. Bu kesin ad (ya da sertifika) içinde oluşturulur SQL Serverbir asimetrik anahtar (veya sertifika), ve karşılık gelen bir oturum ile EXTERNAL ACCESS ASSEMBLY(için dış ERIŞIM derlemeler) izni veya UNSAFE ASSEMBLY(için güvenli olmayan derlemeler) izni.

  2. Veritabanı sahibi (dbo) sahip EXTERNAL ACCESS ASSEMBLY(için EXTERNAL ACCESSderlemeler) veya UNSAFE ASSEMBLY(için UNSAFEderlemeler) izni ve veritabanına sahip GÜVENILIR veritabanı özelliğiiçin ON.

Yukarıda listelenen iki koşul da (yürütme içeren) Derleme yükü zamanında kontrol edilir. Koşullardan en az biri derleme yüklemek için karşılanması gerekir.

Öneririz GÜVENILIR veritabanı özelliğiveritabanı ayarlanmamış olabilir ONortak dil çalıştırma için çalışma zamanı (clr) kodu yalnızca sunucu işleminde. Bunun yerine, bir asimetrik anahtar master veritabanında derleme dosyasının oluşturulmasını öneririz. Bu asimetrik anahtar eşlenen oturum açma sonra oluşturulmalı ve oturum açma verilmesi gereken EXTERNAL ACCESS ASSEMBLYya UNSAFE ASSEMBLYizni.

Aşağıdaki Transact-SQLdeyimleri, asimetrik anahtar oluşturma, bir mantık-e doğru bu anahtar, harita ve sonra vermek için gereken adımları EXTERNAL_ACCESSgiriş izni. Aşağıdaki çalıştırmanız Transact-SQLcreate assembly deyimi çalıştırmadan önce deyimleri.

USE master 
GO  
 
CREATE ASYMMETRIC KEY SQLCLRTestKey FROM EXECUTABLE FILE = 'C:\MyDBApp\SQLCLRTest.dll'   
CREATE LOGIN SQLCLRTestLogin FROM ASYMMETRIC KEY SQLCLRTestKey   
GRANT EXTERNAL ACCESS ASSEMBLY TO SQLCLRTestLogin 
GO 

USE master 
GO  
 
CREATE ASYMMETRIC KEY SQLCLRTestKey FROM EXECUTABLE FILE = 'C:\MyDBApp\SQLCLRTest.dll'   
CREATE LOGIN SQLCLRTestLogin FROM ASYMMETRIC KEY SQLCLRTestKey   
GRANT EXTERNAL ACCESS ASSEMBLY TO SQLCLRTestLogin 
GO 

[!NOT]

Asimetrik anahtar ile ilişkilendirmek için yeni bir giriş oluşturmanız gerekir. Bu giriş yalnızca izinler için kullanılır; bir kullanıcı ile ilişkili olması veya uygulaması içinde kullanılan yok.

Oluşturmak için bir EXTERNAL ACCESSKurul, yaratıcısı olması gerekiyor EXTERNAL ACCESSizni. Bu Derleme oluşturulurken belirtilir:

CREATE ASSEMBLY SQLCLRTest
FROM 'C:\MyDBApp\SQLCLRTest.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS

CREATE ASSEMBLY SQLCLRTest
FROM 'C:\MyDBApp\SQLCLRTest.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS

Aşağıdaki Transact-SQLdeyimleri, asimetrik anahtar oluşturma, bir mantık-e doğru bu anahtar, harita ve sonra vermek için gereken adımları UNSAFEgiriş izni. Aşağıdaki çalıştırmanız Transact-SQLcreate assembly deyimi çalıştırmadan önce deyimleri.

USE master 
GO  
 
CREATE ASYMMETRIC KEY SQLCLRTestKey FROM EXECUTABLE FILE = 'C:\MyDBApp\SQLCLRTest.dll'   
CREATE LOGIN SQLCLRTestLogin FROM ASYMMETRIC KEY SQLCLRTestKey   
GRANT UNSAFE ASSEMBLY TO SQLCLRTestLogin 
GO

USE master 
GO  
 
CREATE ASYMMETRIC KEY SQLCLRTestKey FROM EXECUTABLE FILE = 'C:\MyDBApp\SQLCLRTest.dll'   
CREATE LOGIN SQLCLRTestLogin FROM ASYMMETRIC KEY SQLCLRTestKey   
GRANT UNSAFE ASSEMBLY TO SQLCLRTestLogin 
GO

Bir derleme ile yükler belirtmek için UNSAFEizni, belirttiğiniz UNSAFEizin kümesi derleme Server'a yüklerken:

CREATE ASSEMBLY SQLCLRTest
FROM 'C:\MyDBApp\SQLCLRTest.dll'
WITH PERMISSION_SET = UNSAFE

CREATE ASSEMBLY SQLCLRTest
FROM 'C:\MyDBApp\SQLCLRTest.dll'
WITH PERMISSION_SET = UNSAFE

İzinleri ayarları hakkında daha fazla bilgi için bkz: clr tümleştirme güvenlik.

Ayrıca bkz.

Kavramlar

clr tümleştirme Assemblies yönetme

Bir derleme değiştirme

Derleme siliniyor

clr tümleştirme kod erişimi güvenliği

GÜVENILIR veritabanı özelliği

Kısmen sağlayan güvenilen arayanlara