Compartilhar via


CRIAR CREDENCIAL COM ESCOPO DE BANCO DE DADOS (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Banco de dados SQL no Microsoft Fabric

Cria uma credencial de banco de dados. Uma credencial de banco de dados não é mapeada para um login de servidor ou usuário de banco de dados. O banco de dados usa a credencial para acessar o recurso externo quando realiza uma operação que requer acesso.

Convenções de sintaxe de Transact-SQL

Syntax

CREATE DATABASE SCOPED CREDENTIAL credential_name
WITH IDENTITY = 'identity_name'
    [ , SECRET = 'secret' ]
[ ; ]

Arguments

credential_name

Especifica o nome da credencial no escopo do banco de dados que está sendo criada. credential_name não pode começar com o sinal de número (#). As credenciais do sistema começam com ##. O comprimento máximo de credential_name é de 128 caracteres.

IDENTIDADE = 'identity_name'

Especifica o nome da conta a usar ao se conectar fora do servidor.

  • Para importar um arquivo do Armazenamento de Blobs do Azure ou do Azure Data Lake Storage usando uma chave compartilhada, o nome da identidade deve ser SHARED ACCESS SIGNATURE. Para mais informações sobre assinaturas de acesso compartilhado, consulte Usando SAS (Assinatura de Acesso Compartilhado). Somente use IDENTITY = SHARED ACCESS SIGNATURE com uma assinatura de acesso compartilhado.

  • Para importar um arquivo do Armazenamento de Blobs do Azure usando uma identidade gerenciada, o nome de identidade deve ser MANAGED IDENTITY.

  • Ao usar Kerberos (Windows Active Directory ou MIT KDC), não use o nome de domínio na IDENTITY discussão. Ele deve ser apenas o nome da conta.

  • Em uma instância de SQL Server, se você criar uma credencial com escopo de banco de dados usando uma Chave de Acesso ao Armazenamento usada como , SECRETIDENTITY é ignorado.

  • WITH IDENTITY não é necessário se o contêiner no armazenamento do Azure Blob estiver habilitado para acesso anônimo. Para obter um exemplo de consulta ao Armazenamento OPENROWSET BULKde Blobs do Azure, consulte Importar para uma tabela de um arquivo armazenado no Armazenamento de Blobs do Azure.

  • No SQL Server 2022 (16.x) e versões posteriores, o conector REST-API substitui HADOOP. Para o Armazenamento de Blobs do Azure e o Azure Data Lake Gen 2, o único método de autenticação com suporte é a assinatura de acesso compartilhado. Para obter mais informações, consulte CREATE EXTERNAL DATA SOURCE.

  • No SQL Server 2019 (15.x), a única fonte de dados externa do PolyBase que dá suporte à autenticação Kerberos é o Hadoop. Todas as outras fontes de dados externas (SQL Server, Oracle, Teradata, MongoDB, ODBC genérico) dão suporte apenas à autenticação básica.

  • Pools SQL no Azure Synapse Analytics incluem as seguintes notas:

    • Para carregar dados no Azure Synapse Analytics, você pode usar qualquer valor válido para IDENTITY.
    • Em um pool de SQL sem servidor do Azure Synapse Analytics, as credenciais no escopo do banco de dados podem especificar uma identidade gerenciada do workspace, o nome da entidade de serviço ou o token SAS (assinatura de acesso compartilhado). O acesso via uma identidade de usuário, habilitado por login do usuário com autenticação pass-through do Microsoft Entra, também é possível com credencial com escopo de banco de dados, assim como o acesso anônimo ao armazenamento público. Para obter mais informações, confira Tipos de autorização de armazenamento com suporte.
    • Em um pool de SQL dedicado do Azure Synapse Analytics, as credenciais no escopo do banco de dados podem especificar o token SAS (assinatura de acesso compartilhado), a identidade do aplicativo personalizado, a identidade gerenciada do workspace ou a chave de acesso de armazenamento.
Authentication T-SQL Supported Notes
SAS (Assinatura de Acesso Compartilhado) CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'secret'; SQL Server 2022 e posterior, Instância Gerenciada de SQL do Azure, Azure Synapse Analytics, Banco de Dados SQL do Azure
Identidade Gerenciada CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'MANAGED IDENTITY'; Banco de Dados SQL do Azure, Instância Gerenciada de SQL do Azure, SQL Server 2025 com Azure Arc Para habilitar o Azure Arc, veja Identidade gerenciada para SQL Server habilitada pelo Azure Arc
Autenticação de passagem do Microsoft Entra por meio da Identidade do Usuário CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'USER IDENTITY'; Azure SQL Database, SQL database in Microsoft Fabric 1 No Azure Synapse, veja login do usuário com autenticação pass-through do Microsoft Entra
Autenticação básica da chave de acesso S3 CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'S3 ACCESS KEY', SECRET = '<accesskey>:<secretkey>'; SQL Server 2022 e versões posteriores
Fontes de dados ODBC ou Kerberos (MIT KDC) CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = '<identity_name>', SECRET = '<secret>'; SQL Server 2019 e versões posteriores

1 No banco de dados SQL do Microsoft Fabric, se você não especificar uma credencial com escopo de banco de dados, o método de autenticação é 'USER IDENTITY' por padrão e usa a conta de usuário do Microsoft Entra ID como contexto.

SEGREDO = 'segredo'

Especifica o segredo necessário para a autenticação de saída. SECRET é necessário para importar um arquivo de armazenamento de Blobs do Azure. Para fazer o carregamento do Armazenamento de Blobs do Azure para o Azure Synapse Analytics ou o Parallel Data Warehouse, o Segredo deve ser a Chave de Armazenamento do Azure.

Warning

O valor da chave SAS pode começar com um ponto de interrogação (?). Ao usar a chave SAS, remova a parte principal ?.

Remarks

Uma credencial no escopo do banco de dados é um registro que contém as informações de autenticação necessárias para conectar-se a um recurso fora do SQL Server. A maioria das credenciais inclui um usuário e uma senha do Windows.

Para proteger as informações confidenciais dentro da credencial no escopo do banco de dados, é necessária uma chave mestra de banco de dados (DMK). A DMK é uma chave simétrica que criptografa o segredo na credencial no escopo do banco de dados. O banco de dados deve ter um DMK antes que você possa criar qualquer credencial com escopo de banco de dados. Criptografe o DMK com uma senha forte. O Azure SQL Database cria um DMK com uma senha forte e selecionada aleatoriamente como parte da criação da credencial com escopo do banco de dados, ou como parte da criação de uma auditoria de servidor.

Os usuários não podem criar a DMK em um banco de dados lógico master . A senha DMK é desconhecida pela Microsoft e não pode ser descoberta após a criação. Crie um DMK antes de criar uma credencial com escopo no banco de dados. Para obter mais informações, confira CREATE MASTER KEY.

Quando IDENTITY é um usuário Windows, o segredo pode ser a senha. O segredo é criptografado com a chave mestra de serviço (SMK). Se você regenerar o SMK, o segredo é recriptografado com o novo SMK.

Ao conceder permissões para uma assinatura de acesso compartilhado (SAS) para uso com uma tabela externa do PolyBase, selecione tanto Container quanto Object como tipos de recursos permitidos. Se você não conceder essas permissões, pode receber o erro 16535 ou 16561 ao tentar acessar a tabela externa.

Para informações sobre credenciais com escopo de banco de dados, veja a visualização de catálogo sys.database_scoped_credentials .

Estas são algumas aplicações das credenciais no escopo do banco de dados:

Permissions

Requer permissão CONTROL no banco de dados.

Examples

A. Criar uma credencial com escopo de banco de dados para seu aplicativo

O exemplo a seguir cria a credencial no escopo do banco de dados chamada AppCred. A credencial no escopo do banco de dados contém o usuário do Windows Mary5 e uma senha.

Crie um DMK se ainda não existir. Não use uma senha em branco. Use uma senha forte.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

Crie uma credencial com escopo de banco de dados:

CREATE DATABASE SCOPED CREDENTIAL AppCred
WITH IDENTITY = 'Mary5',
     SECRET = '<password>';

B. Criar uma credencial com escopo de banco de dados para uma assinatura de acesso compartilhado

O exemplo a seguir cria uma credencial com escopo de banco de dados que você pode usar para criar uma fonte de dados externa. Essa credencial pode realizar operações em massa, como BULK INSERT e OPENROWSET BULK.

Crie um DMK se ainda não existir. Não use uma senha em branco. Use uma senha forte.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

Crie uma credencial com escopo de banco de dados. Substitua <key> pelo valor apropriado.

CREATE DATABASE SCOPED CREDENTIAL MyCredentials
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
     SECRET = '<key>';

C. Criar uma credencial com escopo de banco de dados para a conectividade do PolyBase com o Azure Data Lake Store

O exemplo a seguir cria uma credencial no escopo do banco de dados que pode ser usada para criar uma fonte de dados externa, que pode ser usada pelo PolyBase no Azure Synapse Analytics.

O Azure Data Lake Store utiliza uma aplicação Microsoft Entra para autenticação service-to-service.

Crie um aplicativo do Microsoft Entra e documente seu client_id, OAuth_2.0_Token_EndPoint e Key antes de tentar criar uma credencial no escopo do banco de dados.

Crie um DMK se ainda não existir. Não use uma senha em branco. Use uma senha forte.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';

Crie uma credencial com escopo de banco de dados. Substitua <key> pelo valor apropriado.

CREATE DATABASE SCOPED CREDENTIAL ADL_User
WITH IDENTITY = '<client_id>@<OAuth_2.0_Token_EndPoint>',
     SECRET = '<key>';

D. Criar uma credencial com escopo de banco de dados usando a Identidade Gerenciada

Aplica-se a: SQL Server 2025 (17.x) e versões posteriores

O SQL Server 2025 (17.x) apresenta suporte para identidades gerenciadas do Microsoft Entra. Para informações sobre como usar uma identidade gerenciada com o SQL Server habilitado pelo Azure Arc, veja Identidade gerenciada para SQL Server habilitada pelo Azure Arc.

EXECUTE sp_configure 'allow server scoped db credentials', 1;
RECONFIGURE;
GO

CREATE DATABASE SCOPED CREDENTIAL [managed_id]
WITH IDENTITY = 'Managed Identity';

E. Crie uma credencial com escopo de banco de dados usando o Microsoft Entra ID

Aplica-se a: Azure SQL Database, banco de dados SQL no Microsoft Fabric

No Azure SQL Database e no banco de dados SQL no Microsoft Fabric, você pode usar sua própria conta Microsoft Entra ID para autenticar uma fonte de dados externa.

No banco de dados SQL no Microsoft Fabric, se você não especificar uma credencial com escopo de banco de dados, o método de autenticação é USER IDENTITY padrão e usa a conta de usuário do ID do Entra como contexto.

CREATE DATABASE SCOPED CREDENTIAL MyCredential
WITH IDENTITY = 'User Identity';