--如果两个库在同一个sql实例中
select * from 另一库.dbo.表
--如果两个库在不同的sql实例中
select * from openrowset('sqloledb','另一sql实例名';'sa';'111',另一库.dbo.表)
--访问不同电脑上的数据库(远程只要联好网就一样)
--如果经常访问或数据量大,建议用链接服务器
--创建链接服务器
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
go
--查询示例
select * from srv_lnk.数据库名.dbo.表名
--导入示例
select * into 表 from srv_lnk.数据库名.dbo.表名
go
--以后不再使用时删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins'
--如果只是临时访问,可以直接用openrowset
--查询示例
select * from openrowset('SQLOLEDB'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名)
--导入示例
select * into 表 from openrowset('SQLOLEDB'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名)
如果你在触发器中访问不同sql实例下的数据,还要注意一个事务的问题.
必须启动你的sql服务器和你访问的sql服务器上的msdtc服务
我的电脑--控制面板--管理工具--服务--右键 Distributed Transaction Coordinator--属性--启动,并将启动类型设置为"自动启动"
---------------------------------------------------
1、同服务器 select * from 数据库名.dbo.表名 where 条件
2、不同服务器
SELECT * FROM OpenRowset('MSDASQL', 'Driver=SQL Server;Server=服务器名(或IP);UID=sa;PWD=服务器数据库密码', 数据库名.dbo.表 ) where 条件
SELECT *
FROM OPENROWSET('SQLOLEDB','服务器名(或IP)';'sa';'服务器数据库密码',
'查询的sql语句')
SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=服务器名(或IP);User ID=sa;Password=服务器数据库密码'
).数据库名.dbo.表 where 条件
文章来源
http://dhp3s.blog.sohu.com/9408958.html