我有;
当我执行代码以创建外部表时,会出现此错误:
无法获取所提供数据库的凭据机密,并且 凭据。数据库名称= 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内,但属于安全权限。
答案 0 :(得分:0)
我有同样的问题。后来,我发现创建范围凭证时缺少秘密。 应该是这样的:
CREATE DATABASE SCOPED CREDENTIAL credname
WITH
IDENTITY = 'exact_mi_name',
SECRET = 'adfNSkGPaTuryRdqt9sPAnjPW8xEzM7kQIYt' // data lake key
;