Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
PDW (Analytics Platform System)
Ponto de extremidade de análise do SQL
Warehouse no Microsoft Fabric
Transfere um protegível entre esquemas.
Convenções de sintaxe de Transact-SQL
Sintaxe
-- 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
[;]
Argumentos
schema_name
O esquema de destino no banco de dados atual. O protegível é movido para esse esquema. Não pode ser SYS
ou INFORMATION_SCHEMA
.
<entity_type>
A classe da entidade para a qual o proprietário está sendo alterado. Objeto é o padrão.
securable_name
O nome de uma ou duas partes de um protegível com escopo de esquema a ser movido para o esquema.
Comentários
Os usuários e esquemas são completamente separados. Esquemas não são equivalentes a usuários de banco de dados. Use as exibições do catálogo do sistema para identificar as diferenças entre os usuários do banco de dados e os esquemas.
ALTER SCHEMA só pode ser usado para mover protegíveis entre esquemas no mesmo banco de dados. Para alterar ou descartar um protegível dentro de um esquema, use a instrução ALTER ou DROP específica para esse protegível.
Se o nome de uma parte for usado para securable_name, as regras de resolução de nomes atualmente em vigor serão usadas para localizar o protegível.
Todas as permissões associadas ao protegível são descartadas quando o protegível é movido para o novo esquema. Se o proprietário do protegível tiver sido definido explicitamente, o proprietário permanecerá inalterado. Se o proprietário do protegível tiver sido definido como SCHEMA OWNER, o proprietário permanecerá como SCHEMA OWNER; entretanto, após a movimentação, SCHEMA OWNER reconhecerá o proprietário do novo esquema. O principal_id
novo proprietário será NULL
.
Importante
Se você usar ALTER SCHEMA
para transferir um procedimento armazenado, função, exibição ou gatilho para outro esquema, ele não alterará o nome do esquema, se presente, do objeto na definition
coluna da exibição de catálogo sys.sql_modules ou no resultado da função interna OBJECT_DEFINITION . Portanto, ALTER SCHEMA
não deve ser usado para mover esses tipos de objeto. Em vez disso, remova e recrie o objeto em seu novo esquema.
A movimentação de um objeto, como uma tabela ou um sinônimo, não atualizará automaticamente as referências a esse objeto. É necessário modificar manualmente todos os objetos que referenciam o objeto transferido. Por exemplo, se você mover uma tabela e essa tabela for referenciada em um gatilho, será necessário modificar o gatilho para que ele reflita o novo nome do esquema. Use sys.sql_expression_dependencies para listar as dependências do objeto antes de movê-lo.
Para alterar o esquema de uma tabela usando o SQL Server Management Studio, no Pesquisador de Objetos, clique com o botão direito do mouse na tabela e selecione Design. Pressione F4 para abrir a janela Propriedades. Na caixa Esquema, selecione um novo esquema.
O ALTER SCHEMA usa um bloqueio no nível do esquema.
Cuidado
No ponto de extremidade de análise do SQL do Fabric, não há suporte para a transferência de uma tabela entre esquemas via T-SQL. Isso pode afetar negativamente a operação de sincronização entre o ponto de extremidade de análise do OneLake e do SQL.
Permissões
Para transferir um protegível de outro esquema, o usuário atual deve ter permissão CONTROL sobre o protegível (não esquema) e permissão ALTER sobre o esquema de destino.
Se o protegível tiver uma especificação EXECUTE AS OWNER e o proprietário estiver definido como SCHEMA OWNER, o usuário também deverá ter a permissão IMPERSONATE no proprietário do esquema de destino.
Todas as permissões associadas ao protegível que estão sendo transferidas serão descartadas após o deslocamento.
Exemplos
a. Transferir a propriedade de uma tabela
O exemplo a seguir modifica o esquema HumanResources
transferindo a tabela Address
do esquema Person
para o esquema HumanResources
.
USE AdventureWorks2022;
GO
ALTER SCHEMA HumanResources TRANSFER Person.Address;
GO
B. Transferir a propriedade de um tipo
O exemplo a seguir cria um tipo no esquema Production
e, em seguida, transfere o tipo para o esquema 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
Exemplos: Azure Synapse Analytics e PDW (Analytics Platform System)
C. Transferir a propriedade de uma tabela
O exemplo a seguir cria uma tabela Region
no esquema dbo
, cria um esquema Sales
e, em seguida, move a tabela Region
do esquema dbo
para o esquema 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