【问题标题】:SQL Azure - Create External Data Source: Location as a Parameter?SQL Azure - 创建外部数据源:位置作为参数?
【发布时间】:2018-07-18 02:40:22
【问题描述】:

我正在尝试创建将创建外部数据源的 SQL 存储过程。该位置是传递给过程的参数(例如,天蓝色存储帐户容器)。我无法接受 Location 变量(如下面的代码 sn-p 所示)。

DECLARE @Location varchar(max)
SET @Location = 'https://somestorageaccount.blob.core.windows.net/uploads'

PRINT @Location
--DROP EXTERNAL DATA SOURCE uploads

CREATE EXTERNAL DATA SOURCE uploads
WITH
(
    TYPE = BLOB_STORAGE,
    LOCATION = @Location,
    CREDENTIAL = azurecred
);

错误信息是:

Msg 102, Level 15, State 1, Line 11
Incorrect syntax near '@Location'.

如果带有单引号的 url 替换了变量,它就可以工作。 IE。

CREATE EXTERNAL DATA SOURCE uploads
WITH
(
    TYPE = BLOB_STORAGE,
    LOCATION = 'https://somestorageaccount.blob.core.windows.net/uploads'
    CREDENTIAL = azurecred
);

经过试验,我无法让它发挥作用。有可能吗?

【问题讨论】:

    标签: sql azure-sql-database azure-blob-storage external-data-source


    【解决方案1】:

    您不能在 DDL 语句中使用变量。尝试使用动态 sql - 为您的 DDL 形成字符串并使用 sp_executesql 存储过程执行它

    ALTER PROCEDURE CETFromNewLocation    AS
    
    BEGIN
    
    DECLARE @location varchar(100)
    
    SET @location = 'data/2015/2015831'
    
    DECLARE @CreateExternalTableString varchar(100)
    
    SET @CreateExternalTableString = 
                                        'Create External TABLE stg_tbl (
                                                      [DateId] int NULL
                                        )
                                        WITH (LOCATION = ' + @location + ',                                      
                                                 DATA_SOURCE = my_external_source,
                                                 FILE_FORMAT = my_external_file_format,
                                                 REJECT_TYPE = VALUE,
                                                 REJECT_VALUE = 0
                                        )'
    
    EXEC sp_executesql @CreateExternalTableString
    
    END
    

    【讨论】:

    • 在使用基于 SSDT 的项目时,这不是一个真正可用的选项。我当然希望 SQL 团队解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 2019-12-07
    • 2020-05-02
    • 2020-06-16
    • 2021-08-01
    • 2020-06-29
    • 2020-07-03
    • 1970-01-01
    • 2020-09-20
    相关资源
    最近更新 更多