ALTER SCHEMA (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Şemalar arasında güvenli hale getirilebilir bir aktarım sağlar.

Transact-SQL söz dizimi kuralları

Sözdizimi

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

Tartışmalar

schema_name

Geçerli veritabanındaki hedef şema. Güvenli hale getirilebilir bu şemaya taşınır. veya SYSolamazINFORMATION_SCHEMA.

<entity_type>

Sahibinin değiştirildiği varlığın sınıfı. Nesne varsayılan değerdir.

securable_name

Şemaya taşınacak şema kapsamlı güvenli hale getirilebilir bir veya iki parçalı adı.

Açıklamalar

Kullanıcılar ve şemalar tamamen ayrıdır. Şemalar veritabanı kullanıcılarına eşdeğer değildir. Veritabanı kullanıcıları ile şemalar arasındaki farkları belirlemek için Sistem kataloğu görünümlerini kullanın.

ALTER SCHEMA yalnızca aynı veritabanındaki şemalar arasında güvenlikli bilgileri taşımak için kullanılabilir. Bir şema içinde güvenli hale getirilebilir bir değeri değiştirmek veya bırakmak için, bu güvenli hale getirilebilir değere özgü ALTER veya DROP deyimini kullanın.

securable_name için tek parçalı bir ad kullanılırsa, şu anda etkin olan ad çözümleme kuralları güvenli hale getirilebilir değeri bulmak için kullanılır.

Güvenli hale getirilebilir yeni şemaya taşındığında, güvenli hale getirilebilir ile ilişkili tüm izinler bırakılır. Güvenli hale getirilebilir öğesinin sahibi açıkça ayarlandıysa, sahip değişmeden kalır. Eğer güvence alımı sahibi OWNER olarak ayarlanmışsa SCHEMA , sahip OWNER olarak kalır SCHEMA ; ancak taşınmadan SCHEMA sonra OWNER yeni şemanın sahibi olarak karar verir. principal_id Yeni sahibin sahibi olacaktırNULL.

Önemli

Saklı yordamı, işlevi, görünümü veya tetikleyiciyi başka bir şemaya aktarmak için kullanırsanızALTER SCHEMA, definition katalog görünümünün sütunundaki nesnenin şema adını veya yerleşik OBJECT_DEFINITION işlevinin sonucu olarak değişmez. Bu nedenle, ALTER SCHEMA bu nesne türlerini taşımak için kullanılmamalıdır. Bunun yerine, nesneyi yeni şemasında bırakın ve yeniden oluşturun.

Tablo veya eş anlamlı gibi bir nesneyi taşımak, bu nesneye başvuruları otomatik olarak güncelleştirmez. Aktarılan nesneye el ile başvuran nesneleri değiştirmeniz gerekir. Örneğin, bir tabloyu taşırsanız ve bu tabloya tetikleyicide başvurulursa, tetikleyiciyi yeni şema adını yansıtacak şekilde değiştirmeniz gerekir. Taşımadan önce nesnedeki bağımlılıkları listelemek için sys.sql_expression_dependencies kullanın.

SQL Server Management Studio kullanarak tablonun şemasını değiştirmek için Nesne Gezgini'nde tabloya sağ tıklayın ve tasarım'ı seçin. Özellikler penceresini açmak için F4 tuşuna basın. Şema kutusunda yeni bir şema seçin.

ALTER SCHEMA şema seviyesi kilidi kullanır.

Dikkat

Doku SQL analizi uç noktasında, T-SQL aracılığıyla şemalar arasında tablo aktarımı desteklenmez. OneLake ile SQL analiz uç noktası arasındaki eşitleme işlemini olumsuz etkileyebilir.

İzinler

Güvenliği sağlanabilir bir şemayı başka bir şemadan aktarmak için, geçerli kullanıcının güvenli kılınabilir (şema değil) üzerinde CONTROL iznine ve hedef şemada ALTER iznine sahip olması gerekir.

Eğer güvenlikli cihazda OWNER spesifikasyonu EXECUTE AS varsa ve sahibi OWNER olarak ayarlanmışsa SCHEMA , kullanıcının hedef şemanın sahibinde KIMSE iznine de sahip olması gerekir.

Aktarılmakta olan güvenli hale getirilebilir ile ilişkili tüm izinler taşındığında bırakılır.

Örnekler

A. Tablonun sahipliğini aktarma

Aşağıdaki örnek, tabloyu HumanResources şemadan şemaya Address aktararak şemayı PersonHumanResources değiştirir.

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

B. Bir türün sahipliğini aktarma

Aşağıdaki örnek şemada Production bir tür oluşturur ve sonra türü şemaya Person aktarır.

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  

Örnekler: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)

C. Tablonun sahipliğini aktarma

Aşağıdaki örnek şemada Region bir tablo dbo oluşturur, bir Sales şema oluşturur ve sonra tabloyu şemadan Region şemaya dbo taşırSales.

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