ALTER AUTHORIZATION (Transact-SQL)

Altera a propriedade de um protegível.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

ALTER AUTHORIZATION
   ON [ <class_type>:: ] entity_name
   TO { SCHEMA OWNER | principal_name }

<class_type> ::=
    {
        OBJECT | ASSEMBLY | ASYMMETRIC KEY | CERTIFICATE 
    | CONTRACT | TYPE | DATABASE | ENDPOINT | FULLTEXT CATALOG 
    | FULLTEXT STOPLIST | MESSAGE TYPE | REMOTE SERVICE BINDING
    | ROLE | ROUTE | SCHEMA | SERVICE | SYMMETRIC KEY 
    | XML SCHEMA COLLECTION
    }

Argumentos

  • <class_type>
    É a classe protegível da entidade da qual o proprietário está sendo alterado. OBJECT é o padrão.

  • entity_name
    É o nome da entidade.

  • principal_name
    É o nome da entidade que possuirá a entidade.

Comentários

ALTER AUTHORIZATION pode ser usado para alterar a propriedade de qualquer entidade que tenha um proprietário. A propriedade de entidades contidas no banco de dados pode ser transferida a qualquer entidade em nível de banco de dados. A propriedade de entidades em nível de servidor pode ser transferida apenas a entidades em nível de servidor.

Observação importanteImportante

A partir do SQL Server 2005, um usuário pode possuir um OBJECT ou TYPE que esteja contido por um esquema de propriedade de outro usuário do banco de dados. Essa é uma alteração de comportamento de versões anteriores do SQL Server. Para obter mais informações, consulte Separação do esquema de usuário, OBJECTPROPERTY (Transact-SQL) e TYPEPROPERTY (Transact-SQL).

A propriedade das seguintes entidades contidas por esquema de tipo "objeto" pode ser transferida: tabelas, exibições, funções, procedimentos, filas e sinônimos.

A propriedade das seguintes entidades não pode ser transferida: servidores vinculados, estatísticas, restrições, regras, padrões, gatilhos, filas do Service Broker, credenciais, funções de partição, esquemas de partição, chaves mestras de banco de dados, chave mestra de serviço e notificações de eventos.

A propriedade de membros das seguintes classes protegíveis não pode ser transferida: servidor, logon, usuário, função de aplicativo e coluna.

A opção SCHEMA OWNER é válida apenas quando você está transferindo propriedade de uma entidade contida por esquema. SCHEMA OWNER transferirá a propriedade da entidade ao proprietário do esquema no qual ela reside. Apenas entidades de classe OBJECT, TYPE ou XML SCHEMA COLLECTION são contidas por esquema.

Se a entidade de destino não for um banco de dados e estiver sendo transferida a um novo proprietário, todas as permissões no destino serão descartadas.

Observação sobre cuidadosCuidado

No SQL Server 2005, o comportamento de esquemas mudou em relação ao comportamento em versões anteriores do SQL Server. O código que pressupõe que esquemas são equivalentes a usuários de banco de dados pode não retornar resultados corretos. Exibições antigas do catálogo, incluindo sysobjects, não devem ser usadas em um banco de dados no qual uma das instruções DDL a seguir já tenha sido usada: 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. Em um banco de dados no qual qualquer uma dessas instruções tenha sido usada alguma vez, você deve usar as novas exibições do catálogo. As novas exibições do catálogo levam em conta a separação de entidades e esquemas introduzida no SQL Server 2005. Para obter mais informações sobre exibições do catálogo, consulte Exibições de catálogo (Transact-SQL).

Além disso, observe o seguinte:

Observação importanteImportante

O único modo seguro de localizar o proprietário de um objeto é consultar a exibição do catálogo sys.objects. O único modo seguro para localizar o proprietário de um tipo é usar a função TYPEPROPERTY.

Casos e condições especiais

A tabela a seguir lista casos, exceções e condições especiais que se aplicam a autorização de alteração.

Classe

Condição

DATABASE

Não é possível alterar o proprietário dos bancos de dados do sistema master, model, tempdb, o banco de dados de recursos ou um banco de dados que seja usado como um banco de dados de distribuição. A entidade deve ser um logon. Se a entidade for um logon do Windows sem um logon correspondente do SQL Server, a entidade deverá ter as permissões CONTROL SERVER e TAKE OWNERSHIP no banco de dados. Se a entidade for um logon do SQL Server, a entidade não poderá ser mapeada para um certificado ou chave assimétrica. Alias dependentes serão mapeados para o novo proprietário do banco de dados. O DBO SID será atualizado no banco de dados atual e no sys.databases.

OBJECT

Não é possível alterar propriedade de gatilhos, restrições, regras, padrões, estatísticas, objetos de sistema, filas, exibições indexadas ou tabelas com exibições indexadas.

SCHEMA

Quando a propriedade é transferida, permissões em objetos contidos por esquema que não têm proprietários explícitos serão descartadas. Não é possível alterar o proprietário de sys, dbo ou information_schema.

TYPE

Não é possível alterar a propriedade de um TYPE que pertence a sys ou information_schema.

CONTRACT, MESSAGE TYPE ou SERVICE

Não é possível alterar a propriedade de entidades do sistema.

SYMMETRIC KEY

Não pode alterar a propriedade de chaves temporárias globais.

CERTIFICATE ou ASYMMETRIC KEY

Não pode transferir a propriedade dessas entidades a uma função ou grupo.

ENDPOINT

A entidade deve ser um logon.

Permissões

Requer permissão TAKE OWNERSHIP na entidade. Se o novo proprietário não for o usuário que está executando esta instrução, também requererá: 1) permissão IMPERSONATE no novo proprietário se ele for um usuário ou logon; ou 2) se o novo proprietário for uma função, associação na função ou permissão ALTER na função; ou 3) se o novo proprietário for uma função de aplicativo, permissão ALTER na função do aplicativo.

Exemplos

A. Transferindo a propriedade de uma tabela

O exemplo a seguir transfere a propriedade da tabela Sprockets ao usuário MichikoOsada. A tabela está localizada dentro do esquema Parts.

ALTER AUTHORIZATION ON OBJECT::Parts.Sprockets TO MichikoOsada;
GO

A consulta também pode ser semelhante à seguinte:

ALTER AUTHORIZATION ON Parts.Sprockets TO MichikoOsada;
GO

B. Transferindo a propriedade de uma exibição ao proprietário do esquema

O exemplo a seguir transfere a propriedade da exibição ProductionView06 ao proprietário do esquema que a contém. A exibição está localizada dentro do esquema Production.

ALTER AUTHORIZATION ON OBJECT::Production.ProductionView06 TO SCHEMA OWNER;
GO

C. Transferindo a propriedade de um esquema a um usuário

O exemplo a seguir transfere a propriedade do esquema SeattleProduction11 ao usuário SandraAlayo.

ALTER AUTHORIZATION ON SCHEMA::SeattleProduction11 TO SandraAlayo;
GO

D. Transferindo a propriedade de um ponto de extremidade a um logon do SQL Server

O exemplo a seguir transfere a propriedade do ponto de extremidade CantabSalesServer1 a JaePak. Como o ponto de extremidade é um protegível em nível de servidor, o ponto de extremidade só pode ser transferido a uma entidade principal no nível de servidor.

ALTER AUTHORIZATION ON ENDPOINT::CantabSalesServer1 TO JaePak;
GO