Azure Data Studio使用SQL内核执行R代码单引号冲突报错如何解决
单引号语法错误的解决方法
- 方案1:转义SQL字符串中的单引号
SQL Server中,单引号包裹的字符串内出现的单引号需要使用两个连续单引号进行转义,修改后的代码如下:
EXECUTE sp_execute_external_script @language = N'R' , @script = N' RNGKind("L''Ecuyer-CMRG") set.seed(123) '
- 方案2:调整R代码的字符串包裹方式
你可以在R代码中使用单引号包裹字符串参数,对名称本身的单引号使用R的转义符处理,避免和外层SQL的单引号边界冲突:
EXECUTE sp_execute_external_script @language = N'R' , @script = N' RNGKind(''L\'Ecuyer-CMRG'') set.seed(123) '
读取本地R脚本文件执行的实现方法
支持通过指定脚本文件执行R代码,你可以通过T-SQL的批量读取能力先把R脚本内容读取为变量,再传入存储过程执行,操作逻辑如下:
- 提前确认SQL Server机器学习服务的运行账户拥有R脚本所在路径的读取权限
- 使用如下代码执行外部R脚本:
DECLARE @rScript NVARCHAR(MAX); -- 替换为你的R脚本实际本地绝对路径 SELECT @rScript = BulkColumn FROM OPENROWSET(BULK N'C:\Scripts\my_r_code.R', SINGLE_BLOB) AS scriptContent; EXECUTE sp_execute_external_script @language = N'R' , @script = @rScript;
注意:路径不能为SQL Server服务账户无权限访问的路径(如普通用户的桌面目录、需要身份验证的网络路径等),否则会读取失败。
内容的提问来源于stack exchange,提问作者Varun Kuntal
相关产品推荐
相关产品推荐

