【发布时间】:2021-10-15 07:35:44
【问题描述】:
我正在尝试了解我在 SQL Server 2019 中的外部语言设置有什么问题。
我无法使用我的语言“Test1”执行任何语句,该语言被设计为一种额外的 Python 外部语言。我的目标是拥有多个 Python 外部语言,这样我就可以为每个拥有单独的库,从而模拟虚拟环境。
我失败的脚本是:
EXEC sp_execute_external_script
@language =N'TEST1',
@script=N'
import pandas as pd
import sys
df = pd.DataFrame({"Version": sys.path + [ sys.executable ]})
OutputDataSet = df'
WITH RESULT SETS (([Version] nvarchar(256)));
此脚本使用 SQL Server 2019 机器学习服务提供的“Python”语言执行得很好。
我的(无用的)错误消息是:
消息 39004,第 16 级,状态 20,第 87 行 执行“sp_execute_external_script”期间发生“TEST1”脚本错误,HRESULT 为 0x80004004。
完成时间:2021-08-11T16:32:50.5880126-04:00
我的设置是:
-- "Ensure that Machine Learning Services and Language Extensions are installed"
EXEC sp_configure 'external scripts enabled', 1
RECONFIGURE WITH OVERRIDE;
GO
IF EXISTS(SELECT TOP 1 1 FROM sys.external_languages L WHERE L.language = 'TEST1')
BEGIN
DROP EXTERNAL LANGUAGE TEST1
END
GO
-- From: https://github.com/microsoft/sql-server-language-extensions/releases/tag/Python-v1.1.0
CREATE EXTERNAL LANGUAGE TEST1
FROM (CONTENT = N'C:\LanguageExtensions\python-lang-extension-windows-release.zip', FILE_NAME = 'pythonextension.dll');
GO
C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log\ExtensibilityLog 处的错误日志说:
2021-08-11 16:32:50.349 启动进程 exthost.exe 成功!
2021-08-11 16:32:50.581 清理会话 ID {9D7958AD-7EC2-48B4-B7E2-0D48D35DA2B5} 的上下文 2021-08-11 16:32:50.581 无法删除目录 C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\ExtensibilityData\Appcontainer1\9D7958AD-7EC2-48B4-B7E2-0D48D35DA2B5 与 HR 0x80070020。
2021-08-11 16:32:50.581 无法删除目录 C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\ExtensibilityData\Appcontainer1\26635237-9710-4B29-9233-5E72D1AA8204\Trace 中的文件与 HR 0x80070020。
2021-08-11 16:32:50.581 无法删除目录 C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\ExtensibilityData\Appcontainer1\26635237-9710-4B29-9233-5E72D1AA8204\Trace with HR 0x80070091.
2021-08-11 16:32:50.581 无法删除目录 C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\ExtensibilityData\Appcontainer1\26635237-9710-4B29-9233-5E72D1AA8204\Packages with HR 0x80070091.
2021-08-11 16:32:50.581 无法删除目录 C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\ExtensibilityData\Appcontainer1\FA7BEFC1-F529-43DB-B5D6-68F32EF94BB8,HR 为 0x80070020。
2021-08-11 16:32:50.581 无法删除目录 C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\ExtensibilityData\Appcontainer1\F401FD5A-8563-4361-BCBD-04570C1F6FA0,HR 为 0x80070020。
2021-08-11 16:32:50.581 无法删除目录 C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\ExtensibilityData\Appcontainer1\C83DDF61-F6E5-431B-9A2B-EC4EF545D506,HR 为 0x80070020。
2021-08-11 16:32:50.581 无法删除目录 C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\ExtensibilityData\Appcontainer1\685BE366-D4FE-4C91-83CC-DE1F04AC1FEB,HR 0x80070020。
2021-08-11 16:32:50.581 无法删除目录 C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\ExtensibilityData\Appcontainer1\26635237-9710-4B29-9233-5E72D1AA8204,HR 为 0x80070020。
我尝试过的事情:
-
我 BCP 将 external_language_file CONTENT varbinary 输出到磁盘,以确认它获得了正确的文件并且它具有正确的内容。如果你想试试这个,你还需要创建一个 .fmt 文件来确保没有前导字节。
-
我在 rlauncher.config 中关闭了清理并将 TRACE 级别设置为 4,以便更好地报告错误
-
我授予
C:\ProgramData\MSSQLSERVER\Temp-PY和C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\ExtensibilityData下的AppContainer0、1、2 对“所有应用程序包”和“MSSQLLaunchpad”的完全控制权 -
我将
C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\PYTHON_SERVICES放在系统路径上
有什么想法吗?我觉得支持另一种 Python 语言应该很简单。
C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\PYTHON_SERVICES 提供的语言版本可能与https://github.com/microsoft/sql-server-language-extensions/releases/tag/Python-v1.1.0 的预期不符?
【问题讨论】:
标签: sql-server administration sql-server-2019