ALTER ASSEMBLY (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL Managed Instance

Módosítja az assembly SQL Server katalógustulajdonságait az assembly tulajdonságai módosításával. ALTER ASSEMBLYfrissíti a .NET Framework modulok legújabb példányára, amely tartalmazza a megvalósítását, és hozzáadja vagy eltávolítja hozzá tartozó fájlokat. Az összeállításokat a használatával CREATE ASSEMBLYhozzuk létre.

Transact-SQL szintaxis konvenciók

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

Az a szerkezet neve, amit módosítani szeretnél. assembly_name már léteznie kell az adatbázisban.

A client_assembly_specifier <> | <assembly_bits>

Frissíti az assembly egy legfrissebb .NET Framework modul példányát, amely tartalmazza a megvalósítást. Ez az opció csak akkor használható, ha a megadott assembly nem kapcsolódik hozzá fájlokhoz.

<client_assembly_specifier> Megadja a hálózatot vagy helyi helyet, ahol a frissített összeállítás található. A hálózati hely tartalmazza a számítógép nevét, a megosztás nevét és az adott megosztáson belüli útvonalat. manifest_file_name megadja annak a fájlnak a nevét, amely tartalmazza az assembly manifestjét.

Important

Azure SQL Database nem támogatja fájl hivatkozását.

<assembly_bits> a bináris érték az összeszereléshez.

Külön ALTER ASSEMBLY nyilatkozatokat kell kiadni minden olyan független közlésről, amely szintén frissítést igényel.

PERMISSION_SET = { BIZTONSÁGOS | EXTERNAL_ACCESS | VESZÉLYES }

Megadja a .NET Framework kód hozzáférési jogosultsági készlet tulajdonságát az összeszereléshez. További információért erről a tulajdonságról lásd: CREATE ASSEMBLY.

Az PERMISSION_SET opciót befolyásolja a szigorú biztonsági opció . Ha clr strict security engedélyezve, minden összeállítást úgy kezelnek, mint UNSAFE.

Az EXTERNAL_ACCESS és UNSAFE opciók nem elérhetők egy zárt adatbázisban.

LÁTHATÓSÁG = { ON | LE }

Jelzi, hogy az assembly látható-e közös nyelvi futási idejű (CLR) függvények, tárolt eljárások, triggerek, felhasználó által definiált típusok és felhasználó által definiált aggregált függvények létrehozásához ellene. Ha a konfigurációt állítva OFF, a assembly csak más összeállítások által meghívható. Ha már léteznek CLR adatbázis objektumok az assembly ellen, az assembly láthatósága nem változtatható. A assembly_name által hivatkozott összeállítások alapértelmezetten nem láthatóak lesznek.

ELLENŐRIZETLEN ADATOK

Alapértelmezés ALTER ASSEMBLY szerint akkor hibás, ha ellenőriznie kell az egyes táblázatsorok konzisztenciáját. Ez az opció lehetővé teszi, hogy a próbákat későbbi időpontra halaszthassák, ha használjuk DBCC CHECKTABLE. Ha ez van megadva, az SQL Server végrehajtja az ALTER ASSEMBLY utasítást, még akkor is, ha az adatbázisban vannak táblázatok, amelyek a következő feltételeket tartalmazzák:

  • Kitartó kiszámított oszlopok, amelyek közvetlenül vagy közvetve hivatkoznak a metódusokra az összeszerelésben, Transact-SQL függvényeken vagy metódusokon keresztül.

  • CHECK olyan korlátozások, amelyek közvetlenül vagy közvetve hivatkoznak a módszerekre az összeszerelésben.

  • A szerelvénytől függő, felhasználó által definiált CLR-típus oszlopai, és a típus egy UserDefined (nemNative) szerializációs formátumot implementál.

  • CLR felhasználó által definiált típusú oszlopok, amelyek a használatával létrehozott WITH SCHEMABINDINGnézetekre hivatkoznak.

Ha bármilyen CHECK korlátozás van, akkor letiltják és bizalmatlannak jelölik. Bármely táblázat, amely oszlopokat tartalmaz az összeállítástól függően, jelölve nem lévő adatokat tartalmaz, amíg ezeket a táblákat kifejezetten nem ellenőrzik.

Ezt az opciót csak a db_owner és db_ddlowner fix adatbázis szerepkörének tagjai adhatják meg.

Ehhez az ALTER ANY SCHEMA opcióhoz engedély szükséges.

További információért lásd: Implementáló összeszerelések.

DOBD FÁJLT { file_name [ ,... n ] | MIND }

Eltávolítja az adatbázisból az assembly fájlnevét, vagy az összeállításhoz tartozó összes fájlt. Ha ezt ADD FILE használjuk, DROP FILE akkor először hajtja végre. Ez lehetővé teszi, hogy ugyanazzal a fájlnévvel rendelkező fájlt cserélj.

Note

Ez az opció nem elérhető zárt adatbázisban vagy Azure SQL Database-ben.

FÁJL HOZZÁADÁSA A { client_file_specifier [MINT file_name ] | file_bits MINT file_name }

Feltölt egy fájlt, amelyet az összeállításhoz köt, például forráskódot, hibakereső fájlokat vagy más kapcsolódó információkat, a szerverre, és láthatóvá teszi a sys.assembly_files katalógusnézetben. client_file_specifier meghatározza a fájl feltöltési helyét. file_bits helyette használható a fájlt alkotó bináris értékek listájának megadására. file_name megadja a fájl SQL Server példányában tárolandó nevet is. file_name meg kell határozni, ha file_bits meg van jelölve, és opcionális, ha client_file_specifier meg van jelölve. Ha file_name nincs megadva, akkor a client_file_specifier file_name része file_name marad.

Note

Ez az opció nem elérhető zárt adatbázisban vagy Azure SQL Database-ben.

A kódhozzáférés biztonsága már nem támogatott

A CLR a .NET-keretrendszerben a Code Access Securityt (CAS) használja, amely már nem támogatott biztonsági határként. Előfordulhat, hogy egy PERMISSION_SET = SAFE létrehozott CLR-szerelvény hozzáférhet külső rendszererőforrásokhoz, meghívhatja a nem felügyelt kódot, és sysadmin-jogosultságokat szerezhet be. Az SQL Server 2017 (14.x) és újabb verzióiban a sp_configure lehetőség, clr szigorú biztonsági, növeli a CLR-szerelvények biztonságát. A clr strict security alapértelmezés szerint engedélyezve van, és úgy kezeli a SAFE és EXTERNAL_ACCESS szerelvényeket, mintha UNSAFEjelölték volna őket. A clr strict security lehetőség letiltható a visszamenőleges kompatibilitás érdekében, de nem ajánlott.

Javasoljuk, hogy az összes összetevőt egy tanúsítvánnyal vagy aszimmetrikus kulccsal írja alá, amelyhez tartozik egy megfelelő jogosultsággal rendelkező bejelentkezés, amely UNSAFE ASSEMBLY engedélyt kapott az master adatbázisban. Az SQL Server rendszergazdái könyvtárakat is hozzáadhatnak egy listához, amelyekben az adatbázismotornak meg kell bíznia. További információ: sys.sp_add_trusted_assembly.

Remarks

ALTER ASSEMBLY nem zavarja meg a jelenleg futó munkameneteket, amelyek a módosított assembly kódját futtatják. A jelenlegi ülések a végrehajtást a assembly változatlan részeinek használatával fejezik be.

Ha a FROM záradék meg van megadva, ALTER ASSEMBLY frissítse az összeállítást a megadott modulok legújabb példányai alapján. Mivel előfordulhatnak CLR függvények, tárolt eljárások, triggerek, adattípusok és felhasználó által definiált összesített függvények az SQL Server példányában, amelyek már definiálva vannak az assembly ellen, a ALTER ASSEMBLY mondatszám újraköti őket a assembly legújabb implementációjához. Ennek az újrakötésnek a megvalósításához a CLR függvényekhez, tárolt eljárásokhoz és triggerekhez tartozó metódusoknak továbbra is létezniük kell a módosított összeállításban ugyanazokkal az aláírásokkal. Azok az osztályok, amelyek a CLR felhasználó által definiált típusokat és felhasználói definiált aggregált függvényeket valósítják meg, továbbra is teljesíteniük kell a felhasználó által definiált típus vagy aggregált típus követelményeit.

Caution

Ha nincs megadva WITH UNCHECKED DATA, az SQL Server megpróbálja megakadályozni a ALTER ASSEMBLY végrehajtását, ha az új szerelvényverzió hatással van a táblák, indexek vagy egyéb állandó helyek meglévő adataira. Az SQL Server azonban nem garantálja, hogy a kiszámított oszlopok, indexek, indexelt nézetek vagy kifejezések konzisztensek lesznek az alapul szolgáló rutinokkal és típusokkal, amikor a CLR assembly frissül. Légy óvatos a végrehajtáskor ALTER ASSEMBLY , hogy ne egyezzen meg egy kifejezés eredménye és az adott kifejezés alapján tárolt érték között.

ALTER ASSEMBLY módosítja a szerelvény verzióját. A közgyűlés kultúrája és nyilvános kulcsjogkivonata változatlan marad.

Az ALTER ASSEMBLY állítás nem használható az alábbi elemek megváltoztatására:

  • Az SQL Server egy példányában található CLR függvények, aggregált függvények, tárolt eljárások és triggerek aláírásai, amelyek az assembly adataira hivatkoznak. ALTER ASSEMBLYakkor bukik el, ha az SQL Server nem tudja újrakötni a .NET Framework adatbázis-objektumait az SQL Server-ben az új assembly verzióval.

  • A kombinációban lévő módszerek aláírásai, amelyeket más összeállításokból hívnak.

  • Az összeszereléstől függő összeállítások listája, ahogy azt az DependentList assembly tulajdonsága hivatkozik.

  • Egy metódus indexelhetősége, hacsak nincsenek indexek vagy tartós kiszámított oszlopok attól függően, akár közvetlenül, akár közvetve.

  • A FillRow CLR táblaértékű függvények metódusnév attribútumja.

  • Az Accumulate és Terminate metódus aláírása a felhasználó által definiált aggregátumokhoz.

  • Rendszerösszeállítások.

  • Assembly tulajdonjog. A ALTER AUTHORIZATION használható helyette.

Ezen túl, azoknál a assemblereknél, amelyek felhasználói definiált típusokat valósítanak meg, ALTER ASSEMBLY csak a következő változtatásokra használhatók:

  • A felhasználó által definiált típusosztály nyilvános metódusainak módosítása, amennyiben az aláírások vagy attribútumok nem változnak.

  • Új nyilvános módszerek hozzáadása

  • Bármilyen módon módosítani a privát módszereket.

A natív serializált felhasználó által definiált típusba tartozó mezők, beleértve az adattagokat vagy alaposztályokat is, nem változtathatók meg a használatával ALTER ASSEMBLY. Az összes többi módosítás nem támogatott.

Ha ADD FILE FROM nincs megadva, ALTER ASSEMBLY akkor eltávolítja az összeállításhoz kapcsolódó fájlokat.

Ha ALTER ASSEMBLY adatzáradék UNCHECKED nélkül hajtják végre, ellenőrzéseket végeznek, hogy az új assembly verzió nem befolyásolja-e a táblák meglévő adatait. Attól függően, mennyi adatot kell ellenőrizni, ez a lépés befolyásolhatja a teljesítményt.

Permissions

Engedély ALTER szükséges az összeszereléshez. További követelmények a következők:

  • Egy olyan assembly módosításához, amelynek meglévő jogosultsági halmaza EXTERNAL_ACCESS, engedélyt EXTERNAL ACCESS ASSEMBLY igényel a szerveren.

  • Egy olyan assembler módosításához, amelynek meglévő jogosultságkészlete van UNSAFE , engedély UNSAFE ASSEMBLY szükséges a szerveren.

  • Egy assembly engedélykészletének megváltoztatásához EXTERNAL_ACCESSa EXTERNAL ACCESS ASSEMBLY szerveren engedély szükséges.

  • Egy assembly engedélykészletének megváltoztatásához UNSAFEa UNSAFE ASSEMBLY szerveren engedély szükséges.

  • A meghatározáshoz WITH UNCHECKED DATA engedély szükséges ALTER ANY SCHEMA .

Jogosultságok CLR szigorú biztonsággal

Az alábbi jogosultságok szükségesek a CLR assembly módosításához, ha clr strict security engedélyezve van:

  • A felhasználónak rendelkeznie kell az ALTER ASSEMBLY engedéllyel

  • És az alábbi feltételek egyikének is igaznak kell lennie:

    • A szerelvény egy tanúsítvánnyal vagy aszimmetrikus kulccsal van aláírva, amelyhez tartozik egy olyan bejelentkezés, amely rendelkezik UNSAFE ASSEMBLY engedéllyel a kiszolgálón. Ajánlott aláírni a szerelvényt.

    • Az adatbázis tulajdonsága a TRUSTWORTHY értékre van beállítva, és az adatbázis tulajdonosa egy bejelentkezés, amely rendelkezik a ON engedéllyel a kiszolgálón. Ez a beállítás nem ajánlott.

További információért az assembly jogkezelő halmazokról lásd: Összeállítások tervezése.

Examples

A. Frissítés egy gyűlésre

A következő példa frissíti az assembly ComplexNumber legfrissebb .NET Framework modulokat, amelyek a megvalósítást tárolják.

Note

Az összeszerelés ComplexNumber a mintaszkriptekkel hozható UserDefinedDataType létre. További információért lásd: Felhasználó által definiált típus.

 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 nem támogatja fájl hivatkozását.

B. Fájl hozzáadása egy assembly hozzá, hogy hozzájuk kapcsolja

A következő példa feltölti a forráskódfájlt Class1.cs , amelyet az assembly MyClassfájlhoz kötünk. Ez a példa feltételezi, hogy az assembly MyClass már el van hozva az adatbázisban.

ALTER ASSEMBLY MyClass
ADD FILE FROM 'C:\MyClassProject\Class1.cs';

Important

Azure SQL Database nem támogatja fájl hivatkozását.

C. Módosítsd a gyűlés engedélyeit

A következő példa megváltoztatja az assembly ComplexNumber engedélykészletét SAFE-ről .EXTERNAL ACCESS

ALTER ASSEMBLY ComplexNumber WITH PERMISSION_SET = EXTERNAL_ACCESS;