SQL跨服务器操作
来源:互联网 发布:黑马程序员就业班退学 编辑:程序博客网 时间:2024/06/09 15:44
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进行跨库跨数据服务器操作。
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:远程用户密码
示例:SELECT * FROM OPENQUERY(TEST, 'SELECT * FROM tableName')
可简写为:SELECT filed1,filed2... FROM TEST.DataBaseName.dbo.tableName where filed=value
示例:INSERT INTO OPENQUERY(TEST, 'SELECT * FROM tableName WHERE 1=0') VALUES(3,6,'ANDY')
可简写为: INSERT INTO TEST.DataBaseName.dbo.tableName VALUES(3,6,'ANDY')
可简写为:UPDATE TEST.DataBaseName.dbo.tableName SET role_id = 'ForTest' WHERE id = 3
可简写为:DELETE TEST.DataBaseName.dbo.tableName WHERE id = 1
不建议使用: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的数据量越大效果越明显;
1.不支持XML字段插入、更新
2.执行存储过程时,存储过程中不能包括临时表,如果包括则要在执行存储过程前加上 SET FMTONLY OFF
注:需要对XML字段插入、更新时,我们可以调用远程存储过程完成
- 跨服务器操作SQL
- SQL跨服务器操作
- SQL跨服务器操作
- sql跨服务器操作
- SQL Server 跨服务器操作
- 跨服务器操作SQL语句
- [SQL server]跨服务器链接数据库操作
- SQL Server跨服务器操作数据库
- sql链接服务器操作
- SQL链接远程服务器,实现跨服务器操作
- My SQL 数据库服务器常用操作命令
- SQL-Front 连接到服务器操作
- sql server 两个服务器间操作数据
- SQL 跨服务器访问
- SQl跨服务器查询
- SQL跨服务器查询
- SQL跨服务器查询
- SQL跨服务器查询
- 客户、供应商的税务代码1、2校验
- Unix常用命令(转)
- Hibernate复合主键作为外键在关联映射中的配置方法
- ubuntu 更换 jdk
- cookie 和session 的区别详解
- SQL跨服务器操作
- 获取指定日期在该年(月)中属于第几个星期
- windows 7 远程桌面设置
- 如何阅读源代码
- JDK1.6安装与环境变量设置详细图解
- 用 _findfirst 和 _findnext 查找文件(windows可用)
- MVC介绍
- 取消非空约束
- android4.0下载地址