SQL Azure - 创建外部数据源 : Location as a Parameter?

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

我正在尝试创建一个将创建外部数据源的 SQL 存储过程。该位置是传递到过程中的参数(例如 azure 存储帐户容器)。我无法让 Location 变量被接受(如下面的代码片段所示)。

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
);

经过实验,我无法让它工作。可能吗?

最佳答案

您不能在 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

关于SQL Azure - 创建外部数据源 : Location as a Parameter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48670042/

相关文章:

php - Azure 如何覆盖 PHP 应用程序中的 MySQL 连接字符串?

azure - Azure SQL 数据库中的主键

c# - 获取存储帐户中的容器列表

sql - partition by/order by 是否暗示查询中的排序?

sql - 如果在 WHERE 子句中用参数(具有相同值)替换常量,为什么查询会急剧减慢?

mysql - sql查询问题

sql - 如何修复 SQL Server 2005 中 'LOGIN' 附近的错误语法

Azure 部署槽 - 向槽添加权限

读取文件时Azure Blob存储错误

c# - 在内存中创建文本文件,然后将其上传到 Azure Blob 存储