【问题标题】:Bulk INSERT into Azure SQL from BLOB saying file could not be opened从 BLOB 批量插入 Azure SQL 说文件无法打开
【发布时间】:2021-10-14 12:56:32
【问题描述】:

我正在尝试将 BLOB 容器中的 bulk_insert 插入 Azure SQL。

这是我的 StorageAccount:SanStore 容器:SanContainer

这是脚本

CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage
WITH ( TYPE = BLOB_STORAGE,
LOCATION = 'https://sanstore.blob.core.windows.net/sancontainer'
);

BULK INSERT ado_workitem
FROM 'WorkItemsComplete_Till_august_10.csv'
WITH (  DATA_SOURCE = 'SanStore',
        FIELDTERMINATOR=',',
        ROWTERMINATOR='\n',
        FIRSTROW=2,
        BATCHSIZE=10000);

该文件已经在我验证的 blob 容器中。但是在执行命令时它会触发

Msg 4861, Level 16, State 1, Line 23
Cannot bulk load because the file "WorkItemsComplete_Till_august_10.csv" could not be opened. Operating system error code 161(The specified path is invalid.).

请注意,我正在本地管理工作室尝试此脚本,并使用身份验证登录 SQL 服务器。

我错过了另一点。文件大小约为 300MB。这有什么问题吗。我听说有人使用 1 GB 文件玩批量插入

【问题讨论】:

  • create external data source 命令是否应该包含credential 参数? ref
  • 我相信凭据仅支持 SAS 令牌。考虑到您的组织中禁止使用访问密钥,您可以尝试创建user delegation SAS吗?

标签: sql-server azure-sql-database azure-blob-storage


【解决方案1】:

确保您使用 SAS 密钥访问存储。 Azure AD 标识和托管标识为currently not supported

还要确保您从中读取数据的 blob 存储是公共的。目前不支持用于 Blob 存储和服务端点的专用 IP。

因为我可以错误地看到 file cannot be openedspecified path is invalid.

尝试复制以下内容以防万一排除语法问题:

CREATE EXTERNAL DATA SOURCE MyAzureBlobStorage
WITH ( TYPE = BLOB_STORAGE,
LOCATION = 'https://sanstore.blob.core.windows.net/sancontainer/folder'
);

BULK INSERT ado_workitem
FROM 'WorkItemsComplete_Till_august_10.csv'
WITH (  DATA_SOURCE = 'SanStore',
        FIELDTERMINATOR=",",
        ROWTERMINATOR="\n",
        FIRSTROW=2,
        BATCHSIZE=10000);

进一步你可以参考:Troubleshooting BULK INSERT and OPENROWSET issues on Azure SQL Database

【讨论】:

  • 不幸的是,由于安全限制,我们的环境中禁用了 SAS 密钥。仅启用 Azure AD 身份验证
  • 不幸的是,根据Known issues,您只能使用 SAS Key。由于用户委托 SAS 仅适用于 Blob 存储,因此您可以尝试说服他们考虑类型 User delegation SAS。使用 (Azure AD) 凭据以及为 SAS 指定的权限进行保护。
猜你喜欢
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多