使用 OPENROWSET BULK 从已安装的 Azure 文件存储(而非 Blob)上托管的文件导入数据时出现权限问题

问题描述 投票:0回答:1

我正在将旧数据库系统从本地迁移到 Azure。该数据库不是作为 Azure 数据库托管,而是托管在基于 Azure 的 VM 中。这一切都已设置完毕并正在运行。我们还配置了 Azure 文件存储,因为数据库系统有点像香肠机,它会摄取文件、转换文件,然后创建新文件。

摄取是通过 OPENROWSET BULK 命令完成的,并通过 XP_CMDSHELL 和 BCP 输出(是的,我知道 - 我们无法更改它)。

目前,Azure 文件存储(它是不是 blob 存储)作为驱动器安装,SQL Server 可以看到它。它可以运行 XP_CMDSHELL 命令将文件从 Azure 存储移动到本地驱动器,反之亦然,并且可以移动 Azure 存储本身上的文件。但是,Openrowset 和 BCP 命令都会失败,并且权限被拒绝。无论它们是从代理运行还是从 SSMS 作为查询运行,都会发生这种情况。

请注意,从 CMD 窗口(未提升)执行 BCP 命令时不会出现问题。只有在XP_CMDSHELL执行时才会出现问题。

有人对问题所在有任何建议吗?运行命令的帐户是 Windows 帐户,并且在 SQL Server 中配置为系统管理员。它也是服务器管理员组的成员。

azure t-sql bcp azure-files
1个回答
0
投票

我们最终找到了解决方案。由于 Azure 文件共享位于与服务器不同的 AAD 上,因此存在一些问题。重新创建文件共享修复了 gremlin 导致的问题。

© www.soinside.com 2019 - 2024. All rights reserved.