Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Система платформы аналитики (PDW)
Конечная точка SQL аналитики в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Передача защищаемых сущностей между схемами.
Соглашения о синтаксисе Transact-SQL
Синтаксис
-- 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
[;]
Аргументы
schema_name
Целевая схема в текущей базе данных. Защищаемый объект перемещается в эту схему. Не может быть SYS или INFORMATION_SCHEMA.
<entity_type>
Класс сущности, для которой изменяется владелец. По умолчанию это объект.
securable_name
Имя одной или двух частей защищаемого объекта, защищаемого схемой, который необходимо переместить в схему.
Замечания
Пользователи и схемы полностью разделены. Схемы не эквивалентны пользователям базы данных. Используйте представления системного каталога для выявления различий между пользователями базы данных и схемами.
ALTER SCHEMA может использоваться только для перемещения защищённых файлов между схемами в одной базе данных. Для изменения или удаления защищаемой сущности в схеме используйте инструкцию ALTER или DROP, специфичную для этой сущности.
Если для аргумента securable_name используется однокомпонентное имя, для поиска защищаемой сущности будут использоваться текущие правила разрешения имен.
Все разрешения, связанные с защищаемым объектом, удаляются при перемещении защищаемой схемы в новую схему. Если владелец защищаемого объекта был явно задан, владелец остается неизменным. Если владелец защищённого объекта установлен как SCHEMA OWNER, владелец останется SCHEMA OWNER; однако после перемещения SCHEMA ВЛАДЕЛЕЦ переходит к владельцу новой схемы. Новый principal_id владелец будет NULL.
Это важно
Если вы используете ALTER SCHEMA для передачи хранимой процедуры, функции, представления или триггера в другую схему, имя схемы не изменится в definition столбце представления каталога sys.sql_modules или в результате встроенной функции OBJECT_DEFINITION .
ALTER SCHEMA Поэтому не следует использовать для перемещения этих типов объектов. Лучше удалить и создать объект повторно в его новой схеме.
Перемещение такого объекта, как таблица или столбец, не приводит к автоматическому обновлению ссылок на этот объект. Необходимо вручную изменить любые объекты, которые ссылаются на перемещаемый объект. Например, если перемещается таблица и на эту таблицу имеется ссылка в триггере, то необходимо изменить триггер, указав новое имя схемы. Используйте sys.sql_expression_dependencies, чтобы составить список зависимостей для объекта перед его перемещением.
Чтобы изменить схему таблицы с помощью SQL Server Management Studio, в обозревателе объектов щелкните правой кнопкой мыши таблицу и выберите конструктор. Нажмите клавишу F4, чтобы открыть окно свойств. В поле Схема выберите новую схему.
ALTER SCHEMA использует блокировку уровня схемы.
Осторожность
В конечной точке аналитики SQL Fabric передача таблицы между схемами через T-SQL не поддерживается. Это может негативно повлиять на операцию синхронизации между конечной точкой OneLake и аналитикой SQL.
Разрешения
Для передачи защищаемой сущности из другой схемы текущий пользователь должен иметь разрешения CONTROL на эту сущность (а не на схему) и разрешения ALTER на целевую схему.
Если на защищаемом устройстве указана EXECUTE AS спецификация OWNER, а владелец установлен как SCHEMA OWNER, пользователь также должен иметь разрешение на IMPERSONATE на владельца целевой схемы.
Все разрешения, связанные с перемещаемой защищаемой сущностью, при перемещении удаляются.
Примеры
А. Передача владения таблицей
В следующем примере схема HumanResources изменяется путем перемещения таблицы Address из схемы Person в схему HumanResources.
USE AdventureWorks2022;
GO
ALTER SCHEMA HumanResources TRANSFER Person.Address;
GO
В. Передача владения типом
В следующем примере создается тип в схеме Production, а затем этот тип передается схеме Person.
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
Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)
В. Передача владения таблицей
В следующем примере создается таблица Region в схеме dbo, создается схема Sales, а затем таблица Region перемещается из схемы dbo в схему Sales.
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