在过去的两天里,我到处寻找问题的解决方案,但运气不佳。
我有一个从远程服务器删除记录的查询:
delete from OPENROWSET('SQLNCLI', 'Server=AB01SSQLEXPRESS;Database=ShopData;Trusted_Connection=yes', 'Select receipt_n,action_in, action_ty, action_field_name,action_field_type,action_field_data, terminal from tblData where receipt_n= 1 and terminal = 1');
我得到了这个错误:
OLE DB provider "SQLNCLI" for linked server "(null)" returned message "Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.".
Msg 7202, Level 11, State 1
它还建议使用sp_addlinkedserver
来添加链接服务器。
一些注意事项:
- 这种情况仅发生在此特定计算机+远程服务器上。在两个不同的工作站(计算机+服务器)上,它运行得很好
- 插入到OpenRowSet工作正常
- 从OpenRowSet中选择*工作正常。=>将删除更改为选择*可以正常工作
- 在查询的计算机上启用了Ad-hok
- 在通过openrowset查询的计算机上启用了远程连接
- 我可以ping服务器(AB01S)
到目前为止,我已经尝试通过GUI和sp_addlinkserver
添加链接设置。
我发现了问题!!
服务器名称(由于某种原因)不正确。@@servername
返回AB01S_88
解决方案是:运行以下代码,然后重新启动服务:
exec sp_dropserver @@servername
exec sp_addserver 'AB01S', local
exec sp_serveroption 'AB01S', 'data access' , 'true'