適用於:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
分析平台系統(PDW)
Microsoft Fabric 中的 SQL 資料庫
建立資料庫認證。 資料庫憑證不會對應到伺服器登入或資料庫使用者。 當資料庫執行需要存取的操作時,會使用該憑證來存取外部資源。
Syntax
CREATE DATABASE SCOPED CREDENTIAL credential_name
WITH IDENTITY = 'identity_name'
[ , SECRET = 'secret' ]
[ ; ]
Arguments
credential_name
指定要建立之資料庫範圍認證的名稱。
credential_name不能以數位 (#) 符號開頭。 系統認證開頭為 ##。
credential_name的最大長度為128個字元。
身分 = 'identity_name'
指定連接伺服器外時要使用的帳號名稱。
若要使用共用金鑰從 Azure Blob 儲存體或 Azure Data Lake Storage 匯入檔案,身分識別名稱必須為
SHARED ACCESS SIGNATURE。 如需共用存取簽章的詳細資訊,請參閱使用共用存取簽章 (SAS)。 針對共用存取簽章只能使用IDENTITY = SHARED ACCESS SIGNATURE。若要使用受控識別從 Azure Blob 儲存體匯入檔案,身分識別名稱必須為
MANAGED IDENTITY。使用 Kerberos(Windows Active Directory 或 MIT KDC)時,參數中不要使用網域名稱
IDENTITY。 它應只是帳戶名稱。在 SQL Server 實例中,如果你建立一個資料庫範圍的憑證,並使用儲存存取金鑰作為
SECRET,IDENTITY則會被忽略。WITH IDENTITY如果 Azure Blob 儲存容器啟用匿名存取,則不需要。 如需使用 查詢 Azure Blob 記憶體OPENROWSET BULK的範例,請參閱 從儲存在 Azure Blob 記憶體上的檔案匯入數據表。在 SQL Server 2022 (16.x) 和更新版本中,REST-API 連接器會取代 HADOOP。 針對 Azure Blob 記憶體和 Azure Data Lake Gen 2,唯一支援的驗證方法是共用存取簽章。 如需詳細資訊,請參閱 CREATE EXTERNAL DATA SOURCE。
在 SQL Server 2019 (15.x)中,唯一支援 Kerberos 驗證的 PolyBase 外部數據源是 Hadoop。 其他所有外部資料來源 (SQL Server、Oracle、Teradata、MongoDB、一般 ODBC) 僅支援基本驗證。
Azure Synapse Analytics 中的 SQL 池包含以下備註:
- 要將資料載入 Azure Synapse Analytics,您可以使用任何有效的值。
IDENTITY - 在 Azure Synapse Analytics 無伺服器 SQL 集區中,資料庫範圍認證可以指定工作區受控識別、服務主體名稱或共用存取簽章 (SAS) 令牌。 透過使用者 登入並使用 Microsoft Entra 直通認證,也能透過資料庫範圍的憑證存取,以及對公開儲存的匿名存取。 如需詳細資訊,請參閱支援的儲存體授權類型。
- 在 Azure Synapse Analytics 專用 SQL 集區中,資料庫範圍認證可以指定共用存取簽章 (SAS) 令牌、自定義應用程式識別、工作區受控識別或記憶體存取密鑰。
- 要將資料載入 Azure Synapse Analytics,您可以使用任何有效的值。
| Authentication | T-SQL | Supported | Notes |
|---|---|---|---|
| 共用存取簽章 (SAS) | CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'secret'; |
SQL Server 2022 和更新版本、Azure SQL 受控執行個體、Azure Synapse Analytics、Azure SQL 資料庫 | |
| 受控識別 | CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'MANAGED IDENTITY'; |
Azure SQL 資料庫、Azure SQL 受控執行個體、SQL Server 2025 搭配 Azure Arc | 要啟用 Azure Arc,請參見 由 Azure Arc 啟用的 SQL Server 管理身份 |
| 透過使用者身分識別Microsoft Entra 傳遞驗證 | CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'USER IDENTITY'; |
|
在 Azure Synapse 中,請參閱 User sign-in with Microsoft Entra pass-through authentication |
| S3 存取金鑰基本身份驗證 | CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'S3 ACCESS KEY', SECRET = '<accesskey>:<secretkey>'; |
SQL Server 2022 及更新版本 | |
| ODBC 資料來源或 Kerberos (MIT KDC) |
CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = '<identity_name>', SECRET = '<secret>'; |
SQL Server 2019 與更新版本 |
1 在 Microsoft Fabric 的 SQL 資料庫中,若未指定資料庫範圍的憑證,認證方法預設為「USER IDENTITY」,並以 Microsoft Entra ID 使用者帳號作為上下文。
SECRET = '秘密'
指定外寄驗證所需的秘密。 從 Azure Blob 儲存體匯入檔案需要 SECRET。 祕密必須是Azure 儲存體金鑰,才能從 Azure Blob 儲存體載入到 Azure Synapse Analytics 或平行處理資料倉儲。
Warning
SAS 索引鍵值可能以問號 ()? 開頭。 當您使用 SAS 鍵時,請移除前導 ?。
Remarks
資料庫範圍認證是包含驗證資訊的資料列,該資訊是連線到 SQL Server 外部資源時所需的資訊。 大部分認證都包含 Windows 使用者和密碼。
若要保護資料庫範圍認證內的敏感性資訊,需要資料庫主要密鑰 (DMK)。 DMK 是對稱金鑰,可加密資料庫範圍認證中的秘密。 資料庫必須先有 DMK,才能建立任何資料庫範圍的憑證。 用強密碼加密DMK。 Azure SQL 資料庫會建立一個帶有強密碼且隨機選擇的 DMK,作為建立資料庫範圍認證或建立伺服器稽核的一部分。
用戶無法在邏輯 master 資料庫上建立 DMK。 DMK 密碼對 Microsoft 來說是未知的,且建立後無法被發現。 在建立資料庫範圍驗證前先先建立 DMK。 如需詳細資訊,請參閱 CREATE MASTER KEY。
當 IDENTITY 是 Windows 使用者時,秘密可以是密碼。 該秘密會以服務主金鑰(SMK)加密。 如果你重新產生 SMK,秘密會被重新加密成新的 SMK。
在授予共享存取簽章(SAS)權限以用於 PolyBase 外部資料表時,請同時選擇容器與物件作為允許的資源類型。 若未授予這些權限,嘗試存取外部資料表時可能會收到錯誤 16535 或 16561。
有關資料庫範圍認證的資訊,請參閱 sys.database_scoped_credentials 目錄檢視。
下列是一些資料庫範圍認證的應用程式:
SQL Server 使用資料庫範圍認證來存取非公開 Azure Blob 儲存體或含 PolyBase 受 Kerberos 保護的 Hadoop 叢集。 如需詳細資訊,請參閱 CREATE EXTERNAL DATA SOURCE。
Azure Synapse Analytics 使用資料庫範圍認證來存取含 PolyBase 的非公開 Azure Blob 儲存體。 如需詳細資訊,請參閱 CREATE EXTERNAL DATA SOURCE。 如需 Azure Synapse 儲存體驗證的詳細資訊,請參閱搭配 Synapse SQL 使用外部資料表。
SQL 資料庫使用資料庫範圍的憑證作為 其彈性查詢 功能,允許跨多個資料庫分片進行查詢。
SQL Database 使用資料庫範圍認證將擴充事件檔案寫入 Azure Blob 儲存體。
SQL Database 將資料庫範圍認證用於彈性集區。 欲了解更多資訊,請參閱 彈性池協助你管理並擴展 Azure SQL 資料庫中的多個資料庫
BULK INSERT 和 OPENROWSET 使用資料庫範圍的憑證來存取 Azure Blob Storage 的資料。 欲了解更多資訊,請參閱 Azure Blob Storage 中資料的批量存取範例。
搭配 PolyBase 使用資料庫範圍認證,並 Azure SQL 受控執行個體 數據虛擬化功能。
對於
BACKUP TO URL和RESTORE FROM URL,請改用伺服器層級的憑證,透過 CREATE CREDENTIAL 來實現。使用資料庫範圍驗證憑證,並搭配 建立外部模型
Permissions
需要資料庫的 CONTROL 權限。
Examples
A. 為您的應用程式建立資料庫範圍認證
下列範例會建立稱為 AppCred 的資料庫範圍認證。 該資料庫範圍認證包含 Windows 使用者 Mary5 和密碼。
如果還沒有DMK,就創建一個。 請勿使用空白密碼。 請使用增強式密碼。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
建立資料庫範圍驗證憑證:
CREATE DATABASE SCOPED CREDENTIAL AppCred
WITH IDENTITY = 'Mary5',
SECRET = '<password>';
B. 建立共用存取簽章的資料庫範圍認證
以下範例建立了一個資料庫範圍的憑證,你可以用來建立 外部資料來源。 此憑證可執行批量操作,如 BULK INSERT 與 OPENROWSET BULK。
如果還沒有DMK,就創建一個。 請勿使用空白密碼。 請使用增強式密碼。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
建立資料庫限定的認證。 取代 <key> 為適當的值。
CREATE DATABASE SCOPED CREDENTIAL MyCredentials
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<key>';
C. 建立 PolyBase 連線至 Azure Data Lake Store 的資料庫範圍認證
下列範例會建立可以用於建立外部資料來源 (可在 Azure Synapse Analytics 中供 PolyBase 使用) 的資料庫範圍認證。
Azure Data Lake Store 使用 Microsoft Entra 應用程式進行服務對服務認證。
在您嘗試建立資料庫範圍認證之前,請先建立Microsoft Entra 應用程式 ,並記錄client_id、OAuth_2.0_Token_EndPoint 和 Key。
如果還沒有DMK,就創建一個。 請勿使用空白密碼。 請使用增強式密碼。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
建立資料庫限定的認證。 取代 <key> 為適當的值。
CREATE DATABASE SCOPED CREDENTIAL ADL_User
WITH IDENTITY = '<client_id>@<OAuth_2.0_Token_EndPoint>',
SECRET = '<key>';
D. 使用受控識別建立資料庫範圍認證
適用於:SQL Server 2025(17.x)及更新版本
SQL Server 2025 (17.x) 新增對 Microsoft Entra 管理身份的支援。 關於如何使用由 Azure Arc 啟用的 SQL Server 管理身份的資訊,請參見「由 Azure Arc 啟用的 SQL Server 管理身份」。
EXECUTE sp_configure 'allow server scoped db credentials', 1;
RECONFIGURE;
GO
CREATE DATABASE SCOPED CREDENTIAL [managed_id]
WITH IDENTITY = 'Managed Identity';
E. 使用 Microsoft Entra ID 建立資料庫範圍驗證憑證
適用於: Azure SQL 資料庫、Microsoft Fabric 中的 SQL 資料庫
在 Azure SQL 資料庫 和 Microsoft Fabric 的 SQL 資料庫中,你可以使用自己的 Microsoft Entra ID 帳號來驗證外部資料來源。
在 Microsoft Fabric 的 SQL 資料庫中,如果你沒有指定資料庫範圍的憑證,認證方法會預設並 USER IDENTITY 使用 Entra ID 使用者帳號作為上下文。
CREATE DATABASE SCOPED CREDENTIAL MyCredential
WITH IDENTITY = 'User Identity';