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 ...