OpenQuery 是SQL Server用来与其他Server交互的一种技术,通过OpenQuery,SQL Server 可以直接访问其他数据库资源。

而其他数据库在OpenQuery 表达式中是以Linked Server 存在的。 使用sp_linkedservers 可以找到当前数据库的所有linked server.

例如在sql server 2008数据库中通过链接服务器想访问sql server 2000 的数据库就必须使用OpenQuery了。

OpenQuery的表达式可以这么写:

Select * from OpenQuery([linkedServerName],'Select * from t1 where id < 10')

而且值得注意的是,如果,你要在OpenQuery中执行如下的数据库语句,

Select * from t1 Where Name = 'ida'

'ida' 必须以双引号的形式传人,如下,

Select * from OpenQuery([linkedServerName],'Select * from t1 where name= ''ida''')
如果是要写入数据到另外的数据库呢?格式如下:
insert into openquery([linkedServerName],
'select id,name,....
 from [dbname].dbo.tbname where 1=0')  
select 
id,name,...
from t2 
where ...