求救:关于SQl2008 使用OpenROWSET的问题。

lujianyu1189 2014-08-27 11:38:05
情况如下:
Server 2008的服务器,安装了SQLserver 2008 64的数据库,现在想通过openrowset函数,调另一个SQL2000服务器的数据,报如下错误:

链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "登录超时已过期"。
链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "与 SQL Server 建立连接时发生了与网络相关的或特定于实例的错误。找不到或无法访问服务器。请检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。"。
消息 1326,级别 16,状态 1,第 0 行
命名管道提供程序: 无法打开与 SQL Server 的连接 [1326].


根据网上的方法,在外围配置设置中的已经把

AdHocRemoteQueriesEnabled改为了Ture

而且还执行了,开启分布式查询服务

net start msdtc

还试着创建了 链服务器,链服务器也创建成功了,但在查询时,依然报错。

SQL2000的服务器使用oprowset连这台SqlServer2008的服务器却没有问题,

现在不知道该怎么办了,求大神们支个招。
...全文
901 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
yellow_11990 2016-04-27
  • 打赏
  • 举报
回复
第二条相当有用,学习了!
Tiger_Zhao 2014-08-28
  • 打赏
  • 举报
回复
搜到一个帖子,原因是没装sp!!!
lujianyu1189 2014-08-27
  • 打赏
  • 举报
回复
还有一个不明白的问题是,创建链服务器时,选择SQLServer,怎么不需要输入 IP地址和数据库名称呢?非得要存储过程来添加吗?为什么创建orcale的链服务器就直接可以录入这些信息。
lujianyu1189 2014-08-27
  • 打赏
  • 举报
回复
引用 19 楼 DBA_Huangzj 的回复:
如果都开了2008→2000的连接服务器,你可以直接:select * from [2000的ip].[库名]..[表名]吧
不支持这样的写法。
lujianyu1189 2014-08-27
  • 打赏
  • 举报
回复
引用 18 楼 roy_88 的回复:
SQL2000实例--属性( SQL Server 是否配置为允许远程连接)?
允许,我在其他的SQL2000服务器对这台SQL2000的服务器使用OPENROWSET都可以访问
發糞塗牆 2014-08-27
  • 打赏
  • 举报
回复
如果都开了2008→2000的连接服务器,你可以直接:select * from [2000的ip].[库名]..[表名]吧
中国风 2014-08-27
  • 打赏
  • 举报
回复
SQL2000实例--属性( SQL Server 是否配置为允许远程连接)?
lujianyu1189 2014-08-27
  • 打赏
  • 举报
回复
引用 15 楼 DBA_Huangzj 的回复:
我在2012执行sp_configure,没有不支持对系统目录进行即席更新。这个错误
我在SQL2008上执行这个命令,没有问题。出来的结果如下: name minimum maximum config_value run_value access check cache bucket count 0 65536 0 0 access check cache quota 0 2147483647 0 0 Ad Hoc Distributed Queries 0 1 1 1 affinity I/O mask -2147483648 2147483647 0 0 affinity mask -2147483648 2147483647 0 0 affinity64 I/O mask -2147483648 2147483647 0 0 affinity64 mask -2147483648 2147483647 0 0 Agent XPs 0 1 1 1 allow updates 0 1 1 1 awe enabled 0 1 0 0 backup compression default 0 1 0 0 blocked process threshold (s) 0 86400 0 0 c2 audit mode 0 1 0 0 clr enabled 0 1 0 0 common criteria compliance enabled 0 1 0 0 cost threshold for parallelism 0 32767 5 5 cross db ownership chaining 0 1 0 0 cursor threshold -1 2147483647 -1 -1 Database Mail XPs 0 1 0 0 default full-text language 0 2147483647 2052 2052 default language 0 9999 30 30 default trace enabled 0 1 1 1 disallow results from triggers 0 1 0 0 EKM provider enabled 0 1 0 0 filestream access level 0 2 0 0 fill factor (%) 0 100 0 0 ft crawl bandwidth (max) 0 32767 100 100 ft crawl bandwidth (min) 0 32767 0 0 ft notify bandwidth (max) 0 32767 100 100 ft notify bandwidth (min) 0 32767 0 0 index create memory (KB) 704 2147483647 0 0 in-doubt xact resolution 0 2 0 0 lightweight pooling 0 1 0 0 locks 5000 2147483647 0 0 max degree of parallelism 0 64 0 0 max full-text crawl range 0 256 4 4 max server memory (MB) 16 2147483647 2147483647 2147483647 max text repl size (B) -1 2147483647 65536 65536 max worker threads 128 32767 0 0 media retention 0 365 0 0 min memory per query (KB) 512 2147483647 1024 1024 min server memory (MB) 0 2147483647 0 0 nested triggers 0 1 1 1 network packet size (B) 512 32767 4096 4096 Ole Automation Procedures 0 1 0 0 open objects 0 2147483647 0 0 optimize for ad hoc workloads 0 1 0 0 PH timeout (s) 1 3600 60 60 precompute rank 0 1 0 0 priority boost 0 1 0 0 query governor cost limit 0 2147483647 0 0 query wait (s) -1 2147483647 -1 -1 recovery interval (min) 0 32767 0 0 remote access 0 1 1 1 remote admin connections 0 1 0 0 remote login timeout (s) 0 2147483647 20 20 remote proc trans 0 1 1 1 remote query timeout (s) 0 2147483647 600 600 Replication XPs 0 1 0 0 scan for startup procs 0 1 0 0 server trigger recursion 0 1 1 1 set working set size 0 1 0 0 show advanced options 0 1 1 1 SMO and DMO XPs 0 1 1 1 SQL Mail XPs 0 1 0 0 transform noise words 0 1 0 0 two digit year cutoff 1753 9999 2049 2049 user connections 0 32767 0 0 user options 0 32767 0 0 xp_cmdshell 0 1 0 0
lujianyu1189 2014-08-27
  • 打赏
  • 举报
