Partilhar via


AUTORIZAÇÃO ALTER (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade de Análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de Dados SQL no Microsoft Fabric

Altera a propriedade de um valor mobiliário.

Transact-SQL convenções de sintaxe

Note

O Microsoft Entra ID era conhecido anteriormente como Azure Ative Directory (Azure AD).

Syntax

-- Syntax for SQL Server
ALTER AUTHORIZATION
    ON [ <class_type>:: ] entity_name
    TO { principal_name | SCHEMA OWNER }
    [;]

<class_type> ::=
     {
      OBJECT | ASSEMBLY | ASYMMETRIC KEY | AVAILABILITY GROUP | CERTIFICATE
    | CONTRACT | TYPE | DATABASE | ENDPOINT | FULLTEXT CATALOG
    | FULLTEXT STOPLIST | MESSAGE TYPE | REMOTE SERVICE BINDING
    | ROLE | ROUTE | SCHEMA | SEARCH PROPERTY LIST | SERVER ROLE
    | SERVICE | SYMMETRIC KEY | XML SCHEMA COLLECTION
     }
-- Syntax for SQL Database

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

<class_type> ::=
     {
    OBJECT | ASSEMBLY | ASYMMETRIC KEY | CERTIFICATE
     | TYPE | DATABASE | FULLTEXT CATALOG
     | FULLTEXT STOPLIST
     | ROLE | SCHEMA | SEARCH PROPERTY LIST
     | SYMMETRIC KEY | XML SCHEMA COLLECTION
     }
-- Syntax for Azure Synapse Analytics and Microsoft Fabric

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

    <class_type> ::= {
    SCHEMA
     | OBJECT
    }

    <entity_name> ::=
    {
    schema_name
     | [ schema_name. ] object_name
    }
-- Syntax for Parallel Data Warehouse

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

<class_type> ::= {
    DATABASE
     | SCHEMA
     | OBJECT
    }

<entity_name> ::=
    {
    database_name
     | schema_name
     | [ schema_name. ] object_name
    }

Note

Essa sintaxe não é suportada pelo pool SQL sem servidor no Azure Synapse Analytics.

Arguments

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

Class Product
OBJECT Aplica-se a: SQL Server 2008 (10.0.x) e posterior, Banco de Dados SQL do Azure, Azure Synapse Analytics, Analytics Platform System (PDW).
ASSEMBLY Aplica-se a: SQL Server 2008 (10.0.x) e posterior, Banco de Dados SQL do Azure.
CHAVE ASSIMÉTRICA Aplica-se a: SQL Server 2008 (10.0.x) e posterior, Banco de Dados SQL do Azure.
GRUPO DE DISPONIBILIDADE Aplica-se a: SQL Server 2012 e posterior.
CERTIFICATE Aplica-se a: SQL Server 2008 (10.0.x) e posterior, Banco de Dados SQL do Azure.
CONTRACT Aplica-se a: SQL Server 2008 (10.0.x) e posterior.
DATABASE Aplica-se a: SQL Server 2008 (10.0.x) e posterior, Banco de Dados SQL do Azure. Para obter mais informações, consulte ALTER AUTHORIZATION para bancos de dados.
ENDPOINT Aplica-se a: SQL Server 2008 (10.0.x) e posterior.
CATÁLOGO DE TEXTO COMPLETO Aplica-se a: SQL Server 2008 (10.0.x) e posterior, Banco de Dados SQL do Azure.
LISTA DE EXCLUSÃO DE TEXTO COMPLETO Aplica-se a: SQL Server 2008 (10.0.x) e posterior, Banco de Dados SQL do Azure.
TIPO DE MENSAGEM Aplica-se a: SQL Server 2008 (10.0.x) e posterior.
LIGAÇÃO DE SERVIÇO REMOTO Aplica-se a: SQL Server 2008 (10.0.x) e posterior.
ROLE Aplica-se a: SQL Server 2008 (10.0.x) e posterior, Banco de Dados SQL do Azure.
ROUTE Aplica-se a: SQL Server 2008 (10.0.x) e posterior.
SCHEMA Aplica-se a: SQL Server 2008 (10.0.x) e posterior, Banco de Dados SQL do Azure, Azure Synapse Analytics, Analytics Platform System (PDW).
LISTA DE PROPRIEDADES PARA PESQUISA Aplica-se a: SQL Server 2012 (11.x) e posterior, Banco de Dados SQL do Azure.
FUNÇÃO DE SERVIDOR Aplica-se a: SQL Server 2008 (10.0.x) e posterior.
SERVICE Aplica-se a: SQL Server 2008 (10.0.x) e posterior.
CHAVE SIMÉTRICA Aplica-se a: SQL Server 2008 (10.0.x) e posterior, Banco de Dados SQL do Azure.
TYPE Aplica-se a: SQL Server 2008 (10.0.x) e posterior, Banco de Dados SQL do Azure.
COLEÇÃO DE ESQUEMA XML Aplica-se a: SQL Server 2008 (10.0.x) e posterior, Banco de Dados SQL do Azure.

entity_name É o nome da entidade.

principal_name | PROPRIETÁRIO DO ESQUEMA Nome da entidade de segurança proprietária da entidade. Os objetos de banco de dados devem pertencer a uma entidade de banco de dados; um usuário ou função de banco de dados. Os objetos de servidor (como bancos de dados) devem pertencer a uma entidade de servidor (um login). Especifique SCHEMA OWNER como o *principal_name- para indicar que o objeto deve ser de propriedade da entidade de segurança que possui o esquema do objeto.

Remarks

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

Important

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

A propriedade das seguintes entidades contidas no esquema do 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, login, usuário, função do aplicativo e coluna.

A opção PROPRIETÁRIO DO ESQUEMA só é válida quando você está transferindo a propriedade de uma entidade contida no esquema. O PROPRIETÁRIO DO ESQUEMA transferirá a propriedade da entidade para o proprietário do esquema no qual ela reside. Somente entidades da classe OBJECT, TYPE ou XML SCHEMA COLLECTION são contidas no esquema.

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

Note

Os esquemas não são equivalentes aos usuários do banco de dados. Use as exibições do catálogo do sistema para identificar quaisquer diferenças entre os usuários e esquemas do banco de dados.

Além disso, observe o seguinte:

Important

A única maneira confiável de encontrar o proprietário de um objeto é consultar a exibição do catálogo sys.objects . A única maneira confiável de encontrar o proprietário de um tipo é usar a função TYPEPROPERTY.

Casos e Condições Especiais

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

Class Condition
OBJECT Não é possível alterar a propriedade de gatilhos, restrições, regras, padrões, estatísticas, objetos do sistema, filas, exibições indexadas ou tabelas com exibições indexadas.
SCHEMA Quando a propriedade é transferida, as permissões em objetos contidos no 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.
CONTRATO, TIPO DE MENSAGEM ou SERVIÇO Não é possível alterar a propriedade das entidades do sistema.
CHAVE SIMÉTRICA Não é possível alterar a propriedade de chaves temporárias globais.
CERTIFICADO ou CHAVE ASSIMÉTRICA Não é possível transferir a propriedade dessas entidades para uma função ou grupo.
ENDPOINT O principal deve ser um login.

AUTORIZAÇÃO ALTER para bases de dados

Para SQL Server

Requisitos para o novo proprietário: O novo proprietário principal deve ser um dos seguintes:

  • Um logon de autenticação do SQL Server.
  • Um logon de autenticação do Windows representando um usuário do Windows (não um grupo).
  • Um usuário do Windows que se autentica por meio de um logon de autenticação do Windows representando um grupo do Windows.

Requisitos para a pessoa que executa a declaração ALTER AUTHORIZATION: Se você não for um membro da função de servidor fixa sysadmin , deverá ter pelo menos a permissão TAKE OWNERSHIP no banco de dados e a permissão IMPERSONATE no login do novo proprietário.

Para o Banco de Dados SQL do Azure

Requisitos para o novo proprietário: O novo proprietário principal deve ser um dos seguintes:

  • Um logon de autenticação do SQL Server.
  • Um usuário federado (não um grupo) presente no Microsoft Entra ID.
  • Um usuário gerenciado (não um grupo) ou um aplicativo presente no Microsoft Entra ID.

Se o novo proprietário for um usuário do Microsoft Entra, ele não poderá existir como um usuário no banco de dados onde o novo proprietário se tornará o novo proprietário do banco de dados (dbo). O usuário do Microsoft Entra deve primeiro ser removido do banco de dados antes de executar a instrução ALTER AUTHORIZATION, alterando a propriedade do banco de dados para o novo usuário. Para obter mais informações sobre como configurar usuários do Microsoft Entra com o Banco de dados SQL, consulte Configurar a autenticação do Microsoft Entra.

Requisitos para a pessoa que executa a declaração ALTER AUTHORIZATION: Você deve se conectar ao banco de dados de destino para alterar o proprietário desse banco de dados.

Os seguintes tipos de contas podem alterar o proprietário de um banco de dados.

  • O logon da entidade de nível de serviço, que é o administrador do SQL provisionado quando o servidor lógico no Azure foi criado.
  • O administrador do Microsoft Entra para o servidor lógico..
  • O proprietário atual do banco de dados.

A tabela a seguir resume os requisitos:

Executor Target Result
Logon de autenticação do SQL Server Logon de autenticação do SQL Server Success
Logon de autenticação do SQL Server Utilizador do Microsoft Entra Fail
Utilizador do Microsoft Entra Logon de autenticação do SQL Server Success
Utilizador do Microsoft Entra Utilizador do Microsoft Entra Success

Para verificar um proprietário do banco de dados do Microsoft Entra, execute o seguinte comando Transact-SQL em um banco de dados de usuário (neste exemplo testdb).

SELECT CAST(owner_sid as uniqueidentifier) AS Owner_SID
FROM sys.databases
WHERE name = 'testdb';

A saída será um GUID (como XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) que corresponde à ID de objeto do usuário ou entidade de serviço do Microsoft Entra atribuída como proprietária do banco de dados. Você pode verificar isso verificando a ID do objeto do usuário na ID do Microsoft Entra. Quando um usuário de logon de autenticação do SQL Server for o proprietário do banco de dados, execute a seguinte instrução no banco de dados mestre para verificar o proprietário do banco de dados:

SELECT d.name, d.owner_sid, sl.name
FROM sys.databases AS d
JOIN sys.sql_logins AS sl
ON d.owner_sid = sl.sid;

Melhores práticas

Em vez de usar usuários do Microsoft Entra como proprietários individuais do banco de dados, use um grupo do Microsoft Entra como membro da função de banco de dados fixa db_owner . As etapas a seguir mostram como configurar um logon desabilitado como o proprietário do banco de dados e tornar um grupo do Microsoft Entra (mydbogroup) um membro da função db_owner .

  1. Faça logon no SQL Server como administrador do Microsoft Entra e altere o proprietário do banco de dados para um logon de autenticação do SQL Server desabilitado. Por exemplo, a partir do banco de dados de usuários execute:

    ALTER AUTHORIZATION ON database::testdb TO DisabledLogin;
    
  2. Crie um grupo do Microsoft Entra que deve possuir o banco de dados e adicione-o como um usuário ao banco de dados do usuário. Por exemplo:

    CREATE USER [mydbogroup] FROM EXTERNAL PROVIDER;
    
  3. No banco de dados de usuários, adicione o usuário que representa o grupo Microsoft Entra à função de banco de dados fixa db_owner . Por exemplo:

    ALTER ROLE db_owner ADD MEMBER mydbogroup;
    

Agora, os mydbogroup membros podem gerenciar centralmente o banco de dados como membros da função db_owner .

  • Quando os membros desse grupo são removidos do grupo Microsoft Entra, eles perdem automaticamente as permissões dbo para esse banco de dados.
  • Da mesma forma, se novos membros forem adicionados ao mydbogroup grupo Microsoft Entra, eles obterão automaticamente o acesso dbo para esse banco de dados.

Para verificar se um usuário específico tem a permissão dbo efetiva, peça ao usuário que execute a seguinte instrução:

SELECT IS_MEMBER ('db_owner');

Um valor de retorno de 1 indica que o usuário é um membro da função.

Permissions

Requer a permissão TAKE OWNERSHIP na entidade. Se o novo proprietário não for o usuário que está executando esta declaração, também requer 1) permissão de representação no novo proprietário se for um usuário ou login; ou 2) se o novo proprietário for uma função, associação à 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 de aplicativo.

