CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)

适用于: 是SQL Server(所有支持的版本) 是Azure SQL 数据库 是Azure SQL 托管实例 是Azure Synapse Analytics 是并行数据仓库

创建数据库凭据。 数据库凭据不会映射到服务器登录或数据库用户。 只要数据库在执行需要访问权限的操作,数据库就可使用凭据访问外部位置。

主题链接图标 Transact-SQL 语法约定

语法

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

备注

若要查看 SQL Server 2014 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

参数

credential_name 指定正在创建的数据库范围凭据的名称。 credential_name 不能以数字符号 (#) 开头。 系统凭据以 ## 开头。

IDENTITY ='identityname' 指定从服务器外部进行连接时要使用的帐户名称 _ 。 要使用共享密钥从 Azure Blob 存储导入文件,标识名称必须是 SHARED ACCESS SIGNATURE。 若要将数据加载到 Azure Synapse Analytics,可以将任何有效的值用于标识。 有关共享访问签名的详细信息,请参阅使用共享访问签名 (SAS)。 使用 Kerberos(Windows Active Directory 或 MIT KDC)时,请勿在 IDENTITY 参数中使用域名。 它应只是帐户名称。

重要

支持 Kerberos 身份验证的唯一 PolyBase 外部数据源是 Hadoop。 所有其他外部数据源(SQL Server、Oracle、Teradata、MongoDB、通用 ODBC)仅支持基本身份验证。

备注

如果为 Azure Blob 存储中的容器启用了匿名访问,则不需要 WITH IDENTITY。 有关查询 Azure Blob 存储的示例,请参阅从 Azure Blob 存储上存储的文件导入表

SECRET ='secret' 指定发送身份验证所需的机密内容。 需要 SECRET 才可从 Azure Blob 存储导入文件。 若要从 Azure Blob 存储加载到 Azure Synapse Analytics 或并行数据仓库,机密必须是 Azure 存储密钥。

警告

SAS 密钥值可以“?”(问号)开头。 使用 SAS 密钥时,必须删除前导“?”。 否则会阻止操作。

备注

数据库范围凭据是一个记录,其中包含连接到 SQL Server 以外的资源所需的身份验证信息。 多数凭据包括一个 Windows 用户和一个密码。

创建数据库范围凭据之前,数据库必须具有主密钥用于保护凭据。 有关详细信息,请参阅 CREATE MASTER KEY (Transact-SQL)

当 IDENTITY 为 Windows 用户时,机密内容可以是密码。 机密内容使用服务主密钥进行加密。 如果重新生成服务主密钥,则使用新的服务主密钥重新加密机密内容。

可在 sys.database_scoped_credentials 目录视图中查看有关数据库范围凭据的信息。

以下是数据库范围凭据的一些应用:

权限

需要针对数据库的 CONTROL 权限。

示例

A. 为应用程序创建数据库范围凭据

以下示例创建名为 AppCred 的数据库范围凭据。 数据库范围凭据包含 Windows 用户 Mary5 和一个密码。

-- 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. 为共享访问签名创建数据库范围凭据

以下示例创建的数据库范围凭据可用于创建可执行批量操作(例如 BULK INSERTOPENROWSET)的外部数据源。 共享访问签名不能与 SQL Server、APS 或 Azure Synapse Analytics 中的 PolyBase 一起使用。

-- 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. 为到 Azure Data Lake Store 的 PolyBase 连接创建数据库范围凭据

以下示例创建的数据库范围凭据可用于创建可以由 Azure Synapse Analytics 中的 PolyBase 使用的外部数据源

Azure Data Lake Store 使用 Azure Active Directory 应用程序进行服务到服务身份验证。 请先创建 AAD 应用程序,并记录 client_id、OAuth_2.0_Token_EndPoint 和密钥,然后再尝试创建数据库范围凭据。

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

详细信息