这里有个例子,你可以先试一下大版的写法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
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].
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].
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 我建议你先检查两者之间是否能互通再考虑连接
创建链服务器后,使用下面的语句: 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].
在SQL2008Ping一下SQL2000 IP地址通不通?
我在2012执行sp_configure,没有不支持对系统目录进行即席更新。这个错误
IP是能的。我用SQL2008 Server Manager studio 直接连SQL 2000的服务器,都没有问题,就是写代码查询就不行。
我在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
SQL2000实例--属性( SQL Server 是否配置为允许远程连接)?
如果都开了2008→2000的连接服务器,你可以直接:select * from [2000的ip].[库名]..[表名]吧
查询分析器用的驱动应该比较老的,换不同的驱动试试 SELECT * FROM OPENROWSET('MSDASQL',''DRIVER={SQL Server};SERVER=192.168.80.104;UID=sa;PWD=;', 'SELECT * FROM pubs.dbo.authors') SELECT * FROM OPENROWSET('SQLOLEDB','SERVER=192.168.80.104;UID=sa;PWD=;', 'SELECT * FROM pubs.dbo.authors')
SELECT * FROM OPENROWSET('SQLOLEDB.1','192.168.80.104';'sa';'', 'SELECT * FROM pubs.dbo.authors')
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
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].
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].
在SQL2008上执行的结果。SQL2000直接可以使用OPENROWSET,没有这个问题。
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
我建议你先检查两者之间是否能互通再考虑连接
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].
IP是能的。我用SQL2008 Server Manager studio 直接连SQL 2000的服务器,都没有问题,就是写代码查询就不行。
我在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
允许,我在其他的SQL2000服务器对这台SQL2000的服务器使用OPENROWSET都可以访问
用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。这是什么原因?
连接服务器是否允许混合登陆,sa账号是否启动?所连数据库是否设置远程连接允许,外围配置是否开启tcp/ip协议
多个的话 IP 后要制定实例名。
情况如下:我在我的虚拟机中做了一个SQL2000的服务器,在win8的安装了一个SQL2008,在SQL2008中使用openrowset联虚拟机中的SQL2000时,报下面的错误:
消息 18452,级别 14,状态 1,第 0 行
用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。win8上我装了sql2008和sql2000,现在分别用openrowset联接虚拟机上的SQL2000,都报这个错。
而在虚拟机上使用openrowset 联 win8的SQL2008和SQL2000都正常。
在主机上,可以打开虚拟机的共享目录,也可以直接使用查询分析器登陆虚拟机的SQL2000,可以查询,就是写命令就不行。
SELECT * FROM OPENROWSET('MSDASQL',''DRIVER={SQL Server};SERVER=192.168.80.104;UID=sa;PWD=;', 'SELECT * FROM pubs.dbo.authors')
SELECT * FROM OPENROWSET('SQLOLEDB','SERVER=192.168.80.104;UID=sa;PWD=;', 'SELECT * FROM pubs.dbo.authors')
第一列,语法不支持,第二条,报同样的错误:服务器: 消息 18452,级别 14,状态 1,行 1
用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。