Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Applies to:SQL Server
Azure SQL Managed Instance
SQL Server örneğinde nesne olarak sınıf meta verilerini ve yönetilen kodu içeren bir yönetilen uygulama modülü oluşturur. Bu modüle başvurarak, veritabanında ortak dil çalışma zamanı (CLR) işlevleri, saklı yordamlar, tetikleyiciler, kullanıcı tanımlı toplamalar ve kullanıcı tanımlı türler oluşturulabilir.
Transact-SQL söz dizimi kuralları
Syntax
CREATE ASSEMBLY assembly_name
[ AUTHORIZATION owner_name ]
FROM { <client_assembly_specifier> | <assembly_bits> [ , ...n ] }
[ WITH PERMISSION_SET = { SAFE | EXTERNAL_ACCESS | UNSAFE } ]
[ ; ]
<client_assembly_specifier> ::=
'[ \\computer_name\ ] share_name\ [ path\ ] manifest_file_name'
| '[ local_path\ ] manifest_file_name'
<assembly_bits> ::=
{ varbinary_literal | varbinary_expression }
Arguments
assembly_name
Derlemenin adı. The name must be unique within the database and a valid identifier.
AUTHORIZATION owner_name
Bir kullanıcının veya rolün derlemenin sahibi olarak adını belirtir.
owner_name must either be the name of a role of which the current user is a member, or the current user must have IMPERSONATE permission on owner_name. Belirtilmezse, sahiplik geçerli kullanıcıya verilir.
<client_assembly_specifier>
Karşıya yüklenen derlemenin bulunduğu yerel yolu veya ağ konumunu ve ayrıca derlemeye karşılık gelen bildirim dosyası adını belirtir.
<client_assembly_specifier> sabit bir dize veya sabit bir dize olarak değerlendirilen bir ifade olarak ifade edilebilir.
CREATE ASSEMBLY çok modüllü derlemelerin yüklenmesini desteklemez. SQL Server ayrıca bu derlemenin tüm bağımlı derlemelerini aynı konumda arar ve bunları kök düzeyi derlemesiyle aynı sahiple karşıya yükler. Bu bağımlı derlemeler bulunamazsa ve geçerli veritabanına henüz yüklenmediyse, CREATE ASSEMBLY başarısız olur. Bağımlı derlemeler geçerli veritabanında zaten yüklüyse, bu derlemelerin sahibi yeni oluşturulan derlemenin sahibiyle aynı olmalıdır.
Important
Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği, bir dosyadan derleme oluşturmayı desteklemez.
<client_assembly_specifier> oturum açmış kullanıcının kimliğine bürünülüyorsa belirtilemiyor.
<assembly_bits>
Derlemeyi ve bağımlı derlemelerini oluşturan ikili değerlerin listesi. Listedeki ilk değer kök düzeyi derlemesi olarak kabul edilir. Bağımlı derlemelere karşılık gelen değerler herhangi bir sırada sağlanabilir. Kök derlemenin bağımlılıklarına karşılık olmayan tüm değerler yoksayılır.
Note
Bu seçenek, kapsanan bir veritabanında kullanılamaz.
varbinary_literal
A varbinary literal.
varbinary_expression
An expression of type varbinary.
PERMISSION_SET { SAFE | EXTERNAL_ACCESS | GÜVENSİz }
SQL Server tarafından erişildiğinde derlemeye verilen kod erişim izinleri kümesini belirtir. Belirtilmezse, SAFE varsayılan olarak uygulanır.
Bu PERMISSION_SET seçenek Sunucu yapılandırmasından etkilenir: clr katı güvenlik seçeneği. Etkinleştirildiğinde clr strict security , tüm derlemeler olarak UNSAFEdeğerlendirilir.
SAFE kullanmanızı öneririz.
SAFE en kısıtlayıcı izin kümesidir.
SAFE izinlerine sahip bir derleme tarafından yürütülen kod dosyalar, ağ, ortam değişkenleri veya kayıt defteri gibi dış sistem kaynaklarına erişemez.
EXTERNAL_ACCESS derlemelerin dosyalar, ağlar, ortam değişkenleri ve kayıt defteri gibi belirli dış sistem kaynaklarına erişmesini sağlar.
UNSAFE , sql server örneği içinde ve dışında kaynaklara sınırsız erişim sağlayan derlemeler sağlar. Bir UNSAFE derlemenin içinden çalıştırılan kod yönetilmeyen kodu çağırabilir.
SAFE , SQL Server örneği dışındaki kaynaklara erişmeden hesaplama ve veri yönetimi görevleri gerçekleştiren derlemeler için önerilen izin ayarıdır.
Note
EXTERNAL_ACCESS ve UNSAFE seçenekleri, kapsanan bir veritabanında kullanılamaz.
SQL Server örneği dışındaki kaynaklara erişen derlemeler için kullanmanızı EXTERNAL_ACCESS öneririz.
EXTERNAL_ACCESS derlemeler, derlemelerin güvenilirlik ve ölçeklenebilirlik korumalarını SAFE içerir, ancak güvenlik açısından derlemelere UNSAFE benzer. Derlemelerdeki EXTERNAL_ACCESS kod varsayılan olarak SQL Server hizmet hesabı altında çalışır ve kod çağıranın kimliğine açıkça bürünmediği sürece bu hesabın altındaki dış kaynaklara erişir. Bu nedenle, derleme oluşturma EXTERNAL_ACCESS izni yalnızca SQL Server hizmet hesabı altında kod çalıştırmak için güvenilen oturum açma bilgilerine verilmelidir. Kimliğe bürünme hakkında daha fazla bilgi için bkz. CLR tümleştirme güvenliği.
belirtilmesi UNSAFE , derlemedeki kodun SQL Server işlem alanında SQL Server'ın sağlamlığını tehlikeye atabilecek işlemler gerçekleştirmesine olanak tanır.
UNSAFE derlemeleri, SQL Server veya ortak dil çalışma zamanının güvenlik sistemini de devredebilir.
UNSAFE izinleri yalnızca yüksek oranda güvenilen derlemelere verilmelidir. Only members of the sysadmin fixed server role can create and alter UNSAFE assemblies.
For more information about assembly permission sets, see Design assemblies.
Kod erişim güvenliği artık desteklenmiyor
CLR, artık güvenlik sınırı olarak desteklenmeyen .NET Framework'te Kod Erişim Güvenliği'ni (CAS) kullanır.
PERMISSION_SET = SAFE ile oluşturulan bir CLR derlemesi dış sistem kaynaklarına erişebilir, yönetilmeyen kodu çağırabilir ve sysadmin ayrıcalıkları alabilir. SQL Server 2017 (14.x) ve sonraki sürümlerinde, sp_configure seçeneği, clr katı güvenlik, CLR derlemelerinin güvenliğini artırır.
clr strict security varsayılan olarak etkinleştirilir ve SAFE ve EXTERNAL_ACCESS derlemeleri UNSAFEolarak işaretlenmiş gibi değerlendirir. geriye dönük uyumluluk için clr strict security seçeneği devre dışı bırakılabilir, ancak önerilmez.
Tüm derlemeleri, UNSAFE ASSEMBLY veritabanında master izni verilmiş ilgili oturum ile bir sertifika veya asimetrik anahtarla imzalamanızı öneririz. SQL Server yöneticileri, Veritabanı Motoru'nun güvenmesi gereken bir derleme listesine de derleme ekleyebilir. For more information, see sys.sp_add_trusted_assembly.
Remarks
CREATE ASSEMBLY daha önce SQL Server örneğinde kullanılmak üzere yönetilen koddan .dll dosyası olarak derlenmiş bir derlemeyi karşıya yükler.
Etkinleştirildiğinde, PERMISSION_SET ve CREATE ASSEMBLY deyimlerindeki seçenekler çalışma zamanında yoksayılır, ancak ALTER ASSEMBLY seçenekleri PERMISSION_SET metaverilerde korunur. seçeneği yoksayılarak mevcut kod deyimlerinin bozulması en aza indirgener.
SQL Server aynı ada, kültüre ve ortak anahtara sahip bir derlemenin farklı sürümlerinin kaydedilmesine izin vermez.
içinde belirtilen <client_assembly_specifier>derlemeye erişmeye çalışırken SQL Server, geçerli Windows oturum açma bilgilerinin güvenlik bağlamının kimliğine bürüner. Bir ağ konumu (UNC yolu) belirtirse <client_assembly_specifier> , temsilci sınırlamaları nedeniyle geçerli oturum açmanın kimliğine bürünme ağ konumuna taşınmaz. Bu durumda erişim, SQL Server hizmet hesabının güvenlik bağlamı kullanılarak yapılır. Daha fazla bilgi için bkz. Kimlik Bilgileri (Veritabanı Altyapısı).
Besides the root assembly specified by assembly_name, SQL Server tries to upload any assemblies that are referenced by the root assembly being uploaded. Daha önceki CREATE ASSEMBLY bir deyim nedeniyle başvuruda bulunulmuş bir derleme veritabanına zaten yüklenmişse, bu derleme karşıya yüklenmez ancak kök derleme için kullanılabilir. Bağımlı bir derleme daha önce karşıya yüklenmemişse ancak SQL Server bildirim dosyasını kaynak dizinde bulamıyorsa bir CREATE ASSEMBLY hata döndürür.
Kök derleme tarafından başvurulan bağımlı derlemeler veritabanında değilse ve kök derlemeyle birlikte örtük olarak yüklendiyse, kök düzeyi derlemesiyle aynı izin kümesine sahiptir. Bağımlı derlemeler kök düzeyindeki derlemeden farklı bir izin kümesi kullanılarak oluşturulması gerekiyorsa, uygun izin kümesine sahip kök düzeyi derlemesinden önce açıkça karşıya yüklenmelidir.
Assembly Validation
SQL Server, aşağıdaki denetimleri garanti etmek için deyimi tarafından CREATE ASSEMBLY karşıya yüklenen derleme ikili dosyalarını tarar:
Derleme ikili dosyası geçerli meta veriler ve kod kesimleriyle iyi biçimlendirilmiş ve kod kesimlerinin geçerli Microsoft Ara dili (MSIL) yönergeleri vardır.
Başvuruda bulunan sistem derlemeleri kümesi, SQL Server'da desteklenen aşağıdaki derlemelerden biridir: , , , , ,
System.Xml.dll,Microsoft.VisualC.dll, ,System.Web.Services.dllSystem.Data.SqlXml.dllSystem.Security.dllSystem.Core.dllCustomMarshallers.dll, ve .System.Xml.Linq.dllSystem.dllSystem.Data.dllmscorlib.dllMicrosoft.VisualBasic.dllDiğer sistem derlemelerine başvurulabilir, ancak bunlar açıkça veritabanına kaydedilmelidir.veya
EXTERNAL ACCESSizin kümeleri kullanılarakSAFEoluşturulan derlemeler için:Derleme kodu tür açısından güvenli olmalıdır. Tür güvenliği, ortak dil çalışma zamanı doğrulayıcısını derlemeye karşı çalıştırarak oluşturulur.
Derleme, salt okunur olarak işaretlenmediği sürece sınıflarında hiçbir statik veri üyesi içermemelidir.
Derlemedeki sınıflar sonlandırıcı yöntemleri içeremez.
Derlemenin sınıfları veya yöntemlerine yalnızca izin verilen kod öznitelikleriyle ek açıklama eklenmelidir. Daha fazla bilgi için bkz: CLR tümleştirmesi: CLR yordamları için özel öznitelikler.
Yürütülürken CREATE ASSEMBLY gerçekleştirilen önceki denetimlerin yanı sıra, derlemedeki kodun yürütme zamanında gerçekleştirilen ek denetimler de vardır:
Derlemenin izin kümesi bu izni içermiyorsa, belirli bir Kod Erişimi İzni gerektiren bazı .NET Framework API'lerini çağırma işlemi başarısız olabilir.
ve
EXTERNAL_ACCESSderlemeleri içinSAFE, belirli HostProtectionAttributes ile açıklama ekleyen .NET Framework API'lerini çağırma girişimi başarısız olur.
For more information, see Design assemblies.
Permissions
CREATE ASSEMBLY izin gerektirir.
belirtilirse PERMISSION_SET = EXTERNAL_ACCESS , sunucuda izin gerektirir EXTERNAL ACCESS ASSEMBLY . belirtilirse PERMISSION_SET = UNSAFE , sunucuda izin gerektirir UNSAFE ASSEMBLY .
Kullanıcı, derlemeler veritabanında zaten varsa karşıya yüklenecek derleme tarafından başvuruda bulunan tüm derlemelerin sahibi olmalıdır. To upload an assembly by using a file path, the current user must be a Windows authenticated login or a member of the sysadmin fixed server role. Yürüten CREATE ASSEMBLY kullanıcının Windows oturum açma işlemi, paylaşımda ve deyimde yüklenen dosyalarda okuma iznine sahip olmalıdır.
CLR katı güvenliğine sahip izinler
Etkinleştirildiğinde CLR strict security bir CLR derlemesi oluşturmak için aşağıdaki izinler gereklidir:
- Kullanıcının
CREATE ASSEMBLYiznine sahip olması gerekir - Ayrıca aşağıdaki koşullardan biri de doğru olmalıdır:
- Derleme, sunucuda
UNSAFE ASSEMBLYiznine sahip olan ilgili bir oturum açma bilgileriyle ilişkili sertifika veya asimetrik anahtarla imzalanır. Derlemeyi imzalamanız önerilir. - Veritabanında
TRUSTWORTHYözelliği olarakONayarlanmıştır ve veritabanı, sunucuda izni olan bir oturum açma bilgilerineUNSAFE ASSEMBLYaittir. Bu seçenek önerilmez.
- Derleme, sunucuda
For more information about assembly permission sets, see Design assemblies.
Examples
A. DLL'den derleme oluşturma
Aşağıdaki örnekte, SQL Server Veritabanı Altyapısı örneklerinin yerel bilgisayarın varsayılan konumuna yüklendiği ve HelloWorld.csproj örnek uygulamanın derlendiği varsayılır. Daha fazla bilgi için bkz. Merhaba Dünya Örneği.
CREATE ASSEMBLY HelloWorld
FROM '<system_drive>:\Program Files\Microsoft SQL Server\100\Samples\HelloWorld\CS\HelloWorld\bin\debug\HelloWorld.dll'
WITH PERMISSION_SET = SAFE;
Important
Azure SQL Veritabanı bir dosyadan derleme oluşturmayı desteklemez.
B. Derleme bitlerinden derleme oluşturma
Örnek bitleri (tam veya geçerli olmayan) derleme bitlerinizle değiştirin.
CREATE ASSEMBLY HelloWorld
FROM 0x4D5A900000000000
WITH PERMISSION_SET = SAFE;
Related content
- MONTAJI DEĞİŞTİR (Transact-SQL)
- DÜŞÜŞ MONTAJI (Transact-SQL)
- fonksiyon oluştur (Transact-SQL)
- PROCEDURE OLUŞTUR (Transact-SQL)
- TETİKLEYİCİ OLUŞTUR (Transact-SQL)
- TİP OLUŞTUR (Transact-SQL)
- CREATE AGGREGATE (Transact-SQL)
- EVENTDATA (Transact-SQL)
- Ortak Dil Çalışma Zamanı (CLR) Tümleştirmesi için
Kullanım Senaryoları ve Örnekleri