一、如果兩個資料庫在同一臺伺服器上
1、複製表結構和資料:select * into databaseb.dbo.tableb from databasea.dbo.tablea
2、僅僅複製表結構:select * into databaseb.dbo.tableb from databasea.dbo.tablea where 1=2
3.拷貝相同表結構的某一行資料:
insert into b(a, b, c) select a,b,c from b;
例
insert into b.dbo.third_code_formula( experiment_id,code_formula,porcelain,glass,batch_one,batch_other) select experiment_id,code_formula,porcelain,glass,batch_one,batch_otherfrom third_code_formula where id=25
4.更新相同表結構的某一行資料
update [a].[dbo].[a1]
set name = aaa.name
from [b].[dbo].[b1] as aaa
where [a].[dbo].[a1].[id] = aaa.id
例
update b.dbo.third_code_formula
set experiment_id=sss.experiment_id,code_formula=sss.code_formula,porcelain=sss.porcelain,glass=sss.glass,batch_one=sss.batch_one,batch_other=sss.batch_other
from a.dbo.third_code_formula as sss
where b.dbo.third_code_formula.id=sss.id
注:sss是資料表a的別名
二、如果兩個資料庫在不同的伺服器上
分為匯出和匯入兩種,都需要先連線遠端資料庫,再進行操作。如何連線遠端資料庫?
在連線遠端資料庫之前,需要先開啟ad hoc服務,依次執行下面四句語句(不要一次執行):
exec sp_configure "show advanced options",1
reconfigure
exec sp_configure "ad hoc distributed queries",1
reconfigure
這樣就可以連線遠端資料庫了:
select * into databaseb.dbo.tableb from opendatasource( 'sqloledb', 'data source=ip/servername;user id=sa;password=***' ).databasea.dbo.tablea where 1=2
記住,為了安全起見,執行完成之後,請關閉ad hoc服務:
exec sp_configure "ad hoc distributed queries",0
reconfigure
exec sp_configure "show advanced options",0
reconfigure
三、
/*不同伺服器資料庫之間的資料操作
*/--
建立鏈結伺服器
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.表名)asa
inner
join
本地表 b
ona.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.表名')
asa
inner
join
本地表 b
ona.列a
=b.列a
--3、opendatasource/openrowset
select
*from
opendatasource('
sqloledb
',
'data source=ip/servername;user id=登陸名 password=密碼
').test.dbo.roy_ta
SQL語句 在兩個資料庫間複製表結構和資料資料庫
一 如果兩個資料庫在同一臺伺服器上 1 複製表結構和資料 select into databaseb.dbo.tableb from databasea.dbo.tablea 2 僅僅複製表結構 select into databaseb.dbo.tableb from databasea.dbo....
如何用SQL語句在兩個資料庫間複製儲存過程
1.在目標伺服器上建立如下物件 被同步的伺服器 if exists select from dbo.sysobjects where id object id n sys syscomments bak and objectproperty id,n isusertable 1 drop table...
如何用SQL語句在兩個資料庫間複製儲存過程
1.在目標伺服器上建立如下物件 被同步的伺服器 if exists select from dbo.sysobjects where id object id n sys syscomments bak and objectproperty id,n isusertable 1 drop table...