我的目标是从位于 Azure 存储容器中的 Parquet 文件创建 Polybase 外部表。
SQL Server 2019 (RTM-CU22-GDR) (KB5029378) - 15.0.4326.1 (X64)
StorageV2(通用 v2)(LRS)
文件是使用以下命令从 SQL Server 导出的: parquet-cpp-arrow 版本 4.0.0
我知道我使用的 SAS 令牌在开始/结束日期、允许的权限/服务/资源类型、IP 防火墙等方面可能很好,因为我使用相同的令牌来单元测试上传和下载在 PowerShell 中以编程方式文件。
这是我迄今为止尝试创建外部表时使用的代码:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<MyMasterKey>';
GO
CREATE DATABASE SCOPED CREDENTIAL ArchiveCredential
WITH IDENTITY = '<MyStorageAccount>',
SECRET = '<MyAccountKey>';
GO
CREATE EXTERNAL DATA SOURCE ArchiveDataSource
WITH (
LOCATION = 'wasbs://<MyContainer>@<MyStorageAccount>.blob.core.windows.net/',
CREDENTIAL = ArchiveCredential,
TYPE = HADOOP
);
GO
CREATE EXTERNAL FILE FORMAT ArchiveFormat
WITH ( FORMAT_TYPE = PARQUET );
GO
CREATE EXTERNAL TABLE CitiesArchive
(
CityID INT NOT NULL,
CityName VARCHAR(50) NOT NULL
)
WITH (
LOCATION = '/parquet/CitiesArchive.parquet',
DATA_SOURCE = ArchiveDataSource,
FILE_FORMAT = ArchiveFormat
);
GO
SELECT CityID,
CityName
FROM CitiesArchive;
GO
当我尝试从 CitiesArchive 中进行选择时,收到以下错误消息:
Msg 596, Level 21, State 1, Line 40
Cannot continue the execution because the session is in the kill state.
Msg 0, Level 20, State 0, Line 40
A severe error occurred on the current command.
The results, if any, should be discarded.
这是我用作指南的内容:
有什么想法吗?
检查 SQL Server 错误日志后,我看到以下消息:
来自 SPID 180 的会话的用户请求生成了致命异常。 SQL Server 正在终止此会话。 请联系产品支持服务并提供日志目录中生成的转储。
我决定重新启动服务器,然后再次尝试从外部表中进行选择。
问题现已解决!