Megosztás a következőn keresztül:


ALTER SÉMA (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsElemzési platformrendszer (PDW)SQL Analytics-végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

Biztonságossá tétele sémák között.

Transact-SQL szintaxis konvenciók

Szemantika

-- Syntax for SQL Server and Azure SQL Database  

ALTER SCHEMA schema_name   
   TRANSFER [ <entity_type> :: ] securable_name   
[;]  

<entity_type> ::=  
    {  
    Object | Type | XML Schema Collection  
    }  
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric

ALTER SCHEMA schema_name   
   TRANSFER [ OBJECT :: ] securable_name   
[;]  

Érvek

schema_name

A célséma az aktuális adatbázisban. A biztonságossá tétel ebbe a sémába kerül. Nem lehet SYS vagy INFORMATION_SCHEMAnem.

<entity_type>

Annak az entitásnak az osztálya, amelyhez a tulajdonost módosítják. Az alapértelmezett objektum az objektum.

securable_name

A sémába áthelyezhető séma hatókörű biztonságos egy- vagy kétrészes neve.

Megjegyzések

A felhasználók és a sémák teljesen különállóak. A sémák nem egyenértékűek az adatbázis felhasználóival. A rendszerkatalógus nézeteivel azonosíthatja az adatbázis-felhasználók és a sémák közötti különbségeket.

Az ALTER SCHEMA csak az ugyanazon adatbázis sémái közötti biztonságossá tételre használható. Ha módosítani vagy elvetni szeretne egy biztonságossá tett elemet egy sémán belül, használja az adott biztonságosra vonatkozó ALTER vagy DROP utasítást.

Ha egy egyrészes nevet használ a securable_name, a rendszer a jelenleg érvényben lévő névfeloldási szabályokat használja a biztonságos kulcs megkereséséhez.

A biztonságossá tételhez társított összes engedély elvetve lesz, amikor a biztonságossá vált az új sémába. Ha a biztonságos kulcs tulajdonosa kifejezetten be van állítva, a tulajdonos változatlan marad. Ha a biztonságos eszköz tulajdonosa SÉMATULAJDONOS értékre van állítva, a tulajdonos sématulajdonos marad; az áthelyezés után azonban a SÉMATULAJDONOS feloldja az új séma tulajdonosát. Az principal_id új tulajdonos lesz NULL.

Fontos

Ha ALTER SCHEMA egy tárolt eljárást, függvényt, nézetet vagy eseményindítót egy másik sémába szeretne átvinni, az nem módosítja a definition katalógusnézet oszlopában lévő objektum sémanevét, illetve a beépített OBJECT_DEFINITION függvény eredményét. ALTER SCHEMA Ezért ezeket az objektumtípusokat nem szabad áthelyezni. Ehelyett helyezze el és hozza létre újra az objektumot az új sémában.

Ha áthelyez egy objektumot, például egy táblát vagy szinonimát, az nem frissíti automatikusan az adott objektumra mutató hivatkozásokat. Minden olyan objektumot módosítania kell, amely manuálisan hivatkozik az átvitt objektumra. Ha például áthelyez egy táblát, és egy eseményindító hivatkozik rá, az eseményindítót úgy kell módosítania, hogy az tükrözze az új séma nevét. A sys.sql_expression_dependencies használatával listázhatja az objektum függőségeit az áthelyezés előtt.

Ha módosítani szeretné egy tábla sémáját az SQL Server Management Studio használatával, az Object Explorerben kattintson a jobb gombbal a táblára, majd válassza a Tervezés lehetőséget. A Tulajdonságok ablak megnyitásához nyomja le az F4 billentyűt . A Séma mezőben válasszon ki egy új sémát.

Az ALTER SCHEMA sémaszintű zárolást használ.

Figyelmeztetés

A Fabric SQL Analytics-végponton a táblák T-SQL-en keresztüli átvitele nem támogatott. Negatív hatással lehet a OneLake és az SQL Analytics-végpont közötti szinkronizálási műveletre.

Engedélyek

Ha egy másik sémából szeretne biztonságossá tenni egy biztonságosat, az aktuális felhasználónak CONTROL engedéllyel kell rendelkeznie a biztonságos (nem séma) és alter engedéllyel a célséma esetében.

Ha a biztonságos eszköz rendelkezik az EXECUTE AS OWNER specifikációval, és a tulajdonos SÉMATULAJDONOS értékre van állítva, a felhasználónak impERSONATE engedéllyel kell rendelkeznie a célséma tulajdonosához is.

Az átvitt biztonságossá tételhez társított összes engedély elvetve lesz az áthelyezéskor.

Példák

Egy. Tábla tulajdonjogának átadása

Az alábbi példa úgy módosítja a sémátHumanResources, hogy a táblát Address a sémából a Person sémába HumanResources alakítja át.

USE AdventureWorks2022;  
GO  
ALTER SCHEMA HumanResources TRANSFER Person.Address;  
GO  

B. Egy típus tulajdonjogának átruházása

Az alábbi példa létrehoz egy típust a Production sémában, majd átviszi a típust a Person sémába.

USE AdventureWorks2022;  
GO  

CREATE TYPE Production.TestType FROM [VARCHAR](10) NOT NULL ;  
GO  

-- Check the type owner.  
SELECT sys.types.name, sys.types.schema_id, sys.schemas.name  
    FROM sys.types JOIN sys.schemas   
        ON sys.types.schema_id = sys.schemas.schema_id   
    WHERE sys.types.name = 'TestType' ;  
GO  

-- Change the type to the Person schema.  
ALTER SCHEMA Person TRANSFER type::Production.TestType ;  
GO  

-- Check the type owner.  
SELECT sys.types.name, sys.types.schema_id, sys.schemas.name  
    FROM sys.types JOIN sys.schemas   
        ON sys.types.schema_id = sys.schemas.schema_id   
    WHERE sys.types.name = 'TestType' ;  
GO  

Példák: Azure Synapse Analytics and Analytics Platform System (PDW)

C. Tábla tulajdonjogának átadása

Az alábbi példa létrehoz egy táblát Region a dbo sémában, létrehoz egy sémát Sales , majd áthelyezi a Region táblát a dbo sémából a Sales sémába.

CREATE TABLE dbo.Region   
    (Region_id INT NOT NULL,  
    Region_Name CHAR(5) NOT NULL)  
WITH (DISTRIBUTION = REPLICATE);  
GO  

CREATE SCHEMA Sales;  
GO  

ALTER SCHEMA Sales TRANSFER OBJECT::dbo.Region;  
GO