Partilhar 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)Base de dados SQL no Microsoft Fabric

Cria uma credencial de banco de dados. Uma credencial de banco de dados não é mapeada para um logon de servidor ou usuário de banco de dados. A credencial é usada pelo banco de dados para acessar o local externo sempre que o banco de dados estiver executando uma operação que requer acesso.

Transact-SQL convenções de sintaxe

Syntax

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

Arguments

credential_name

Especifica o nome da credencial de 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 ser usada ao se conectar fora do servidor.

  • Para importar um arquivo do Armazenamento de Blobs do Azure ou do Armazenamento do Azure Data Lake usando uma chave compartilhada, o nome da identidade deve ser SHARED ACCESS SIGNATURE. Para obter mais informações sobre assinaturas de acesso compartilhado, consulte Usando assinaturas de acesso compartilhado (SAS). IDENTITY = SHARED ACCESS SIGNATURE Use apenas para uma assinatura de acesso compartilhado.
  • Para importar um arquivo do Armazenamento de Blobs do Azure usando uma identidade gerenciada, o nome da identidade deve ser MANAGED IDENTITY.
  • Ao usar Kerberos (Windows Ative Directory ou MIT KDC), não use o nome de IDENTITY domínio no argumento. Deve ser apenas o nome da conta.
  • Em uma instância do SQL Server, se a criação de uma credencial de escopo de banco de dados com uma chave de acesso de armazenamento usada como , SECRETIDENTITY será ignorada.
  • WITH IDENTITY não é necessário se o contêiner no armazenamento de Blob do Azure estiver habilitado para acesso anônimo. Para obter um exemplo de consulta ao armazenamento de Blob do Azure com OPENROWSET BULKo , consulte Importar para uma tabela a partir de um arquivo armazenado no armazenamento de Blob do Azure.
  • No SQL Server 2022 (16.x) e versões posteriores, o conector REST-API substitui o 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 (Transact-SQL).
  • No SQL Server 2019 (15.x), a única fonte de dados externa do PolyBase que oferece suporte à autenticação Kerberos é o Hadoop. Todas as outras fontes de dados externas (SQL Server, Oracle, Teradata, MongoDB, ODBC genérico) suportam apenas a Autenticação Básica.
  • Os pools SQL no Azure Synapse Analytics incluem as seguintes notas:
    • Para carregar dados no Azure Synapse Analytics, qualquer valor válido pode ser usado para IDENTITY.
    • Em um pool SQL sem servidor do Azure Synapse Analytics, as credenciais com escopo de banco de dados podem especificar uma identidade gerenciada do espaço de trabalho, nome da entidade de serviço ou token de assinatura de acesso compartilhado (SAS). O acesso por meio de uma identidade de usuário, habilitado pela autenticação de passagem do Microsoft Entra, também é possível com uma credencial com escopo de banco de dados, assim como o acesso anônimo ao armazenamento disponível publicamente. Para obter mais informações, consulte Tipos de autorização de armazenamento suportados.
    • Em um pool SQL dedicado do Azure Synapse Analytics, as credenciais com escopo de banco de dados podem especificar token de assinatura de acesso compartilhado (SAS), identidade de aplicativo personalizada, identidade gerenciada de espaço de trabalho ou chave de acesso de armazenamento.
Authentication T-SQL Supported Notes
Assinatura de Acesso Partilhado (SAS) CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'secret'; SQL Server 2022 e posterior, Instância Gerenciada SQL do Azure, Azure Synapse Analytics, Banco de Dados SQL do Azure
Identidade Gerida CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'MANAGED IDENTITY'; Banco de Dados SQL do Azure, Instância Gerenciada do SQL do Azure, SQL Server 2025 com Azure Arc Para ativar o Azure Arc, veja Managed Identity for SQL Server enabled by Azure Arc
Autenticação de passagem do Microsoft Entra via Identidade do Usuário CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'USER IDENTITY'; Azure SQL Database, SQL database in Microsoft Fabric * No Azure Synapse, consulte Microsoft Entra Connect: autenticação de passagem
Autenticação básica da chave de acesso do 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

* Na base de dados SQL no Microsoft Fabric, se não for especificada nenhuma credencial com âmbito de base de dados, o método de autenticação passa por defeito a 'USER IDENTITY' e utiliza o login do utilizador Entra ID como contexto.

SECRET = 'segredo'

Especifica o segredo necessário para a autenticação de saída. SECRET é necessário para importar um arquivo do armazenamento de Blob do Azure. Para carregar do armazenamento de Blob do Azure no Azure Synapse Analytics ou no 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 (?). Quando você usar a chave SAS, remova a entrelinha ?.

Remarks

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

Para proteger as informações confidenciais dentro da credencial de escopo do banco de dados, é necessária uma chave mestra de banco de dados (DMK). O DMK é uma chave simétrica que criptografa o segredo na credencial com escopo do banco de dados. O banco de dados deve ter um DMK antes que qualquer credencial de escopo de banco de dados possa ser criada. Um DMK deve ser criptografado com uma senha forte. O Banco de Dados SQL do Azure criará um DMK com uma senha forte 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 o DMK em um banco de dados lógico master . A senha da chave mestra é desconhecida para a Microsoft e não pode ser detetada após a criação. Por esse motivo, é recomendável criar um DMK antes de criar uma credencial com escopo de banco de dados. Para obter mais informações, consulte CREATE MASTER KEY (Transact-SQL).

Quando IDENTITY é um usuário do Windows, o segredo pode ser a senha. O segredo é criptografado usando a chave mestra de serviço (SMK). Se o SMK for regenerado, o segredo será criptografado novamente usando o novo SMK.

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

As informações sobre credenciais com escopo de banco de dados são visíveis na exibição de catálogo sys.database_scoped_credentials .

Aqui estão algumas aplicações de credenciais com escopo de 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 de escopo do banco de dados chamada AppCred. A credencial de escopo do banco de dados contém o usuário Mary5 do Windows e uma senha.

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL AppCred WITH IDENTITY = 'Mary5',
    SECRET = '<EnterStrongPasswordHere>';

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 pode ser usada para criar uma fonte de dados externa, que pode fazer operações em massa, como BULK INSERT (Transact-SQL) e OPENROWSET (Transact-SQL).

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL MyCredentials
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'QLYMgmSXMklt%2FI1U6DcVrQixnlU5Sgbtk1qDRakUBGs%3D';

C. Criar uma credencial com escopo de banco de dados para a Conectividade PolyBase com o Repositório Azure Data Lake

O exemplo a seguir cria uma credencial de escopo de 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 Repositório Azure Data Lake usa um aplicativo Microsoft Entra para autenticação de serviço a serviço.

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

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
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)

O SQL Server 2025 (17.x) introduz suporte para identidades geridas pelo Microsoft Entra. Para obter informações sobre como usar uma identidade gerenciada com o SQL Server habilitado pelo Azure Arc, consulte Identidade gerenciada.

SP_CONFIGURE 'allow server scoped db credentials',1; 
RECONFIGURE;  

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

#. Crie uma credencial com âmbito de base de dados usando o Microsoft Entra ID

Aplica-se a:Azure SQL Database, SQL database in Microsoft Fabric

No Azure SQL Database e na base de dados SQL no Microsoft Fabric, é possível usar o seu próprio login do Entra ID para autenticar uma fonte de dados externa.

Na base de dados SQL no Microsoft Fabric, se não for especificada nenhuma credencial com âmbito de base de dados, o método de autenticação utiliza USER IDENTITY por defeito e utiliza o login de utilizador do Entra ID como contexto.

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