我有3个SQL Server,我在使用OpenRowset时会遇到奇怪的行为。
假设:
SQL:
SELECT a.*
FROM OPENROWSET('SQLOLEDB',
'Data Source=192.168.1.1;Persist Security
Info=True;uid=sa;pwd=password',
'SELECT * FROM dfs_database.dbo.dfs_vehicledata ') AS a;
这是一个奇怪的部分:如果我在服务器.3和.4上运行上述SQL语句,一切正常。
但是,如果我在服务器.2上运行SQL语句,我会得到:
OLE DB提供程序“SQLNCLI11”用于链接服务器“(null)”返回消息“延迟准备无法完成。”。
Msg 8180,Level 16,State 1,Line 7
声明无法准备。Msg 208,Level 16,State 1,Line 7
无效的对象名称'dfs_database.dbo.dfs_vehicledata'。
那么当其他人的工作正常时,什么可能会使一个关系无效?有任何想法吗?它们都是SQL Server Express,并且所有报告都有SQLNCLI11提供程序。
答案 0 :(得分:0)
使用OpenRowSet
,它看起来像这样:
sp_configure 'Show Advanced Options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO
OPENROWSET('SQLNCLI',
'Server=ipHere\ExtentionNameifHas;Database=DBName;Uid=userName;PWD=Password;'
,'SET FMTONLY OFF;SET NOCOUNT ON;SELECT * FROM
dfs_database.dbo.dfs_vehicledata'
答案 1 :(得分:0)
从错误日志中,尝试将OLE DB提供程序名称从“ SQLOLEDB”更改为“ SQLNCLI11”,以及 检查对象的位置。确保提供数据库,表等的完整位置。