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进行跨库跨数据服务器操作。
网上找到一个图用于描述操作过程: