天天看點

用SQL語句将遠端SQL Server資料庫中表資料導入到本地資料庫相應的表中

exec sp_addlinkedserver ‘名稱’,”,’SQLOLEDB’,'遠端資料庫的位址’

exec sp_addlinkedsrvlogin ‘名稱’,'false’,'本地使用者名稱’,'遠端使用者名稱’,'遠端使用者密碼’

2、倒入表

insert 資料庫.dbo.表

select * from 遠端名稱.dbo.表

建立了連接配接後,試試看

二、方法二

通路不同電腦上的資料庫(遠端通路,隻好聯好網就一樣),如果經常通路或資料量較大,建議用連結伺服器方法。

1、建立連結伺服器

exec sp_addlinkedserver ‘srv_lnk’,”,’SQLOLEDB’,'遠端伺服器名或IP位址’

exec sp_addlinkedsrvlogin ‘srv_lnk’,'false’,null,’使用者名’,'密碼’

exec sp_serveroption ‘srv_lnk’,'rpc out’,'true’  –這個允許調用連結伺服器上的存儲過程

go

2、使用示例

–查詢示例

select * from srv_lnk.資料庫名.dbo.表名

–導入示例

select * into 表 from srv_lnk.資料庫名.dbo.表名

go

3、若不再使用時,删除連結伺服器

exec sp_dropserver ‘srv_lnk’,'droplogins’

三、方法三

如果隻是臨時通路,可以直接使用openrowset。

1、示例1

–查詢示例

select * from openrowset(‘SQLOLEDB’

,’sql伺服器名’;'使用者名’;'密碼’,資料庫名.dbo.表名)

–導入示例

select * into 表 from openrowset(‘SQLOLEDB’

,’sql伺服器名’;'使用者名’;'密碼’,資料庫名.dbo.表名)

2、示例2(此示例使用測試正常)

insert 資料庫名稱.dbo.表

select * from

from  openrowset(‘MSDASQL’,

‘DRIVER={SQL Server};SERVER=遠端伺服器位址;UID=使用者名;PWD=密碼’,表) AS a

四、相關問題

問:當導入的資料量很大,而網絡突然中斷,會不會出現問題?

答:中斷的話,就等于什麼也沒做,也就是事務復原,重新運作。

五、随後的問題

問:由于在表中,通常都定義了自增量列及主鍵,而自增量列還進行了關連。由于在倒表時,自增量列不随原表變化,就造成了關聯關系的丢失,通常的做法是:

SET IDENTITY_INSERT 表名 ON

insert into 表名(字段,字段,字段) values (64,’han’,'guo’)

SET IDENTITY_INSERT 表名OFF

即使用“SET IDENTITY_INSERT 表名 ON”将自增量關閉,但是,需要注意的是,當該表中沒有自增量字段時,使用該指令會産生一個錯誤。

是以,在沒有自增量字段的表中進行“插入”操作時,請不要使用“SET IDENTITY_INSERT 表名 ON”。