我有;
- 一把万能钥匙。
- 数据库范围的凭据。
- 外部数据源。
- 文件格式。
- 用户为 Azure SQL Server 创建了托管标识。
- 我的 ADLS 存储帐户上该托管标识的RBAC参与者权限。
当我执行代码以创建外部表时,会引发此错误:
获取提供的数据库和凭据的凭据密钥失败。数据库名称 = DWShellDb,凭据名称 = devtechnicalpractice1_AdlsManagedIdentity,异常 = System.Data.SqlClient.SqlException (0x80131904):无法获取或解密凭据“devtechnicalpractice1_AdlsManagedIdentity”的机密。
这是代码:
CREATE DATABASE SCOPED CREDENTIAL credname
WITH
IDENTITY = 'exact_mi_name'
;
CREATE EXTERNAL DATA SOURCE datasourcename
WITH
( LOCATION = 'abfss://containername@storageaccountname.dfs.core.windows.net' ,
CREDENTIAL = credname ,
TYPE = HADOOP
) ;
CREATE EXTERNAL FILE FORMAT Header_CSV1
WITH (FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS(
FIELD_TERMINATOR = ',',
STRING_DELIMITER = '"',
FIRST_ROW = 1,
USE_TYPE_DEFAULT = True)
) ;
CREATE EXTERNAL TABLE [dbo].[tablename]
( [field1] VARCHAR(250) NULL,
[field2] VARCHAR(250) NULL,
[field3] VARCHAR(250) NULL )
WITH
(
LOCATION='/Countries/' ,
DATA_SOURCE = datasourcename,
FILE_FORMAT = Header_CSV1 ,
REJECT_TYPE = VALUE ,
REJECT_VALUE = 0
) ;
我认为错误不在TSQL 之内,而是安全权限。