SQL語句 在兩個資料庫間複製表結構和更新資料

2021-06-28 09:02:06 字數 3897 閱讀 7666

一、如果兩個資料庫在同一臺伺服器上

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