alter schema (Transact-SQL)

Bir güvenliği sağlanabilir şemalar arasında aktarır.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

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

<entity_type> ::=
    {
    Object | Type | XML Schema Collection
    }

Bağımsız değişkenler

  • schema_name
    Geçerli veritabanında içine güvenliği sağlanabilir taşınacak bir şema addır.Cannot be SYS or INFORMATION_SCHEMA.

  • <entity_type>
    Sahibi değiştiriliyor varlık sınıfıdır.Varsayılan nesnedir.

  • securable_name
    Bir bölümü veya iki bölümü şemasına taşınacak bir şema içerdiği güvenliği sağlanabilir adıdır.

Açıklamalar

Kullanıcıları ve şemaları tamamen ayrıdır.Daha fazla bilgi için, bkz. Kullanıcı şeması ayrımı.

alter schema yalnızca güvenli hale Getirilebilenler aynı veritabanında şemalar arasında taşımak için kullanılabilir.Bir güvenliği sağlanabilir bir şema içinde bırakmak veya değiştirmek için alter veya drop deyim , güvenliği sağlanabiliriçin belirli kullanın.

Tek parça ad için kullanılıyorsa, securable_name, ad çözümleme kuralları şu anda yürürlükte güvenliği sağlanabilirbulmak için kullanılacak olan.

güvenliği sağlanabilir yeni bir şemaya taşındığında güvenliği sağlanabilir ile ilişkilendirilmiş tüm izinleri iptal edilir.güvenliği sağlanabilir sahibi açıkça kümetutulmuşsa sahibi değişmeden kalır.güvenliği sağlanabilir sahibi küme için şema sahibi olmuştur, sahibi şema SAHİBİNİ kalır; Şema sahibi yeni şema sahibini giderecek ancak taşındıktan sonra.principal_id Yeni sahibin olacaktır null.

Bir tablo ya da Görünüm şemasını kullanarak değiştirmek için SQL Server Management Studio, Object Explorer'da tablo ya da görünümü sağ tıklatın ve tıklatın Tasarım.Press F4 Özellikler penceresini açmak için.De şema kutusunda, yeni bir şema seçin.

Dikkat notuDikkat

SQL Server 2005'ten itibaren şemaların davranışları değişmiştir. Bunun sonucunda, şemaların veritabanı kullanıcılarına denk olduğunu kabul eden kod artık doğru sonuçlar döndürmeyebilir. Eski katalog görünümleri, sysobjects dahil, aşağıdaki DLL ifadelerinden herhangi birinin kullanıldığı bir veritabanında kullanılmamalıdır: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. Bu gibi veritabanlarında bunun yerine yeni katalog görünümlerini kullanmalısınız. Yeni katalog görünümleri, ilk olarak SQL Server 2005 içinde kullanılan prensiplerin ve şemaların ayrılmasını dikkate alır. Katalog görünümleri hakkında daha fazla bilgi için bkz. Catalog Views (Transact-SQL) (Katalog Görünümleri (Transact-SQL)).

İzinler

Bir güvenliği sağlanabilir başka bir şemadan aktarmak için geçerli kullanıcının güvenliği sağlanabilir üzerinde (şema değil) Denetim yetkisine sahip ve hedef şema izni alter gerekir.

güvenliği sağlanabilir varsa ve sahibi bir execute as sahibi belirtimi küme için şema sahibi, kullanıcı da kimliğe BÜRÜNME hedef şema sahibi üzerinde izniniz olmalıdır.

Bu hareket ettiğinde transfer edilen güvenliği sağlanabilir ile ilişkilendirilmiş tüm izinleri bırakılır.

Örnekler

A.Bir tablosahipliği aktarma

Aşağıdaki örnek şema değiştirir HumanResources aktarma tablotarafından Address şemasından Person şema.

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

B.Bir tür sahipliği aktarma

Aşağıdaki örnek, bir tür oluşturur Production şema, türüne aktarır ve Person şema.

USE AdventureWorks2008R2;
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