如有2个数据库DB1,DB2,那我要查询db1中table1中的id与db2中table3中的id相同的记录
两种情况:
一,2个数库据都在本地二,2个数据库在2台机器上,另外一台的ip:192.168.0.3 数据库权限:用户名user,密码pwd请问能不能用sql语句实现,如果能请帮写个例子。谢谢
两种情况:
一,2个数库据都在本地二,2个数据库在2台机器上,另外一台的ip:192.168.0.3 数据库权限:用户名user,密码pwd请问能不能用sql语句实现,如果能请帮写个例子。谢谢
select * from db2.dbo.table3 m, db1.dbo.table1 n where m.id = n.id二(需要建立链接)然后如下:
select * from machinename2.db2.dbo.table3 m, machinename1.db1.dbo.table1 n where m.id = n.id不同服务器数据库之间的数据操作--创建链接服务器
exec sp_addlinkedserver 'ITSV' , '' , 'SQLOLEDB' , '远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'ITSV' , 'false' , null , '用户名' , '密码' --查询示例
select * from ITSV.数据库名.dbo.表名 --导入示例
select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器
exec sp_dropserver 'ITSV' , 'droplogins' --连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset --查询示例
select * from openrowset('SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) --生成本地表
select * into 表 from openrowset('SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) --把本地表导入远程表
insert openrowset( 'SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名)
select *from 本地表 --更新本地表
update b
set b.列A=a.列A
from openrowset('SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) as a inner join 本地表 b
on a.column1 = b.column1 --openquery用法需要创建一个连接 --首先创建一个连接创建链接服务器
exec sp_addlinkedserver 'ITSV' , '' , 'SQLOLEDB' , '远程服务器名或ip地址'
--查询
select *
FROM openquery(ITSV , 'SELECT * FROM 数据库.dbo.表名')
--把本地表导入远程表
insert openquery(ITSV , 'SELECT * FROM 数据库.dbo.表名')
select * from 本地表
--更新本地表
update b
set b.列B=a.列B
FROM openquery(ITSV , 'SELECT * FROM 数据库.dbo.表名') as a
inner join 本地表 b on a.列A=b.列A --3、opendatasource/openrowset
SELECT *
FROM opendatasource('SQLOLEDB' , 'Data Source=ip/ServerName ; User ID=登陆名 ; Password=密码').test.dbo.roy_ta
--把本地表导入远程表
insert opendatasource('SQLOLEDB' , 'Data Source=ip/ServerName ; User ID=登陆名 ; Password=密码').数据库.dbo.表名
select * from 本地表
up
select *
from openrowset('SQLOLEDB','192.168.0.3';'user'; 'pwd',DB_NAME.dbo.TB_NAME)
1中访问DB2中的dbo.table就是这样的:SELECT * FROM LinkToDB2.dbo.talbe