SQL跨服务器操作

  MSSQL可以跨服务器远程对 MSSQL、Excel、DB2、Oracle、XML...等数据源执行操作,对不同的数据源提供不同的接口,这里使用MSDASQL驱动接口作为示 例。

  1.建立连接服务器并建立链接服务器登陆

  EXEC sp_addlinkedserver 'test_remot','','MSDASQL',NULL,NULL,'DRIVER={SQL Server};SERVER=10.64.29.14;UID=sa;PWD=sa;'

   EXEC sp_addlinkedsrvlogin @rmtsrvname='test_remot',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='sa'

  GO

   这里只对已填的参数作下说明,其它的可以到MSDN查阅

   'test_remot':链接服务器名称

   'MSDASQL':驱动类型

  'DRIVER={SQL Server};SERVER=10.64.29.14;UID=sa;PWD=sa2005;':驱动连接字符串,SERVER(远程服务器IP) UID(远程数据库登录用户名) PWD(远程数据库登录密码)

   @rmtsrvname:链接服务器名称

   @locallogin:本地用户

  @rmtuser:远程用户

  @rmtpassword:远程用户密码

  2.查询

   示例:SELECT * FROM OPENQUERY(TEST, 'SELECT * FROM tableName')

  可简写为:SELECT filed1,filed2... FROM TEST.DataBaseName.dbo.tableName where filed=value

  3.插入

   示例:INSERT INTO OPENQUERY(TEST, 'SELECT * FROM tableName WHERE 1=0') VALUES(3,6,'ANDY')

  可简写为: INSERT INTO TEST.DataBaseName.dbo.tableName VALUES(3,6,'ANDY')

  4.更新

   示例:UPDATE OPENQUERY(TEST, 'SELECT * FROM tableName') SET role_id = 'ForTest' WHERE id = 3

  可简写 为:UPDATE TEST.DataBaseName.dbo.tableName SET role_id = 'ForTest' WHERE id = 3

  5.删除

  示例:DELETE OPENQUERY(TEST, 'SELECT * FROM tableName') WHERE id = 1

   可简写为:DELETE TEST.DataBaseName.dbo.tableName WHERE id = 1

  6.存储过程

   示例:EXEC TEST.DataBaseName.dbo.sp_OA_Copy @inputValue,@outputValue output

  7.OPENQUERY 的日期时间条件式

  不建议使用:select * from openquery(TEST ,'select * from tableName ') where filed='2009-11-06'

  该语句查询耗时18s;很明显RETURN的数据相当大,再进行筛选;

  建议使用:select * from openquery(TEST ,'select * from tableName ') where filed={ ts ''2009-11-06 00:00:00.000''} ')

  该语句查询耗时3s;在 TEST执行完筛选才RETURN的,TABLE的数据量越大效果越明显;

   8.使用MSDASQL驱动不支持项

  1.不支持XML字段插 入、更新

  2.执行存储过程时,存储过程中不能包括临时表,如果 包括则要在执行存储过程前加上 SET FMTONLY OFF

   注:需要对XML字段插入、更新时,我们可以调用远程存储过程完成

   9.还可以使用:opendatasource、openrowset进行跨库跨数据服务器操作。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值