【发布时间】:2017-05-26 18:32:11
【问题描述】:
所有涉及的表都被授权选择、更新、删除、插入。我正在尝试执行一个程序并收到该错误。
我使用了odbcDriverConnect,因为我猜任何连接参数都可以解决我的问题(我尝试了trusted_connection 和autocommit)。
cc = odbcDriverConnect(connection = paste0('DRIVER={SQL Server};SERVER=localhost;DATABASE=XX;UID=user;PWD=pass;autocommit=True;trusted_connection=true'))
rst = sqlQuery(cc, 'exec dbo.usp_mm_xx')
print(rst)
[1] "[RODBC] ERROR: Could not SQLExecDirect 'exec dbo.usp_mm_xx'"
如果我从程序中退出insert,它运行正常。
当我尝试运行insert 时,我得到了同样的错误。
query=paste0('insert INTO dbo.X select * FROM dbo.Y a ',
'where not exists (select 1 from dbo.X b where a.c1=b.c1 and a.c2=b.c2)')
rst=sqlQuery(cc, query)
print(rst)
[1] "[RODBC] ERROR: Could not SQLExecDirect 'insert INTO dbo.X SELECT * FROM dbo.Y a where not exists (select 1 from dbo.X b where a.c1=b.c2 and a.c2=b.c2)'"
SQL 语句在数据库上运行正常,用户相同。
【问题讨论】:
-
Excute也被授予了吗? -
是的,在授予的程序上执行。它在我退出插入时运行。
-
程序的第一行有“Set nocount on”指令吗?它应该有。
-
tks,@DennesTorres,它成功了!你想回答,所以我可以投票给你吗?
insert into不起作用的任何原因?也许是行数?
标签: sql-server r stored-procedures insert rodbc