Sdílet prostřednictvím


ALTEROVA SCHÉMA (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Přenáší zabezpečitelné mezi schématy.

Transact-SQL konvence syntaxe

Syntaxe

-- 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   
[;]  

Argumenty

schema_name

Cílové schéma v aktuální databázi. Zabezpečitelný se přesune do tohoto schématu. Nemůže být SYS nebo INFORMATION_SCHEMA.

<entity_type>

Třída entity, pro kterou se vlastník mění. Objekt je výchozí.

securable_name

Jednodílný nebo dvoudílný název zabezpečitelného schématu, který se dá přesunout do schématu.

Poznámky

Uživatelé a schémata jsou zcela oddělená. Schémata nejsou ekvivalentní uživatelům databáze. Pomocí zobrazení katalogu systému identifikujte všechny rozdíly mezi uživateli databáze a schématy.

ALTER SCHEMA lze použít pouze k přesunu zabezpečitelných mezi schématy ve stejné databázi. Chcete-li změnit nebo odstranit zabezpečitelný v rámci schématu, použijte příkaz ALTER nebo DROP specifický pro tento zabezpečitelný.

Pokud se pro securable_name používá název jedné části, pravidla překladu názvů, která jsou aktuálně platná, se použijí k vyhledání zabezpečitelného názvu.

Všechna oprávnění přidružená k zabezpečitelnému se zahodí při přesunu zabezpečitelného schématu do nového schématu. Pokud je vlastník zabezpečitelné explicitně nastaven, zůstane vlastník beze změny. Pokud je vlastník zabezpečitelného objektu nastaven na SCHEMA OWNER, vlastník zůstane vlastníkem schématu; Po přesunutí vlastníka schématu se však přeloží na vlastníka nového schématu. Nový principal_id vlastník bude NULL.

Důležité

Pokud používáte ALTER SCHEMA k přenosu uložené procedury, funkce, zobrazení nebo triggeru do jiného schématu, nezmění se název schématu, pokud existuje, objektu ve definition sloupci zobrazení katalogu sys.sql_modules nebo v důsledku integrované funkce OBJECT_DEFINITION . ALTER SCHEMA Proto by neměly být použity k přesunutí těchto typů objektů. Místo toho odstraňte a znovu vytvořte objekt v novém schématu.

Přesunutí objektu, jako je tabulka nebo synonyma, automaticky neaktualizuje odkazy na tento objekt. Je nutné upravit všechny objekty, které odkazují na přenesený objekt ručně. Pokud například přesunete tabulku a na tuto tabulku se odkazuje v triggeru, musíte aktivační událost upravit tak, aby odrážela nový název schématu. Pomocí sys.sql_expression_dependencies před přesunutím vypíšete závislosti na objektu.

Pokud chcete změnit schéma tabulky pomocí aplikace SQL Server Management Studio, klikněte v Průzkumníku objektů pravým tlačítkem myši na tabulku a pak vyberte Návrh. Stisknutím klávesy F4 otevřete okno Vlastnosti. V poli Schéma vyberte nové schéma.

ALTER SCHEMA používá zámek na úrovni schématu.

Upozornění

V koncovém bodu analýzy SQL Fabric není přenos tabulky mezi schématy prostřednictvím T-SQL podporován. Může negativně ovlivnit operaci synchronizace mezi onelakem a koncovým bodem analýzy SQL.

Povolení

Chcete-li přenést zabezpečitelný z jiného schématu, musí mít aktuální uživatel oprávnění CONTROL k zabezpečitelnému (ne schématu) a alter pro cílové schéma.

Pokud má zabezpečitelná specifikace EXECUTE AS OWNER a vlastník je nastaven na SCHEMA OWNER, uživatel musí mít také oprávnění IMPERSONATE pro vlastníka cílového schématu.

Všechna oprávnění přidružená k zabezpečitelnému přenosu se při přesunu zahodí.

Příklady

A. Převod vlastnictví tabulky

Následující příklad upraví schéma HumanResources přenesením tabulky Address ze schématu Person do schématu HumanResources .

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

B. Převod vlastnictví typu

Následující příklad vytvoří typ ve schématu Production a potom přenese typ do schématu Person .

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říklady: Azure Synapse Analytics a Analytický platformový systém (PDW)

C. Převod vlastnictví tabulky

Následující příklad vytvoří ve schématu tabulkuRegion, vytvoří dbo schéma a pak přesune Sales tabulku ze Region schématu do schématudbo.Sales

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