回复
引用 14 楼 roy_88 的回复:
在SQL2008Ping一下SQL2000 IP地址通不通?
IP是能的。我用SQL2008 Server Manager studio 直接连SQL 2000的服务器,都没有问题,就是写代码查询就不行。
發糞塗牆 2014-08-27
  • 打赏
  • 举报
回复
我在2012执行sp_configure,没有不支持对系统目录进行即席更新。这个错误
中国风 2014-08-27
  • 打赏
  • 举报
回复
在SQL2008Ping一下SQL2000 IP地址通不通?
lujianyu1189 2014-08-27
  • 打赏
  • 举报
回复
创建链服务器后,使用下面的语句: select * from openquery(caiwu, 'pubs.dbo.authors') 同样报错: 链接服务器"caiwu"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "登录超时已过期"。 链接服务器"caiwu"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "与 SQL Server 建立连接时发生了与网络相关的或特定于实例的错误。找不到或无法访问服务器。请检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。"。 消息 1326,级别 16,状态 1,第 0 行 命名管道提供程序: 无法打开与 SQL Server 的连接 [1326].
發糞塗牆 2014-08-27
  • 打赏
  • 举报
回复
c. 连接问题侦测:查看或配置远程服务器连接选项http://msdn.microsoft.com/zh-cn/library/ms179383(v=SQL.110).aspx i. Ipconfig.exe识别IP地址,客户端和服务器的IP、子网掩码、默认网关或DNS分配需要正确。 ii. Nslookup.exe查询目标SQL Server名字的DNS解释。再次之前使用ipconfig /flushdns 命令刷新DNS缓存。 iii. Ping.exe检验客户端和服务器的网络联接是否正确。 iv. 尝试使用telnet命令与1433端口建立连接 v. 使用SQLCMD.EXE联接服务器:Sqlcmd.exe –S SQL-B 我建议你先检查两者之间是否能互通再考虑连接
發糞塗牆 2014-08-27
  • 打赏
  • 举报
回复
在SQL 2008那台机上,在hosts文件中把2000的那台机的IP地址及对应的机器名添加进去试试
lujianyu1189 2014-08-27
  • 打赏
  • 举报
回复
引用 8 楼 DBA_Huangzj 的回复:
[quote=引用 7 楼 lujianyu1189 的回复:] sp_configure 'show advanced options', 1; RECONFIGURE; go sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE; GO SELECT a.* FROM OPENROWSET('SQLNCLI', 'Server=192.168.80.104;Trusted_Connection=yes;', 'SELECT * FROM pubs.dbo.authors') AS a; GO 错误如下: 配置选项 'show advanced options' 已从 1 更改为 1。请运行 RECONFIGURE 语句进行安装。 消息 5808,级别 16,状态 1,第 2 行 不支持对系统目录进行即席更新。 配置选项 'Ad Hoc Distributed Queries' 已从 1 更改为 1。请运行 RECONFIGURE 语句进行安装。 消息 5808,级别 16,状态 1,第 2 行 不支持对系统目录进行即席更新。 链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "登录超时已过期"。 链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "与 SQL Server 建立连接时发生了与网络相关的或特定于实例的错误。找不到或无法访问服务器。请检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。"。 消息 1326,级别 16,状态 1,第 0 行 命名管道提供程序: 无法打开与 SQL Server 的连接 [1326].
你这个是在2000上面执行的结果?[/quote] 在SQL2008上执行的结果。 SQL2000直接可以使用OPENROWSET,没有这个问题。
lujianyu1189 2014-08-27
  • 打赏
  • 举报
