我已经使用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二进制文件夹),希望这将解决问题,但它仍然失败...
任何想法如何解决这个请吗?
根本原因:通过在sqlserver中执行外部R脚本而创建为临时文件的数据文件的名称非常长。此路径在由x13ashtml.exe过程读取的.spc文件中指定,该过程将数据文件名的限制设置为133. –
创建符号链接到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 –
重新启动Sql Server启动板服务。在提升的命令提示符下执行:net stop mssqllaunchpad&net start mssqllaunchpad –