關於兩台伺服器之間SQL資料互訪

2021-06-08 19:31:56 字數 4155 閱讀 5859

方法一

不同伺服器資料庫之間的資料操作

--建立鏈結伺服器 

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 本地表

方法二: --

在192.168.1.1的查詢分析器中執行

declare

@linksrv

varchar

(20),

@actsrv

varchar

(20),

@actdb

varchar

(20),

@code

varchar

(8)

select

@linksrv='

[192.168.1.2]',

@actsrv='

192.168.1.2'if

exists

(select

1

from

master..sysservers 

where

srvname

=@linksrv

)begin

exec

sp_droplinkedsrvlogin 

@linksrv

, null

exec

sp_dropserver 

@server

=@linksrv

endexec

sp_addlinkedserver 

@server

=@linksrv

, @srvproduct=''

, @provider='

sqloledb', 

@datasrc

=@actsrv

, @catalog

=null

exec

sp_addlinkedsrvlogin 

@linksrv, '

false', 

null, '

sa', '

yourpassword'--

192.168.1.2上的資料庫的sa密碼

goset

ansi_nulls 

onset

ansi_warnings 

ongo

select

*from

[192.168.1.2

].資料庫名.dbo.表名

go--

在192.168.1.2的查詢分析器中執行

declare

@linksrv

varchar

(20),

@actsrv

varchar

(20),

@actdb

varchar

(20),

@code

varchar

(8)

select

@linksrv='

[192.168.1.1]',

@actsrv='

192.168.1.1'if

exists

(select

1

from

master..sysservers 

where

srvname

=@linksrv

)begin

exec

sp_droplinkedsrvlogin 

@linksrv

, null

exec

sp_dropserver 

@server

=@linksrv

endexec

sp_addlinkedserver 

@server

=@linksrv

, @srvproduct=''

, @provider='

sqloledb', 

@datasrc

=@actsrv

, @catalog

=null

exec

sp_addlinkedsrvlogin 

@linksrv, '

false', 

null, '

sa', '

yourpassword'--

192.168.1.1上的資料庫的sa密碼

goset

ansi_nulls 

onset

ansi_warnings 

ongo

select

*from

[192.168.1.1

].資料庫名.dbo.表名

兩台伺服器之間的自動備份

問題 1 兩台伺服器之間的自動備份的問題 如何實現兩台伺服器之間的自動備份是網管們經常遇到的問題。比如 我們需要在夜間或伺服器相對閒暇時,自動將伺服器a中指定目錄下的重要資料備份到伺服器b中某個指定的目錄中。2 隔n天備份到不同目錄的問題 有時,我們也可能遇到將伺服器進行隔n天進行自動備份,同時又希...

兩台伺服器之間拷貝檔案 scp方法

兩台伺服器之間拷貝檔案 scp方法 使用例項 sup r mnt yilinli api root mnt ll api不同的linux之間copy檔案通常有4種方法 1.ftp 2.samba服務 3.sftp 4.scp 以上前三種方法,都比較繁瑣,這裡不贅述。最簡單的方法就是scp,可以理解為...

兩台伺服器之間拷貝檔案 scp方法

兩台伺服器之間拷貝檔案 scp方法 使用例項 sup r mnt yilinli api root mnt ll api不同的linux之間copy檔案通常有4種方法 1.ftp 2.samba服務 3.sftp 4.scp 以上前三種方法,都比較繁瑣,這裡不贅述。最簡單的方法就是scp,可以理解為...