回复
EXEC master.dbo.sp_addlinkedserver @server = N'caiwu', @srvproduct=N'caiwu', @provider=N'SQLOLEDB', @datasrc=N'192.168.80.104' GO EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'caiwu', @locallogin = NULL , @useself = N'False', @rmtuser = N'sa', @rmtpassword = N'' GO 执行上面的语句时,提示成功, 使用链服务器执行下面的语句时,报错: Select * From caiwu.pubs.dbo.authors 链接服务器"caiwu"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "登录超时已过期"。 链接服务器"caiwu"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "与 SQL Server 建立连接时发生了与网络相关的或特定于实例的错误。找不到或无法访问服务器。请检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。"。 消息 1326,级别 16,状态 1,第 0 行 命名管道提供程序: 无法打开与 SQL Server 的连接 [1326].
發糞塗牆 2014-08-27
  • 打赏
  • 举报
回复
引用 7 楼 lujianyu1189 的回复:
sp_configure 'show advanced options', 1; RECONFIGURE; go sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE; GO SELECT a.* FROM OPENROWSET('SQLNCLI', 'Server=192.168.80.104;Trusted_Connection=yes;', 'SELECT * FROM pubs.dbo.authors') AS a; GO 错误如下: 配置选项 'show advanced options' 已从 1 更改为 1。请运行 RECONFIGURE 语句进行安装。 消息 5808,级别 16,状态 1,第 2 行 不支持对系统目录进行即席更新。 配置选项 'Ad Hoc Distributed Queries' 已从 1 更改为 1。请运行 RECONFIGURE 语句进行安装。 消息 5808,级别 16,状态 1,第 2 行 不支持对系统目录进行即席更新。 链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "登录超时已过期"。 链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "与 SQL Server 建立连接时发生了与网络相关的或特定于实例的错误。找不到或无法访问服务器。请检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。"。 消息 1326,级别 16,状态 1,第 0 行 命名管道提供程序: 无法打开与 SQL Server 的连接 [1326].
你这个是在2000上面执行的结果?
lujianyu1189 2014-08-27
  • 打赏
  • 举报
回复
sp_configure 'show advanced options', 1; RECONFIGURE; go sp_configure 'Ad Hoc Distributed Queries', 1; RECONFIGURE; GO SELECT a.* FROM OPENROWSET('SQLNCLI', 'Server=192.168.80.104;Trusted_Connection=yes;', 'SELECT * FROM pubs.dbo.authors') AS a; GO 错误如下: 配置选项 'show advanced options' 已从 1 更改为 1。请运行 RECONFIGURE 语句进行安装。 消息 5808,级别 16,状态 1,第 2 行 不支持对系统目录进行即席更新。 配置选项 'Ad Hoc Distributed Queries' 已从 1 更改为 1。请运行 RECONFIGURE 语句进行安装。 消息 5808,级别 16,状态 1,第 2 行 不支持对系统目录进行即席更新。 链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "登录超时已过期"。 链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "与 SQL Server 建立连接时发生了与网络相关的或特定于实例的错误。找不到或无法访问服务器。请检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。"。 消息 1326,级别 16,状态 1,第 0 行 命名管道提供程序: 无法打开与 SQL Server 的连接 [1326].
發糞塗牆 2014-08-27
  • 打赏
  • 举报
回复
引用 4 楼 lujianyu1189 的回复:
但在2008这台服务器上,有一个SQL2000的查询分析器能直接联那台2000的数据库。说明网络和服务器都是通的。
连通要考虑双向,单向连通的话就可能出现你这个问题
發糞塗牆 2014-08-27
  • 打赏
  • 举报
回复
这里有个例子,你可以先试一下大版的写法
sp_configure 'show advanced options', 1;
  RECONFIGURE;
  sp_configure 'Ad Hoc Distributed Queries', 1;
  RECONFIGURE;
  GO
  
  SELECT a.*
  FROM OPENROWSET('SQLNCLI', 'Server=Seattle1;Trusted_Connection=yes;',
       'SELECT GroupName, Name, DepartmentID
        FROM AdventureWorks2012.HumanResources.Department
        ORDER BY GroupName, Name') AS a;
  GO
  
加载更多回复(17)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