Aracılığıyla paylaş


Derleme oluşturma

Saklı yordamlar veya tetikleyiciler gibi yönetilen veritabanı nesnelerini derlenir ve sonra bir derleme olarak adlandırılan birimler halinde dağıtılır.Managed DLL assemblies must be registered in Microsoft SQL Server before the functionality the assembly provides can be used.Bir derlemede kaydetmek için bir SQL Server veritabanı, kullanın DERLEME oluşturma deyim.Bu konuda, derleme birleştirme oluşturma deyim kullanarak bir veritabanında kaydetmek ve montaj için güvenlik ayarlarını belirtmek nasıl anlatılmaktadır.

create assembly deyimi

DERLEME oluşturma deyim, bir veritabanında derleme oluşturmak için kullanılır.İşte bir örnek:

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

from yan tümce tümce tümce oluşturmak için derleme yol belirtir.Bu yol, bir Evrensel Adlandırma Kuralı (unc) yolu veya yerel makinede bir fiziksel dosya yolu olabilir.

SQL Server farklı sürümlerini kaydetme izin vermeyen bir derleme ile aynı adı, kültür ve ortak anahtar.

Diğer derlemeler başvuru derlemeler oluşturmak da mümkündür.Bir derleme oluşturulduğunda SQL Server, SQL Server da kök - tarafından başvurulan derlemeler oluştururdüzey Başvurulan derlemeler zaten veritabanı. oluşturulmazsa derleme,

Veritabanı kullanıcıları veya kullanıcı rolleri oluşturmak ve böylece kendi, bir veritabanındaki derlemeler için izinler verilir.Derleme oluşturmak için veritabanı kullanıcı ya da rolü DERLEME oluşturma izni olması gerekir.

Yalnızca derleme, diğer derlemeler başvuru yapılabilmesi:

  • Adlı veya başvurulan derleme aynı kullanıcı ya da rolü tarafından aittir.

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

Derleme oluşturulurken güvenlik belirtme

Bir derleme oluştururken, bir SQL Server veritabanı, üç farklı düzeyde güvenlik kodunuzu çalıştırabilirsiniz birini belirtebilirsiniz: SAFE, EXTERNAL_ACCESS, or UNSAFE.Zaman CREATE ASSEMBLY deyim , bazı denetimler assembly sunucuda kaydetmek başarısız olmasına neden olabilecek kod derleme gerçekleştirilir çalıştırılır.Daha fazla bilgi için kimliğe bürünme örnek CodePlex üzerinde Bkz. Bkz: sql Server veritabanı altyapısı örneklerini için daha fazla bilgi.

SAFE Varsayılan izin küme ve senaryoları çoğunluğu için çalışır durumdadır.Verilen güvenlik düzeyini belirtmek için sözdizimi oluşturmak derlemenin değiştirmek deyim aşağıdaki gibi:

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

Sahip bir derleme oluşturmak mümkündür SAFE izin küme üçüncü kod satırı, yukarıdaki atarak:

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

Bir derleme kod çalıştırıldığında altında SAFE izin küme, yalnızca yapabilirsiniz hesaplama ve veri erişim sunucusu üzerinden işlem içinde yönetilen sağlayıcı.

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

EXTERNAL_ACCESS kod dosyaları, ağ, kayıt defteri ve ortam değişkenleri gibi sunucu dışındaki kaynaklara erişmek gereken senaryoları yer almaktadır.Her sunucuya erişen harici kaynak, yönetilen kod çağırma kullanıcının güvenlik bağlamı kimliğine bürünür.

UNSAFEkod izni olduğu gibi kısıtlı kaynaklara, bir derleme verifiably güvenli değil veya ek erişim gerektiren durumlar için Microsoft Win32 API.

Oluşturmak için bir EXTERNAL_ACCESS veya UNSAFE derleme SQL Server, aşağıdaki iki durumdan biri gerekir karşılanıp:

  1. Derlemenin kesin ad imzalı olduğu veya Authenticode ile imzalanmış bir sertifika.Bu güçlü adını (veya sertifika) içinde oluşturulan SQL Server bir asimetrik anahtar (veya sertifika) olarak ve karşılık gelen bir oturum ile EXTERNAL ACCESS ASSEMBLY izni (dış erişim derlemeler) veya UNSAFE ASSEMBLY izni (güvenli olmayan derlemeler).

  2. Veritabanı sahibi (dbo) sahip EXTERNAL ACCESS ASSEMBLY (için EXTERNAL ACCESS derlemeler) ya da UNSAFE ASSEMBLY (için UNSAFE derlemeler) izni ve veritabanına sahip GÜVENİLİR veritabanı özelliği küme için ON.

Yukarıda listelenen iki koşulu da derleme başlangıçta denetlenir saat (yürütme içerir).Koşullardan en az biri derleme yükleme için uygun olması gerekir.

Öneririz GÜVENİLİR veritabanı özelliği bir veritabanı üzerinde olmaması küme için ON ortak dil çalışma zamanı (clr) kodunu çalıştırmak için yalnızcaserver işlem. Bunun yerine, birleştirme dosyasından bir asimetrik anahtar oluşturulmasını öneririz asıl veritabanı.Bu asimetrik anahtar eşlenen oturum açma sonra oluşturulmalı ve oturum açma izni EXTERNAL ACCESS ASSEMBLY veya UNSAFE ASSEMBLY izni.

Aşağıdaki Transact-SQL ifadeleri bir asimetrik anahtar oluşturmak, bu anahtar için bir oturum açma eşleme ve daha sonra vermek için gerekli adımları gerçekleştirir EXTERNAL_ACCESS izni için oturum açma.Aşağıdaki çalıştırmak gerekir Transact-SQL deyimlerinden önce çalışan DERLEME oluşturma deyim.

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 oturum oluşturmanız gerekir.Bu oturum açma izinleri vermek için kullanılması; bir kullanıcı ile ilişkili veya uygulaması içinde kullanılan yok.

Oluşturmak için bir EXTERNAL ACCESS derleme, creator için gereksinim duyduğu sahip EXTERNAL ACCESS izni.Bu derleme oluşturulurken belirtilir:

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

Aşağıdaki Transact-SQL ifadeleri bir asimetrik anahtar oluşturmak, bu anahtar için bir oturum açma eşleme ve daha sonra vermek için gerekli adımları gerçekleştirir UNSAFE izni için oturum açma.Aşağıdaki çalıştırmak gerekir Transact-SQL deyimlerinden önce çalışan DERLEME oluşturma deyim.

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 UNSAFE izni, belirttiğiniz UNSAFE izin küme derleme Server'a yüklerken:

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

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