Azure SQL外部数据源对虚拟网络上私有BLOB的访问被拒绝

Azure SQL外部数据源对虚拟网络上私有BLOB的访问被拒绝,azure,Azure,我已经为下面所示的外部数据源的大容量插入设置了一些SQL。外部数据源是一个私有blob,因此我使用(自由的)SAS机密 CREATE DATABASE SCOPED CREDENTIAL mycred WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'sv=2019-10-10&ss=bfqt&srt=sco&sp=rwdlacup&se=2025-04-30T01:41:12Z&st=2020-04

我已经为下面所示的外部数据源的大容量插入设置了一些SQL。外部数据源是一个私有blob,因此我使用(自由的)SAS机密

CREATE DATABASE SCOPED CREDENTIAL mycred WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'sv=2019-10-10&ss=bfqt&srt=sco&sp=rwdlacup&se=2025-04-30T01:41:12Z&st=2020-04-29T17:41:12Z&spr=https,http&sig=[REDACTED]';

CREATE EXTERNAL DATA SOURCE sqlinput WITH (
 TYPE = BLOB_STORAGE,
 LOCATION = 'https://test.blob.core.windows.net/mycontainer',
 CREDENTIAL = mycred,
);

BULK INSERT dbo.target
FROM 'data.csv'
WITH (DATA_SOURCE = 'sqlinput', FORMAT = 'CSV');
这很有效!然而,当我想将BLOB防火墙从所有网络更改为选定网络时,我的噩梦就开始了。遵循此SQL将产生以下错误:

Cannot bulk load because the file "data.csv" could not be opened. Operating system error code 5(Access is denied.).
我当时的做法是:

  • 在BLOB存储帐户防火墙和虚拟网络中我创建了一个新的虚拟网络
  • 然后针对资源的Blob为存储帐户(Microsoft.storage/storageAccounts)创建一个专用端点连接。(10.0.0.4)
  • 在SQL server的防火墙和虚拟网络中我将其添加到虚拟网络中
  • 在这个过程中的某个时刻,还创建了一个私有DNS区域,其中包含BLOB vnet IP(10.0.0.4)的主机条目
  • 这并不能解决SQL大容量插入的拒绝访问问题。我确实为新虚拟网络启动了一个新的虚拟机,目标是同一子网,它能够通过storage Explorer中的SAS连接字符串访问存储。我在VM上验证了它正在将test.blob.core.windows.net解析为内部化的IP。我还尝试为SQL server(10.0.0.5)提供一个端点,但没有效果

    还尝试:将位置更改为test.privatelink.blob.core.windows.net,这会产生不同的错误:

    Cannot bulk load because the file "data.csv" could not be opened. Operating system error code 12175(failed to retrieve text for this error. Reason: 317).
    
    在VM上,我尝试使用Storage Explorer,并更新连接字符串以包含privatelink,但在尝试浏览BLOB容器时,它最终进入了递归循环。我怀疑这并不是一个进步和死胡同,因为虚拟网络应该可以很好地解决所有问题

    注意:所有资源都在同一订阅/资源组/区域中