Compartir a través de


CREAR CREDENCIALES CON ALCANCE DE BASE DE DATOS (Transact-SQL)

Aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Analítica (PDW)Base de datos SQL en Microsoft Fabric

Crea una credencial de base de datos. Una credencial de base de datos no se asigna a un usuario de inicio de sesión o base de datos de un servidor. La base de datos utiliza la credencial para acceder al recurso externo cuando realiza una operación que requiere acceso.

Convenciones de sintaxis de Transact-SQL

Syntax

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

Arguments

credential_name

Especifica el nombre de la credencial con ámbito de base de datos que se va a crear. credential_name no puede comenzar con el signo de número (#). Las credenciales del sistema comienzan con ##. La longitud máxima de credential_name es de 128 caracteres.

IDENTITY = "identity_name"

Especifica el nombre de la cuenta que se debe usar al conectarse fuera del servidor.

  • Para importar un archivo desde Azure Blob Storage o Azure Data Lake Storage usando una clave compartida, el nombre de identidad debe ser SHARED ACCESS SIGNATURE. Para saber más sobre las firmas de acceso compartido, vea Uso de firmas de acceso compartido (SAS). Use solo IDENTITY = SHARED ACCESS SIGNATURE para una firma de acceso compartido.

  • Para importar un archivo desde Azure Blob Storage usando una identidad administrada, el nombre de identidad debe ser MANAGED IDENTITY.

  • Cuando uses Kerberos (Windows Active Directory o MIT KDC), no uses el nombre de dominio en el IDENTITY argumento. Solamente debe usar el nombre de la cuenta.

  • En una instancia de SQL Server, si creas una credencial con alcance de base de datos usando una Clave de Acceso al Almacenamiento usada como la SECRET, IDENTITY se ignora.

  • WITH IDENTITY no es necesario si el contenedor en Azure Blob Storage está habilitado para acceso anónimo. Para obtener un ejemplo de consulta de Azure Blob Storage con OPENROWSET BULK, consulte Importación en una tabla desde un archivo almacenado en Azure Blob Storage.

  • En SQL Server 2022 (16.x) y versiones posteriores, el conector de REST-API reemplaza HADOOP. Para Azure Blob Storage y Azure Data Lake Gen 2, el único método de autenticación admitido es la firma de acceso compartido. Para más información, vea CREATE EXTERNAL DATA SOURCE.

  • En SQL Server 2019 (15.x), el único origen de datos externo de PolyBase que admite la autenticación Kerberos es Hadoop. Todos los demás orígenes de datos externos (SQL Server, Oracle, Teradata, MongoDB y ODBC genérico) solo admiten la autenticación básica.

  • Los pools SQL en Azure Synapse Analytics incluyen las siguientes notas:

    • Para cargar datos en Azure Synapse Analytics, puedes usar cualquier valor válido para IDENTITY.
    • En un grupo de SQL sin servidor de Azure Synapse Analytics, las credenciales con ámbito de base de datos pueden especificar una identidad administrada del área de trabajo, un nombre de entidad de servicio o un token de firma de acceso compartido (SAS). El acceso mediante una identidad de usuario, habilitado mediante inicio de sesión de usuario con autenticación pasada de Microsoft Entra, también es posible con una credencial con alcance de base de datos, al igual que el acceso anónimo al almacenamiento público. Para más información, consulte Tipos de autorización de almacenamiento admitidos.
    • En un grupo de SQL dedicado de Azure Synapse Analytics, las credenciales con ámbito de base de datos pueden especificar el token de firma de acceso compartido (SAS), la identidad de aplicación personalizada, la identidad administrada del área de trabajo o la clave de acceso de almacenamiento.
Authentication T-SQL Supported Notes
Firma de acceso compartido (SAS) CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'secret'; SQL Server 2022 y versiones posteriores, Azure SQL Managed Instance, Azure Synapse Analytics, Azure SQL Database
Identidad administrada CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'MANAGED IDENTITY'; Azure SQL Database, Azure SQL Managed Instance, SQL Server 2025 con Azure Arc Para habilitar Azure Arc, consulte Identidad gestionada para SQL Server habilitada por Azure Arc
Autenticación de paso a través de Microsoft Entra a través de la identidad de usuario CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'USER IDENTITY'; Azure SQL Database, SQL database in Microsoft Fabric 1 En Azure Synapse, consulta Inicio de sesión de usuario con autenticación de paso de Microsoft Entra
Autenticación básica de clave de acceso S3 CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'S3 ACCESS KEY', SECRET = '<accesskey>:<secretkey>'; SQL Server 2022 y versiones posteriores
Orígenes de datos ODBC o Kerberos (MIT KDC) CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = '<identity_name>', SECRET = '<secret>'; SQL Server 2019 y versiones posteriores

1 En la base de datos SQL de Microsoft Fabric, si no especificas una credencial con alcance de base de datos, el método de autenticación se configura por defecto en 'IDENTIDAD DE USUARIO' y utiliza la cuenta de usuario Microsoft Entra ID como contexto.

SECRETO = 'secreto'

Especifica el secreto necesario para la autenticación de salida. SECRET es necesario para importar un archivo del almacenamiento de blobs de Azure. Para cargar desde Azure Blob Storage a Azure Synapse Analytics o Almacenamiento de datos paralelos, el secreto debe ser la clave de Azure Storage.

Warning

El valor de clave SAS puede comenzar con un signo de interrogación (?). Cuando use la clave SAS, quite el inicial ?.

Remarks

Una credencial con ámbito de base de datos es un registro que contiene la información de autenticación necesaria para conectarse a un recurso fuera de SQL Server. La mayoría de las credenciales incluyen un usuario y una contraseña de Windows.

Para proteger la información confidencial dentro de la credencial con ámbito de base de datos, se requiere una clave maestra de base de datos (DMK). DmK es una clave simétrica que cifra el secreto en la credencial con ámbito de base de datos. La base de datos debe tener un DMK antes de poder crear cualquier credencial con alcance de base de datos. Cifra el DMK con una contraseña fuerte. Azure SQL Database crea un DMK con una contraseña fuerte y seleccionada aleatoriamente como parte de la creación de la credencial con alcance de la base de datos, o como parte de la creación de una auditoría de servidor.

Los usuarios no pueden crear la DMK en una base de datos lógica master . La contraseña DMK es desconocida para Microsoft y no se puede descubrir tras la creación. Crea un DMK antes de crear una credencial con alcance de base de datos. Para obtener más información, vea CREATE MASTER KEY.

Cuando IDENTITY es usuario de Windows, el secreto puede ser la contraseña. El secreto se cifra con la clave maestra de servicio (SMK). Si regeneras el SMK, el secreto se vuelve a cifrar con el nuevo SMK.

Al conceder permisos para una firma de acceso compartido (SAS) para su uso con una tabla externa de PolyBase, selecciona tanto Contenedor como Objeto como tipos de recursos permitidos. Si no concedes estos permisos, podrías recibir el error 16535 o 16561 al intentar acceder a la tabla externa.

Para información sobre credenciales con alcance de base de datos, consulte la vista de catálogo sys.database_scoped_credentials .

Estas son algunas aplicaciones de credenciales con ámbito de base de datos:

Permissions

Requiere permiso CONTROL en la base de datos.

Examples

A. Creación de una credencial con ámbito de base de datos para la aplicación

En el ejemplo siguiente se crea una credencial con ámbito de base de datos denominada AppCred. Esta credencial contiene el usuario de Windows Mary5 y una contraseña.

Crea un DMK si no existe ya uno. No utilice una contraseña en blanco. Utilice una contraseña segura.

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

Crea una credencial con alcance de base de datos:

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

B. Creación de una credencial con ámbito de base de datos para una firma de acceso compartido

El siguiente ejemplo crea una credencial con alcance de base de datos que puedes usar para crear una fuente de datos externa. Esta credencial puede realizar operaciones masivas, como BULK INSERT y OPENROWSET BULK.

Crea un DMK si no existe ya uno. No utilice una contraseña en blanco. Utilice una contraseña segura.

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

Cree una credencial con ámbito de base de datos. Reemplace <key> por el valor adecuado.

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

C. Creación de una credencial con ámbito de base de datos para la conectividad de PolyBase con Azure Data Lake Store

En el ejemplo siguiente se genera una credencial con ámbito de base de datos que se puede usar para crear un origen de datos externo, que PolyBase puede usar en Azure Synapse Analytics.

Azure Data Lake Store utiliza una aplicación Microsoft Entra para la autenticación servicio-a-servicio.

Cree una aplicación de Microsoft Entra y documente los client_id, OAuth_2.0_Token_EndPoint y Key antes de intentar crear una credencial con ámbito de base de datos.

Crea un DMK si no existe ya uno. No utilice una contraseña en blanco. Utilice una contraseña segura.

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

Cree una credencial con ámbito de base de datos. Reemplace <key> por el valor adecuado.

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

D. Creación de una credencial con ámbito de base de datos mediante identidad administrada

Aplica a: SQL Server 2025 (17.x) y versiones posteriores

SQL Server 2025 (17.x) presenta compatibilidad con identidades administradas de Microsoft Entra. Para información sobre cómo usar una identidad gestionada con SQL Server habilitado por Azure Arc, consulte Identidad gestionada para SQL Server habilitada por Azure Arc.

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

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

E. Crear una credencial con alcance de base de datos usando Microsoft Entra ID

Aplica a: Azure SQL Database, base de datos SQL en Microsoft Fabric

En Azure SQL Database y SQL Database en Microsoft Fabric, puedes usar tu propia cuenta Microsoft Entra ID para autenticar una fuente de datos externa.

En la base de datos SQL en Microsoft Fabric, si no especificas una credencial con alcance de base de datos, el método de autenticación se USER IDENTITY asigna por defecto y utiliza la cuenta de usuario del ID de Entra como contexto.

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