CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)

Se aplica a: síSQL Server (todas las versiones admitidas) SíAzure SQL Database SíInstancia administrada de Azure SQL síAzure Synapse Analytics síAlmacenamiento de datos paralelos

Crea una credencial de base de datos. Una credencial de base de datos no está asignada a un usuario de base de datos o de inicio de sesión de servidor. La base de datos utiliza la credencial para acceder a la ubicación externa siempre que la base de datos realice una operación que requiera acceso.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Nota

Para ver la sintaxis de Transact-SQL para SQL Server 2014 y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

credential_name Especifica el nombre de la credencial con ámbito de base de datos que se va a crear. credential_name no puede comenzar por el signo de almohadilla (#). Las credenciales del sistema comienzan por ##.

IDENTITY =" nombre_identidad " Especifica el nombre de la cuenta que se va a usar para conectarse fuera del servidor. Para importar un archivo desde Azure Blob Storage usando una clave compartida, el nombre de identidad debe ser SHARED ACCESS SIGNATURE. Para cargar datos en Azure Synapse Analytics, se puede usar cualquier valor válido para la identidad. Para saber más sobre las firmas de acceso compartido, vea Uso de firmas de acceso compartido (SAS). Cuando utilice Kerberos (Windows Active Directory o MIT KDC), no use el nombre de dominio en el argumento IDENTITY. Solamente debe usar el nombre de la cuenta.

Importante

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.

Nota

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

SECRET =" 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.

Advertencia

El valor de clave SAS debe empezar con un signo de interrogación (“?”). Cuando use la clave SAS, debe quitar el símbolo “?” inicial. Si no lo hace, puede que se bloquee su trabajo.

Observaciones

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 poder crear una credencial con ámbito de base de datos, la base de datos debe tener una clave maestra para proteger la credencial. Para obtener más información, vea CREATE MASTER KEY (Transact-SQL).

Si IDENTITY es un usuario de Windows, el secreto puede ser la contraseña. El secreto se cifra usando la clave maestra de servicio. Si se vuelve a generar la clave maestra de servicio, el secreto se vuelve a cifrar con la nueva clave maestra de servicio.

Encontrará información sobre las credenciales de ámbito de base de datos en la vista de catálogo sys.database_scoped_credentials.

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

  • SQL Server utiliza una credencial con ámbito de base de datos para acceder al almacenamiento de blobs no público de Azure o a los clústeres de Hadoop protegidos con Kerberos mediante PolyBase. Para obtener más información, consulte CREATE EXTERNAL DATA SOURCE (Transact-SQL).

  • Azure Synapse Analytics utiliza una credencial con ámbito de base de datos para acceder al almacenamiento de blobs no público de Azure mediante PolyBase. Para obtener más información, consulte CREATE EXTERNAL DATA SOURCE (Transact-SQL).

  • SQL Database usa las credenciales con ámbito de base de datos para su característica de consulta global. Se trata de la capacidad de hacer consultas en varias particiones de base de datos.

  • SQL Database usa las credenciales con ámbito de base de datos para escribir archivos de eventos extendidos en el almacenamiento de blobs de Azure.

  • SQL Database usa credenciales con ámbito de base de datos para grupos elásticos. Para obtener más información, vea Tame explosive growth with elastic databases (Control del crecimiento explosivo con bases de datos elásticas).

  • BULK INSERT y OPENROWSET utilizan credenciales con ámbito de base de datos para acceder a los datos desde el almacenamiento de blobs de Azure. Para obtener más información, consulte Ejemplos de acceso masivo a datos en Azure Blob Storage.

Permisos

Necesita el permiso CONTROL en la base de datos.

Ejemplos

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.

-- 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. Creación de una credencial con ámbito de base de datos para una firma de acceso compartido

En el ejemplo siguiente se crea una credencial con ámbito de base de datos que se puede usar para crear un origen de datos externo, que puede realizar operaciones masivas, como BULK INSERT y OPENROWSET. Las firmas de acceso compartido no se pueden usar con PolyBase en SQL Server, APS ni Azure Synapse Analytics.

-- 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. Creación de una credencial con ámbito de base de datos para establecer 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 usa una aplicación de Azure Active Directory para la autenticación de servicio a servicio. Cree una aplicación AAD y documente su client_id, OAuth_2.0_Token_EndPoint y la clave antes de intentar crear una credencial con ámbito de base de datos.

-- 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>'
;

Más información