Aracılığıyla paylaş


ALTER ŞEMA (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üvenli hale getirilebilirleri 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. Güvenli hale getirilebilir sahibi SCHEMA OWNER olarak ayarlandıysa, sahip ŞEMA SAHİBİ olarak kalır; ancak, şemayı taşımadan sonra SCHEMA OWNER yeni şemanın sahibine çözümlenir. 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 bir şema düzeyi 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.

Güvenli hale getirilebilir öğenin üzerinde SAHIP OLARAK YÜRÜT belirtimi varsa ve sahip SCHEMA OWNER olarak ayarlandıysa, kullanıcının hedef şemanın sahibi üzerinde KIMLIĞE BÜRÜNme 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