2017-07-07 93 views
1

我已经使用R函数编写了SQL Server存储过程。所有的工作都没有Sql Server Management Studio的问题,只有一个例外。在R中调用季节性包的SQL Server存储过程

我想使用季节性包,但Sql Server Management Studio中的代码失败。相同的代码在R(C:\ Program Files \ Microsoft SQL Server \ MSSQL13.SQLEXPRESS \ R_SERVICES \ bin)中工作得非常好。

Sys.setenv("X13_PATH" = "C:/Program Files/Microsoft SQL Server/MSSQL13.SQLEXPRESS/R_SERVICES/library/x13binary/bin"); 
require(seasonal); 
seasonal::checkX13() 

(我在这里包括了X13_PATH,因为它是必要的SQL Server R的工作 - 从我的桌面[R运行时,它不是必需的)。

显示的错误信息是:

STDERR message(s) from external script: 
Loading required package: seasonal 
X-13 installation test: 
    - X13_PATH correctly specified 
    - binary executable file found 
    - command line test run successful 
    - command line test produced HTML output 

Error : seasonal test run failed, with the message: 
Error : X-13 has run but produced no data 

Error details: 
    - X13_PATH:   C:/Program Files/Microsoft SQL Server/MSSQL13.SQLEXPRESS/R_SERVICES/library/x13binary/bin 
    - Full binary path: "C:/Program Files/Microsoft SQL Server/MSSQL13.SQLEXPRESS/R_SERVICES/library/x13binary/bin/x13ashtml.exe" 
    - Platform:   x86_64-w64-mingw32 
    - R-Version:  R version 3.2.2 (2015-08-14) 
    - seasonal-Version: 1.1.0 

来自R在sql目录返回完全相同的代码运行:

X-13 installation test: 
    - X13_PATH correctly specified 
    - binary executable file found 
    - command line test run successful 
    - command line test produced HTML output 
    - seasonal test run successful 
Congratulations! 'seasonal' should work fine! 

我授予这些文件夹完全控制权限(R,为R库文件夹,为X13二进制文件夹),希望这将解决问题,但它仍然失败...

任何想法如何解决这个请吗?

+0

根本原因:通过在sqlserver中执行外部R脚本而创建为临时文件的数据文件的名称非常长。此路径在由x13ashtml.exe过程读取的.spc文件中指定,该过程将数据文件名的限制设置为133. –

+0

创建符号链接到ExtensibilityData文件夹 mklink/dc:\ extensibilitydata- <完整实例名称> “C:\ Program Files \ Microsoft SQL Server \ MSSQL13.MSSQLSERVER \ MSSQL \ ExtensibilityData” eg mklink /dc:\extensibilitydata-MSSQL13.MSSQLSERVER“C:\ Program Files \ Microsoft SQL Server \ MSSQL13.MSSQLSERVER \ MSSQL \ ExtensibilityData” 编辑C:\ Program Files \ Microsoft SQL Server \ MSSQL13.MSSQLSERVER \ MSSQL \ Binn \ rlauncher.config, 将WORKING_DIRECTORY设置为这个新创建的符号链接。 例如 WORKING_DIRECTORY = C:\ extensibilitydata-MSSQL13.MSSQLSERVER –

+0

重新启动Sql Server启动板服务。在提升的命令提示符下执行:net stop mssqllaunchpad&net start mssqllaunchpad –

回答

2

答案已经在上面的评论中提交。

+3

你应该把答案放在你的答案中。评论不保证坚持。 –