1. 程式人生 > >用SQL語句將遠端SQL Server資料庫中表資料匯入到本地資料庫相應的表中

用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”。