SQL Synapse,在CREATE EXTERNAL TABLE中使用动态/参数化Azure容器

问题描述

在我们的情况下,源csv文件由客户隔离,即每个客户在Azure存储中都有一个容器。

sql Synapse中创建外部表时,是否可以通过容器名称作为参数来传递sql Synapse DB中没有多个外部数据表的方式?

    CREATE EXTERNAL DATA SOURCE AzureBlobStorage with (  
    TYPE = HADOOP,LOCATION ='wasbs://<**container100**>@<accountname>.blob.core.windows.net',CREDENTIAL = AzureStorageCredential  
    ); 

    CREATE EXTERNAL TABLE [dbo].[res1_Data] (  
    [ID] INT,[UniqueId] VARCHAR(50),[Status] VARCHAR(50) NULL,[JoinedDate] DATE
    )  
    WITH (LOCATION='<**container2**>/<folder>/<file>.csv',DATA_SOURCE = AzureBlobStorage,FILE_FORMAT = CEFormat  
    ); 

解决方法

很遗憾,您不能在 DDL 命令中使用变量。但是,您可以构建动态语句,然后使用 sp_executesql 执行此操作。

更多信息here