使用 polybase 创建外部表在本地环境中是成功的,但在我们使用代理服务器访问 Internet 的生产环境中是不成功的。当尝试在生产环境中创建外部表时,出现以下错误“外部表访问因内部错误而失败:'调用 HdfsBridge_IsDirExist 时引发 Java 异常:错误 [com.microsoft.azure.storage.StorageException:发生未知故障:连接超时:连接]在访问外部文件时发生。'”我尝试使用 IE 启用代理设置。有没有办法为 SQL 启用代理以创建可以建立与 Azure blob 的连接的外部表。
以下是我们的要求: - 我们需要运行 Polybase 查询以在 Azure blob 上创建镶木地板文件
我们在数据库服务器上没有直接的互联网连接。
我们需要使用代理从外部连接到internat。
在 app.config 文件中启用代理后,我们可以通过 .Net Azure SDK 创建容器。
但是我们无法从 SQL 服务器运行外部表创建查询,并且我们收到以下错误。
“由于内部错误,EXTERNAL TABLE 访问失败:'调用 HdfsBridge_IsDirExist 时引发 Java 异常:错误 [com.microsoft.azure.storage.StorageException:发生未知故障:连接超时:连接] 访问外部文件时发生。' "
如果此错误是由于代理问题引起的,我们如何使用 azure 引用为外部表创建提供代理。
例如:示例外部表创建如下——EXTERNAL TABLE
CREATE EXTERNAL TABLE dbo.SampleExternal (
DateId INT NULL,
CalendarQuarter TINYINT NULL,
FiscalQuarter TINYINT NULL)
WITH (LOCATION='/SampleExternal.parquet',
DATA_SOURCE=AzureStorage,
FILE_FORMAT=ParquetFile);
----- 数据库范围凭证
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH
IDENTITY = 'user',
SECRET = 'XXXXXXXXXXX=='
;
- -数据源
CREATE EXTERNAL DATA SOURCE AzureStorage
WITH (
TYPE = HADOOP,
LOCATION = 'wasbs://XXContainer@XXStorage.blob.core.windows.net',
CREDENTIAL = AzureStorageCredential
);