Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na:SQL ServerAzure
SQL Managed Instance
Mění assembler úpravou vlastností katalogu SQL Server assembleru.
ALTER ASSEMBLYobnoví ji na nejnovější kopii modulů .NET Frameworku, které obsahují jeho implementaci, a přidává nebo odebírá soubory s ním spojené. Sestavy se vytvářejí pomocí .CREATE ASSEMBLY
Syntax
ALTER ASSEMBLY assembly_name
[ FROM <client_assembly_specifier> | <assembly_bits> ]
[ WITH <assembly_option> [ , ...n ] ]
[ DROP FILE { file_name [ , ...n ] | ALL } ]
[ ADD FILE FROM
{
client_file_specifier [ AS file_name ]
| file_bits AS file_name
} [ , ...n ]
] [ ; ]
<client_assembly_specifier> ::=
'\\computer_name\share-name\ [ path\ ] manifest_file_name '
| '[ local_path\ ] manifest_file_name'
<assembly_bits> ::=
{ varbinary_literal | varbinary_expression }
<assembly_option> ::=
PERMISSION_SET = { SAFE | EXTERNAL_ACCESS | UNSAFE }
| VISIBILITY = { ON | OFF }
| UNCHECKED DATA
Arguments
assembly_name
Název sestavy, kterou chcete upravit. assembly_name už musí v databázi existovat.
Z <client_assembly_specifier> | <assembly_bits>
Aktualizuje assembler na nejnovější kopii modulů .NET Frameworku, které obsahují jeho implementaci. Tuto možnost lze použít pouze tehdy, pokud nejsou k dané sestavě přiřazeny žádné soubory.
<client_assembly_specifier> specifikuje síť nebo lokální místo, kde se sestava obnovující nachází. Umístění v síti zahrnuje název počítače, název sdíleného díla a cestu uvnitř tohoto sdíleného díla.
manifest_file_name specifikuje název souboru, který obsahuje manifest assembleru.
Important
Azure SQL Database nepodporuje odkazování na soubor.
<assembly_bits> je binární hodnota pro sestavu.
Pro jakékoli závislé shromáždění, která také vyžadují aktualizaci, musí být vydána samostatná ALTER ASSEMBLY prohlášení.
PERMISSION_SET = { SAFE | EXTERNAL_ACCESS | NEBEZPEČNÉ }
Specifikuje vlastnost přístupu k kódu .NET Framework pro assembler. Pro více informací o této vlastnosti viz CREATE ASSEMBLY.
Možnost PERMISSION_SET je ovlivněna clr přísnou bezpečnostní možností. Když clr strict security je povolena, všechny assemble jsou považovány za .UNSAFE
Možnosti EXTERNAL_ACCESS a UNSAFE nejsou dostupné v uzavřené databázi.
VIDITELNOST = { ON | VYPNUTO }
Označuje, zda je assembler viditelný pro vytváření běžných funkcí v běžném jazyce (CLR), uložených procedur, spouštěčů, uživatelsky definovaných typů a uživatelsky definovaných agregovaných funkcí proti němu. Pokud je nastaveno na OFF, je sestava určena k volání pouze jinými sestavami. Pokud jsou již existující objekty databáze CLR vytvořeny proti assembleru, viditelnost assembleru nelze změnit. Jakékoliv sestavy, na které assembly_name odkazuje, jsou ve výchozím nastavení nahrány jako neviditelné.
NEKONTROLOVANÁ DATA
Ve výchozím nastavení selhává, ALTER ASSEMBLY pokud musí ověřit konzistenci jednotlivých řádků tabulky. Tato možnost umožňuje odložit kontroly na pozdější dobu pomocí .DBCC CHECKTABLE Pokud je to specifikováno, SQL Server vykoná ALTER ASSEMBLY příkaz i v případě, že v databázi jsou tabulky obsahující následující podmínky:
Persistované vypočítané sloupce, které buď přímo, nebo nepřímo odkazují na metody v assembleru, prostřednictvím Transact-SQL funkcí nebo metod.
CHECKomezení, která přímo či nepřímo odkazují na metody v assembleru.Sloupce uživatelem definovaného typu CLR, které závisí na sestavení, a typ implementuje formát serializace
UserDefined(bezNative).Sloupce uživatelsky definovaného typu CLR, které odkazují na pohledy vytvořené pomocí .
WITH SCHEMABINDING
Pokud jsou přítomna nějaká CHECK omezení, jsou deaktivována a označena jako nedůvěryhodná. Tabulky obsahující sloupce v závislosti na sestavě jsou označeny jako obsahující nekontrolovaná data, dokud nejsou tyto tabulky explicitně kontrolovány.
Tuto možnost mohou specifikovat pouze členové rolí db_owner a db_ddlowner pevné databáze.
Vyžaduje oprávnění ALTER ANY SCHEMA k zadaní této možnosti.
Pro více informací viz Implementace assemblies.
DROP FILE { file_name [ ,... n ] | VŠICHNI }
Odstraní název souboru spojený s assemblerem, nebo všechny soubory spojené s assemblerem, z databáze. Pokud se použije s ADD FILE , který následuje, DROP FILE vykoná se jako první. To vám umožní nahradit soubor stejným jménem.
Note
Tato možnost není dostupná v uzavřené databázi ani v Azure SQL Database.
PŘIDEJ SOUBOR Z { client_file_specifier [ JAKOfile_name ] | file_bits JAK file_name }
Nahraje soubor, který má být přiřazen k sestavě, například zdrojový kód, ladicí soubory nebo jiné související informace, na server a zpřístupní ho v sys.assembly_files katalogovém zobrazení.
client_file_specifier specifikuje místo, odkud se soubor nahrá.
file_bits lze místo toho použít k určení seznamu binárních hodnot, které soubor tvoří.
file_name specifikuje název, pod kterým by měl být soubor uložen v instanci SQL Server.
file_name musí být specifikován, pokud je file_bits specifikováno, a je volitelné, pokud je client_file_specifier specifikováno. Pokud file_name není specifikováno, file_name část client_file_specifier se používá jako file_name.
Note
Tato možnost není dostupná v uzavřené databázi ani v Azure SQL Database.
Zabezpečení přístupu kódu se už nepodporuje.
CLR používá zabezpečení přístupu kódu (CAS) v rozhraní .NET Framework, které se už nepodporuje jako hranice zabezpečení. Sestavení CLR vytvořené s PERMISSION_SET = SAFE může mít přístup k externím systémovým prostředkům, volat nespravovaný kód a získat oprávnění správce systému. V SQL Serveru 2017 (14.x) a novějších verzích, možnost sp_configure, přísné zabezpečení CLR, vylepšuje zabezpečení sestavení CLR.
clr strict security je ve výchozím nastavení povolen a se sestaveními SAFE a EXTERNAL_ACCESS zachází, jako by byla označena UNSAFE. Možnost clr strict security může být zakázaná kvůli zpětné kompatibilitě, ale nedoporučuje se.
Doporučujeme podepsat všechna sestavení certifikátem nebo asymetrickým klíčem s odpovídajícím přihlašovacím jménem, kterému bylo uděleno oprávnění UNSAFE ASSEMBLY v databázi master. Správci SQL Serveru mohou také přidat sestavení do seznamu sestavení, kterým má databázový stroj důvěřovat. Další informace naleznete v tématu sys.sp_add_trusted_assembly.
Remarks
ALTER ASSEMBLY Nenarušuje aktuálně běžící relace, které běží kód v sestave, která se upravuje. Aktuální relace dokončují provádění pomocí nezměněných bitů assembleru.
Pokud je klauzule FROM specifikována, aktualizuje ALTER ASSEMBLY assembler vzhledem k nejaktuálnějším kopiím poskytnutých modulů. Protože v instanci SQL Server mohou být CLR funkce, uložené procedury, spouštěče, datové typy a uživatelsky definované agregované funkce, které jsou již definovány proti assembleru, příkaz ALTER ASSEMBLY je znovu připojí k nejnovější implementaci assembleru. Pro toto převázání musí metody, které mapují na CLR funkce, uložené procedury a spouštěče, stále existovat v upravené sestavě se stejnými podpisy. Třídy, které implementují uživatelsky definované typy CLR a uživatelem definované agregátorové funkce, musí stále splňovat požadavky pro to, aby byly uživatelsky definovaným typem nebo agregátem.
Caution
Pokud není zadaný WITH UNCHECKED DATA, SQL Server se pokusí zabránit spuštění ALTER ASSEMBLY, pokud nová verze sestavení ovlivní existující data v tabulkách, indexech nebo jiných trvalých lokalitách. SQL Server však nezaručuje, že vypočtené sloupce, indexy, indexované pohledy nebo výrazy budou konzistentní se základními rutinami a typy při aktualizaci CLR assembleru. Při provádění ALTER ASSEMBLY buďte opatrní, abyste se ujistili, že mezi výsledkem výrazu a hodnotou založenou na tomto výrazu uloženém v assembleru nedochází k nesouladu.
ALTER ASSEMBLY změní verzi sestavení. Token jazykové verze a veřejného klíče sestavení zůstávají stejné.
Příkaz ALTER ASSEMBLY nelze použít ke změně následujících položek:
Podpisy CLR funkcí, agregovaných funkcí, uložených procedur a spouštěčů v instanci SQL Server, které odkazují na assembler. ALTER ASSEMBLYselže, když SQL Server nedokáže převázat .NET Framework databázové objekty v SQL Server s novou verzí assembleru.
Podpisy metod v assembleru, které jsou volány z jiných assemblerů.
Seznam sestav, které závisí na sestavení, jak je uvedeno ve
DependentListvlastnosti shromáždění.Indexovatelnost metody, pokud nejsou žádné indexy nebo trvalé vypočtené sloupce závislé na dané metodě, ať už přímo nebo nepřímo.
Atribut
FillRowmetody pro tabulkové funkce CLR.Podpis
AccumulateaTerminatemetody pro uživatelem definované agregáty.Systémové sestavy.
Vlastnictví shromáždění. Místo toho použijte ALTER AUTHORIZATION.
Navíc pro assemblery, které implementují uživatelsky definované typy, ALTER ASSEMBLY lze použít pouze pro následující změny:
Úprava veřejných metod uživatelem definované typové třídy, pokud nejsou změněny podpisy nebo atributy.
Přidávání nových veřejných metod.
Jakýmkoli způsobem upravovat soukromé metody.
Pole obsažená v nativně serializovaném uživatelsky definovaném typu, včetně datových členů nebo základních tříd, nelze měnit pomocí ALTER ASSEMBLY. Všechny ostatní změny nejsou podporovány.
Pokud ADD FILE FROM není specifikováno, zrušte ALTER ASSEMBLY všechny soubory spojené s sestavou.
Pokud ALTER ASSEMBLY je provedena bez datové klauzule UNCHECKED , provádějí se kontroly, zda nová verze assembleru neovlivňuje existující data v tabulkách. V závislosti na množství dat, která je třeba zkontrolovat, může tento krok ovlivnit výkon.
Permissions
Vyžaduje ALTER povolení k montáži. Další požadavky jsou následující:
Pro změnu assembleru, jehož stávající množina oprávnění je ,
EXTERNAL_ACCESSjeEXTERNAL ACCESS ASSEMBLYpotřeba povolení na serveru.Pro změnu assembleru, jehož stávající oprávnění je
UNSAFEpotřeba,UNSAFE ASSEMBLYje potřeba povolení na serveru.Pro změnu souboru oprávnění assembleru
EXTERNAL_ACCESSna ,EXTERNAL ACCESS ASSEMBLYje potřeba povolení na serveru.Pro změnu souboru oprávnění assembleru
UNSAFEna ,UNSAFE ASSEMBLYje potřeba povolení na serveru.Specifikace
WITH UNCHECKED DATAvyžadujeALTER ANY SCHEMApovolení.
Oprávnění s CLR přísnou bezpečností
Následující oprávnění jsou vyžadována ke změně sestavení CLR při clr strict security jeho povolení:
Uživatel musí mít
ALTER ASSEMBLYoprávnění.A musí být také splněna jedna z následujících podmínek:
Sestavení je podepsáno certifikátem nebo asymetrickým klíčem, který má odpovídající přihlášení s oprávněním
UNSAFE ASSEMBLYna serveru. Doporučuje se podepsání sestavení.Databáze má vlastnost
TRUSTWORTHYnastavenou naONa databáze je vlastněna přihlášením, které má oprávněníUNSAFE ASSEMBLYna serveru. Tato možnost se nedoporučuje.
Pro více informací o souborech oprávnění assemblerů viz Návrh assemblies.
Examples
A. Obnovte sestavu
Následující příklad aktualizuje assembler ComplexNumber na nejnovější kopii modulů .NET Frameworku, které obsahují jeho implementaci.
Note
Assembler ComplexNumber lze vytvořit spuštěním ukázkových skriptů UserDefinedDataType . Pro více informací viz User Defined Type.
ALTER ASSEMBLY ComplexNumber
FROM 'C:\Program Files\Microsoft SQL Server\130\Tools\Samples\1033\Engine\Programmability\CLR\UserDefinedDataType\CS\ComplexNumber\obj\Debug\ComplexNumber.dll'
Important
Azure SQL Database nepodporuje odkazování na soubor.
B. Přidejte soubor pro přiřazení k assembleru
Následující příklad nahraje soubor Class1.cs zdrojového kódu, který má být přiřazen k assembleru MyClass. Tento příklad předpokládá, že assembler MyClass je již vytvořen v databázi.
ALTER ASSEMBLY MyClass
ADD FILE FROM 'C:\MyClassProject\Class1.cs';
Important
Azure SQL Database nepodporuje odkazování na soubor.
C. Změna oprávnění shromáždění
Následující příklad mění množinu oprávnění assembleru ComplexNumber z SAFE na EXTERNAL ACCESS.
ALTER ASSEMBLY ComplexNumber WITH PERMISSION_SET = EXTERNAL_ACCESS;