Delen via


ALTER SCHEMA (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricWarehouse in Microsoft Fabric

Hiermee wordt een beveiligbaar tussen schema's overgedragen.

Transact-SQL syntaxis-conventies

Syntaxis

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

Argumenten

schema_name

Het doelschema in de huidige database. Het beveiligbare wordt verplaatst naar dit schema. Kan het niet zijn SYS of INFORMATION_SCHEMA.

<entity_type>

De klasse van de entiteit waarvoor de eigenaar wordt gewijzigd. Object is de standaardwaarde.

securable_name

De een- of tweedelige naam van een beveiligbaar schema dat kan worden verplaatst naar het schema.

Opmerkingen

Gebruikers en schema's zijn volledig gescheiden. Schema's zijn niet gelijk aan databasegebruikers. Gebruik systeemcatalogusweergaven om eventuele verschillen tussen databasegebruikers en schema's te identificeren.

ALTER SCHEMA kan alleen worden gebruikt om beveiligbare items tussen schema's in dezelfde database te verplaatsen. Als u een beveiligbaar binnen een schema wilt wijzigen of verwijderen, gebruikt u de instructie ALTER of DROP die specifiek is voor die beveiligbare instructie.

Als er een eendelige naam wordt gebruikt voor securable_name, worden de regels voor naamomzetting die momenteel van kracht zijn, gebruikt om de beveiligbare naam te vinden.

Alle machtigingen die aan het beveiligbare zijn gekoppeld, worden verwijderd wanneer het beveiligbaar wordt verplaatst naar het nieuwe schema. Als de eigenaar van het beveiligbare expliciet is ingesteld, blijft de eigenaar ongewijzigd. Als de eigenaar van het beveiligbare is ingesteld op SCHEMA-EIGENAAR, blijft de eigenaar SCHEMA-EIGENAAR; Na het verplaatsen van schema-EIGENAAR wordt echter omgezet in de eigenaar van het nieuwe schema. De principal_id nieuwe eigenaar zal zijn NULL.

Belangrijk

Als u een ALTER SCHEMA opgeslagen procedure, functie, weergave of trigger naar een ander schema overbrengt, wordt de schemanaam, indien aanwezig, niet gewijzigd van het object in de definition kolom van de catalogusweergave sys.sql_modules of in het resultaat van de ingebouwde functie OBJECT_DEFINITION . ALTER SCHEMA Daarom mag niet worden gebruikt om deze objecttypen te verplaatsen. In plaats daarvan zet u het object neer en maakt u het opnieuw in het nieuwe schema.

Als u een object zoals een tabel of synoniem verplaatst, worden verwijzingen naar dat object niet automatisch bijgewerkt. U moet alle objecten wijzigen die handmatig verwijzen naar het overgedragen object. Als u bijvoorbeeld een tabel verplaatst en deze tabel wordt verwezen in een trigger, moet u de trigger wijzigen om de nieuwe schemanaam weer te geven. Gebruik sys.sql_expression_afhankelijkheden om afhankelijkheden van het object weer te geven voordat u het verplaatst.

Als u het schema van een tabel wilt wijzigen met behulp van SQL Server Management Studio, klikt u in Objectverkenner met de rechtermuisknop op de tabel en selecteert u Vervolgens Ontwerpen. Druk op F4 om het venster Eigenschappen te openen. Selecteer een nieuw schema in het vak Schema .

ALTER SCHEMA maakt gebruik van een schemaniveauvergrendeling.

Waarschuwing

Het overdragen van een tabel tussen schema's via T-SQL wordt niet ondersteund in het eindpunt voor SQL-analyse van Fabric. Dit kan een negatieve invloed hebben op de synchronisatiebewerking tussen OneLake en sql-analyse-eindpunt.

Machtigingen

Als u een beveiligbaar van een ander schema wilt overdragen, moet de huidige gebruiker de machtiging CONTROL hebben voor het beveiligbare (niet-schema) en alter-machtigingen voor het doelschema.

Als voor het beveiligbare een EXECUTE AS OWNER-specificatie is ingesteld en de eigenaar is ingesteld op SCHEMA-EIGENAAR, moet de gebruiker ook IMITATE-machtigingen hebben voor de eigenaar van het doelschema.

Alle machtigingen die zijn gekoppeld aan de beveiligbare die worden overgedragen, worden verwijderd wanneer deze worden verplaatst.

Voorbeelden

Eén. Eigendom van een tabel overdragen

In het volgende voorbeeld wordt het schema HumanResources gewijzigd door de tabel Address van het schema Person over te zetten naar het HumanResources schema.

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

B. Eigendom van een type overdragen

In het volgende voorbeeld wordt een type in het Production schema gemaakt en wordt het type vervolgens overgedragen naar het Person schema.

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  

Voorbeelden: Azure Synapse Analytics and Analytics Platform System (PDW)

C. Eigendom van een tabel overdragen

In het volgende voorbeeld wordt een tabel Region in het dbo schema gemaakt, een Sales schema gemaakt en wordt de Region tabel van het dbo schema naar het Sales schema verplaatst.

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