如何创建指向SQL Server非默认架构对象的Azure Data Explorer外部表?
在Azure Data Explorer中创建指向SQL Server非默认架构视图的外部表(无需修改用户默认架构)
无需修改连接用户的默认架构,有两种可行方案:
方案1:在table参数中用方括号包裹架构+视图名
直接将架构名与视图名组合,用方括号包裹后填入table参数,示例代码如下:
.create-or-alter external table ABC ( -- 此处填写列定义,例如: Id:int, Name:string ) kind = sql table = ['XYZ.ABC'] ( h@"Server=tcp:<你的SQL服务器名>.database.windows.net,1433;Initial Catalog=ACME;Persist Security Info=False;User ID=ADX_Reader;Password=<你的密码>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" )
这种方式符合文档中“若表名包含点号,可使用['Name.of.the.table']表示法”的规则,本质是让ADX正确识别SQL Server中跨架构的对象引用。
方案2:在连接字符串中指定Current Schema参数
在SQL连接字符串里添加Current Schema=XYZ;,为当前连接会话设置默认架构,无需修改用户的永久默认架构,示例代码:
.create-or-alter external table ABC ( -- 此处填写列定义 Id:int, Name:string ) kind = sql table = ABC ( h@"Server=tcp:<你的SQL服务器名>.database.windows.net,1433;Initial Catalog=ACME;Persist Security Info=False;User ID=ADX_Reader;Password=<你的密码>;Current Schema=XYZ;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" )
该参数会在连接生效时临时将会话的默认架构设为XYZ,仅对当前外部表的连接生效,不影响用户的全局默认架构设置。
内容的提问来源于stack exchange,提问作者DocZerø
相关产品推荐
相关产品推荐

