使用HRESULT 0x80004004执行'sp_execute_external_script'期间发生'Python'脚本错误。 [英] A 'Python' script error occurred during execution of 'sp_execute_external_script' with HRESULT 0x80004004.

查看:191
本文介绍了使用HRESULT 0x80004004执行'sp_execute_external_script'期间发生'Python'脚本错误。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用带有python服务的数据库内SQL Server 2017来运行机器学习模型。


我收到此错误:

在使用HRESULT 0x80004004执行'sp_execute_external_script'期间发生'Python'脚本错误。 

当我运行模型时。 


可能出现什么问题?


我的代码如下:

 

DECLARE @myscript NVARCHAR(MAX)= N'
import sys
sys .path + = [" D:\\sql_queries"]
导入ml_models为ms
mydf = ms.fill_na(mydf)
mydf = ms.backup_columns(mydf)
mydf = ms.shaping_df(mydf)
mydf = ms.normalising_numerical_mydf(mydf)
mydf = ms.date_to_datetime(mydf)
mydf = ms.split_years_months(mydf)
mydf = ms.replacing_strings_with_integers(mydf)
mydf = ms.type_casting(mydf)
mydf = ms.label_encoder(mydf)
mydf = ms.drop_unnecessary_features(mydf)
x_train, x_valid,x_test,y_train,y_valid = ms.seperate_train_test_validation(mydf)
y_pred_rf = ms.random_forest_model(x_train,y_train,x_valid,y_valid,x_test)
y_pred_ada = ms.adboost_model(x_train,y_train,x_valid, y_valid,x_test)
y_pred_xgb = ms.xgb_model(x_train,y_tr ain,x_valid,y_valid,x_test)
y_pred_lgb = ms.light_gradient_boost_model(x_train,y_train,x_valid,y_valid,x_test)
predictions = y_pred_rf * 0.3 + y_pred_ada * 0.2 + y_pred_xgb * 0.2 + y_pred_xgb * 0.3
';

DECLARE @myquery NVARCHAR(MAX)= N'
select * from banktest.dbo.train
UNION ALL
select *,6 as loan_default from banktest.dbo .test;'
;

DECLARE @predictions float;

EXEC sp_execute_external_script
@language = N'Python'
,@ script = @myscript
,@ input_data_1 = @myquery
,@ input_data_1_name = N 'mydf'
,@ output_data_1_name = N'predictions'
,@ parallel = 1
,@ params = N'@ predictions float out'
,@ predictions = @predictions OUT
WITH RESULT SETS((predict_value nvarchar(MAX)));

解决方案

不确定,但它可能是权限问题。也许您需要从SQL使用的默认python目录运行脚本,或者可能更改D:\ sql_queries文件夹的权限。 


HTH


I am using an in-database SQL Server 2017 with python services to run a Machine Learning model.

I get this error:

A 'Python' script error occurred during execution of 'sp_execute_external_script' with HRESULT 0x80004004. 

when I run the model. 

What could be the possible problem?

My code is as below:

DECLARE @myscript NVARCHAR(MAX) = N' import sys sys.path += ["D:\\sql_queries"] import ml_models as ms mydf = ms.fill_na(mydf) mydf = ms.backup_columns(mydf) mydf = ms.shaping_df(mydf) mydf = ms.normalising_numerical_mydf(mydf) mydf = ms.date_to_datetime(mydf) mydf = ms.split_years_months(mydf) mydf = ms.replacing_strings_with_integers(mydf) mydf = ms.type_casting(mydf) mydf = ms.label_encoder(mydf) mydf = ms.drop_unnecessary_features(mydf) x_train, x_valid, x_test, y_train, y_valid = ms.seperate_train_test_validation(mydf) y_pred_rf = ms.random_forest_model(x_train, y_train, x_valid, y_valid, x_test) y_pred_ada = ms.adboost_model(x_train, y_train, x_valid, y_valid, x_test) y_pred_xgb = ms.xgb_model(x_train, y_train, x_valid, y_valid, x_test) y_pred_lgb = ms.light_gradient_boost_model(x_train, y_train, x_valid, y_valid, x_test) predictions = y_pred_rf*0.3 + y_pred_ada*0.2 + y_pred_xgb*0.2 + y_pred_xgb*0.3 '; DECLARE @myquery NVARCHAR(MAX) = N' select * from banktest.dbo.train UNION ALL select *, 6 as loan_default from banktest.dbo.test;' ; DECLARE @predictions float; EXEC sp_execute_external_script @language = N'Python' , @script = @myscript , @input_data_1 = @myquery , @input_data_1_name = N'mydf' , @output_data_1_name = N'predictions' , @parallel = 1 , @params = N'@predictions float out' , @predictions = @predictions OUT WITH RESULT SETS ((predicted_value nvarchar(MAX)));

解决方案

Not certain, but it could be a permissions issue. Perhaps you need to run the script from the default python directory that SQL is using, or maybe change permissions on the D:\sql_queries folder. 

HTH


这篇关于使用HRESULT 0x80004004执行'sp_execute_external_script'期间发生'Python'脚本错误。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