在最近的项目中由于出帐和计费的数据不在同一台服务器上,需要用到跨库查询.
现把查询语句给出
select * into tmptable from openquery([demo],''select * from demoinfo.dbo.出帐(''200812''')''),
这里需要对远程服务器进行注册
注册方式如下:
Exec sp_droplinkedsrvlogin DBVIP,Null
Exec sp_dropserver DBVIP
EXEC sp_addlinkedserver
@server='DBVIP',--被访问的服务器别名
@srvproduct='',
@provider='SQLOLEDB',
@datasrc='Server2' --要访问的服务器
EXEC sp_addlinkedsrvlogin
'DBVIP', --被访问的服务器别名
'false',
NULL,
'sa', --帐号
'thankyoubobby' --密码
Select * from DBVIP.pubs.dbo.orders
如果你要访问的远程服务器不能使用机器名进行访问的话,那么需要使用ip地址替换Server2来实现.
参考资料:http://www.cnitblog.com/MartinYao/archive/2007/04/12/25647.aspx
在具体使用中
SELECT * FROM OPENQUERY(demo ,'select * from tbdemo' )
UPDATE OPENQUERY (demo, 'SELECT id FROM tbdemo WHERE id = 101')
SET name = 'hello';
INSERT OPENQUERY (demo, 'SELECT id FROM tbdemo')
VALUES ('hello');
DELETE OPENQUERY (demo, 'SELECT id FROM tbdemo WHERE name = ''hello''');
如果数据量比较小,那么ok,没有什么事了.如果数据量比较大,查询时间超长,报如下错误:
已以用户 SQLDATA 的身份执行。 链接服务器 "demo" 的 OLE DB 访问接口 "SQLNCLI" 报错。由于达到了资源限制,提供程序终止了执行。 [SQLSTATE 42000] (错误 7399) 无法对链接服务器 "demo" 的 OLE DB 访问接口 "SQLNCLI" 执行查询"''select * from demoinfo.dbo.出帐(''200812''')"。 [SQLSTATE 42000] (错误 7320). 该步骤失败。
Server:Msg 7399, Level 16, State 1, Line 1 OLE DB provider 'SQLOLEDB' reported an error.Execution terminated by the provider because a resource limit was reached.[OLE/DB provider returned message:Timeout expired]
那么首先在查询中使用DBCC TRACEON (7300, 3604) 语句,然后执行查询,则您可能会在错误信息中看到其他信息
我在使用了之后返回的错误信息是:
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
链接服务器"demo"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "查询超时已过期"。
消息 7399,级别 16,状态 1,第 1 行
链接服务器 "demo" 的 OLE DB 访问接口 "SQLNCLI" 报错。由于达到了资源限制,提供程序终止了执行。
消息 7320,级别 16,状态 2,第 1 行
无法对链接服务器 "demo" 的 OLE DB 访问接口 "SQLNCLI" 执行查询''select * from demoinfo.dbo.出帐(''200812''')"。
则对超时时间进行修改.
使用以下代码将远程查询超时值设置为 0(无限等待):
sp_configure 'remote query timeout', 0
go
reconfigure with override
go
参考资料:http://support.microsoft.com/kb/314530
分享到:
相关推荐
跨服务器导入数据SQL语句及其问题解决方案
跨服务器复制SQL表中数据.txt跨服务器复制SQL表中数据.txt
SQLSERVER中实现跨服务器数据访问的几个方法
sql关于跨服务器进行数据操作的例子,常用
跨服务器操作数据库 来进行数据的查询删除修改
该方案主要解决问题,比如服务器A部署了数据库A,里面储存的是用户的信息记录user,服务器B部署了数据库B,里面存储的是订单信息记录order,两个表可以通过user_id进行关联,如果是这样,用thinkPHP5该如何进行关联...
JAVA实现跨数据库服务器数据导出导入功能 可以是SQLSERVER 到MYSQL 之间的数据之间导入导出功能
SQL跨服务器操作 MSSQL可以跨服务器远程对MSSQL、Excel、DB2、Oracle、XML...等数据源执行操作,对不同的数据源提供不同的接口,这里使用MSDASQL驱动接口作为示例。
这个脚本实现了跨服务器增量同步mysql数据的功能,可以同步多个表。 在使用这个脚本的时候需要注意有修改的地方就是源表配置、目标表配置需要修改成自己的服务器和登录mysql数据库的用户名和密码。基础配置中需要...
跨服务器数据库访问,实现从一个数据库查询其他服务器上的数据库数据
thinkphp5.1跨服务器,thinkphp连接不同数据库
举例各种适用情况,从sql对sql跨服务器查询数据
随着企业业务系统的规划,多数据是必然,本文档介绍SQL跨服务器数据库查询、ORACEL跨数据查询、SQL与ORACLE间查询,是数据库交互学习的好资料
--创建链接服务器 exec sp_addlinkedserver 'ITSV','','SQLOLEDB','远程服务器名或ip地址' exec sp_addlinkedsrvlogin 'ITSV','false',null,'用户名','密码' --查询示例 select * from ITSV.数据库名.dbo.表名 --...
跨服务器SQL数据库数据同步
sqlserver定时器的设置,跨服务器的数据交接,里面有存储过程例子对A,B两个sqlserver服务器数据的互导,以及跨服务器需要设置的环境截图详解
针对Oracle数据库系统的Client/Server体系在管理跨服务器空间数据中存在的问题,利用远程内嵌过程和触发器等相关技术,设计并扩展了Oracle Spatial的功能,实现了基于Oracle的空间数据跨服务器分布式管理。
canal之-缓存一致性和跨服务器查询的数据异构解决方案.docx
主要介绍了MYSQL跨服务器同步数据详细过程,需要的朋友可以参考下
跨服务器间从一个数据库复制数据到另一个数据。