Examples

A. Transferir a propriedade de uma tabela

O exemplo a seguir transfere a propriedade da tabela Sprockets para o 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 ter a seguinte aparência:

ALTER AUTHORIZATION ON Parts.Sprockets TO MichikoOsada;
GO

Se o esquema de objetos não for incluído como parte da instrução, o Mecanismo de Banco de Dados procurará o objeto no esquema padrão dos usuários. Por exemplo:

ALTER AUTHORIZATION ON Sprockets TO MichikoOsada;
ALTER AUTHORIZATION ON OBJECT::Sprockets TO MichikoOsada;

B. Transferir a propriedade de um modo de exibição para o proprietário do esquema

O exemplo a seguir transfere a propriedade do modo de exibição ProductionView06 para o proprietário do esquema que o contém. O modo de exibição está localizado dentro do esquema Production.

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

C. Transferir a propriedade de um esquema para um usuário

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

ALTER AUTHORIZATION ON SCHEMA::SeattleProduction11 TO SandraAlayo;
GO

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

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

Aplica-se a: SQL Server 2008 (10.0.x) e posterior.

ALTER AUTHORIZATION ON ENDPOINT::CantabSalesServer1 TO JaePak;
GO

E. Alterar o proprietário de uma tabela

Cada um dos exemplos a seguir altera o Sprockets proprietário da tabela no Parts banco de dados para o usuário MichikoOsadado banco de dados.

