无法从Synapse Analytics访问ADLS

时间:2020-03-03 12:05:09

标签: azure-managed-identity azure-synapse

我有;

  1. 主密钥。
  2. 数据库范围的凭证。
  3. 外部数据源。
  4. 文件格式。
  5. 用户为Azure SQL Server创建了托管身份
  6. 我的ADLS存储帐户中对该托管身份
  7. 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内,但属于安全权限。

1 个答案:

答案 0 :(得分:0)

我有同样的问题。后来,我发现创建范围凭证时缺少秘密。 应该是这样的:

CREATE DATABASE SCOPED CREDENTIAL credname
WITH
    IDENTITY = 'exact_mi_name',
    SECRET = 'adfNSkGPaTuryRdqt9sPAnjPW8xEzM7kQIYt' // data lake key
;