Azure Synapse无服务器SQL池创建数据库范围凭据报错如何解决?
修正Azure Synapse无服务器SQL池创建数据库范围凭据的语法错误
Azure Synapse无服务器SQL池的CREATE DATABASE SCOPED CREDENTIAL语法和专用SQL池存在差异,不能随意指定自定义的IDENTITY值,必须根据使用场景选择合法的标识类型,以下是不同场景下的正确写法:
场景1:使用共享访问签名(SAS)访问外部存储
如果凭据用于通过SAS令牌访问Azure存储(如Blob存储、ADLS Gen2),IDENTITY必须固定为'SHARED ACCESS SIGNATURE',示例语句:
CREATE DATABASE SCOPED CREDENTIAL myCredential WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = '你的SAS令牌(注意移除令牌开头的?符号)';
场景2:使用Azure AD服务主体
若使用Azure AD服务主体进行身份验证,IDENTITY需填写服务主体的应用程序ID,SECRET为服务主体的客户端密码:
CREATE DATABASE SCOPED CREDENTIAL myCredential WITH IDENTITY = '<Azure AD服务主体应用程序ID>', SECRET = '<服务主体客户端密码>';
场景3:使用Synapse托管身份
如果使用Synapse工作区的系统托管身份,IDENTITY固定为'Managed Identity',且不需要指定SECRET:
CREATE DATABASE SCOPED CREDENTIAL myCredential WITH IDENTITY = 'Managed Identity';
错误原因说明
你原语句中使用自定义字符串'test'作为IDENTITY值,这在无服务器SQL池中是不被允许的,无服务器池要求IDENTITY必须是上述几种预定义的合法标识类型,因此触发了语法错误。
内容的提问来源于stack exchange,提问作者Erechtheus
相关产品推荐
相关产品推荐