ALTER AUTHORIZATION ON Sprockets TO MichikoOsada;
ALTER AUTHORIZATION ON dbo.Sprockets TO MichikoOsada;
ALTER AUTHORIZATION ON OBJECT::Sprockets TO MichikoOsada;
ALTER AUTHORIZATION ON OBJECT::dbo.Sprockets TO MichikoOsada;

F. Alterando o proprietário de um banco de dados

Aplica-se a: SQL Server 2008 (10.0.x) e posterior, Analytics Platform System (PDW), Banco de dados SQL.

O exemplo a seguir altera o proprietário do Parts banco de dados para o logon MichikoOsada.

ALTER AUTHORIZATION ON DATABASE::Parts TO MichikoOsada;

G. Alterando o proprietário de um banco de dados para um usuário do Microsoft Entra

No exemplo a seguir, um administrador do Microsoft Entra para SQL Server em uma organização com um domínio personalizado do Microsoft Entra chamado cqclinic.onmicrosoft.com, pode alterar a propriedade atual de um banco de dados targetDB e tornar um usuário richel@cqclinic.onmicorsoft.com existente do Microsoft Entra o novo proprietário do banco de dados usando o seguinte comando:

ALTER AUTHORIZATION ON database::targetDB TO [rachel@cqclinic.onmicrosoft.com];

Ver também

OBJECTPROPERTY (Transact-SQL)TYPEPROPERTY (Transact-SQL)EVENTDATA (Transact-SQL)