ALTER SCHEMA (Transact-SQL)

Przenosi zabezpieczany między schematów.

Topic link iconKonwencje składni języka Transact-SQL

ALTER SCHEMA schema_name 
      TRANSFER [ <entity_type> :: ] securable_name [;]
<entity_type> ::=
    {
        Object | Type | XML Schema Collection
    }

Argumenty

  • schema_name
    To nazwa schematu w bieżącej bazie danych, do którego zabezpieczany ma zostać przeniesiona.Nie może być SYS lub INFORMATION_SCHEMA.

  • <entity_type>
    Jest to klasa obiektu, dla których zmiany właściciela.Obiekt jest ustawieniem domyślnym.

  • securable_name
    To część jednego lub dwóch części Nazwa schematu zawarte zabezpieczany ma zostać przeniesiona do schematu.

Remarks

Użytkownicy i schematy są całkowicie niezależne.Aby uzyskać więcej informacji zobaczUser-Schema Separation.

ALTER SCHEMA można używać tylko do przenoszenia securables między schematów w tej samej bazy danych.Zmienianie lub usuwanie zabezpieczany w ramach schematu, należy użyć instrukcja ALTER lub DROP specyficzne dla tego zabezpieczany.

Jeśli nazwa jednej części jest używana do securable_name, reguły rozpoznawania nazw aktualnie obowiązujących mają być używane do lokalizowania zabezpieczany.

Gdy zabezpieczany są przenoszone do nowego schematu, zostaną usunięte wszystkie uprawnienia skojarzone z zabezpieczany.Jeśli właściciel zabezpieczany został jawnie zestaw, właściciel pozostanie bez zmian.Jeśli właściciel zabezpieczany zestaw SCHEMA właściciel, właściciel pozostanie właściciel SCHEMA; jednak po przeniesieniu, właściciel SCHEMA rozwiąże do właściciela nowego schematu.Principal_id nowego właściciela będzie równa NULL.

Aby zmienić schemat tabela lub widoku przy użyciu SQL Server Management Studio, w Eksploratorze obiektów, kliknij prawym przyciskiem myszy tabela lub widok, a następnie kliknij przycisk Projekt.Naciśnij klawisz F4 , aby otworzyć okno właściwości.W Schemat wybierz nowy schemat.

Ostrzeżenie

Beginning with SQL Server 2005, the behavior of schemas changed. As a result, code that assumes that schemas are equivalent to database users may no longer return correct results. Old catalog views, including sysobjects, should not be used in a database in which any of the following DDL statements have ever been used: 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. In such databases you must instead use the new catalog views. The new catalog views take into account the separation of principals and schemas that was introduced in SQL Server 2005. For more information about catalog views, see Catalog Views (Transact-SQL).

Uprawnienia

Aby przetransferować zabezpieczany z innego schematu, bieżący użytkownik musi mieć uprawnienie Kontrola na zabezpieczany (nie schematów) i uprawnienie ALTER schematu miejsce docelowe.

Jeśli zabezpieczany Specyfikacja wykonać jako właściciel ma na nim, a właściciel jest zestaw do SCHEMA właściciel, użytkownik musi mieć także uprawnienie do PERSONIFIKACJI na właściciela schematu miejsce docelowe.

Wszystkie uprawnienia skojarzone z zabezpieczanych, jest przesyłany są usuwane, gdy jest przenoszony.

Przykłady

A.Transferowanie własności tabela

W poniższym przykładzie zmienia schemat HumanResources przez przeniesienie tabela Address ze schematu Person do schematu.

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

B.Transferowanie własności typu

W następującym przykładzie zostanie utworzony na typ Production schemat, a następnie przesyła typu Person schemat.

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

Historia zmian

Microsoft Learning

Składnia rozwiązany przez dodanie typów i opcji pobierania schematu XML.

Przykład dodatek B.