SQL Server跨庫跨伺服器訪問實現

shuai7boy發表於2019-06-19

  我們經常會遇到一個資料庫要訪問另一個資料庫,或者一臺伺服器要訪問另一臺伺服器裡面的資料庫。 那麼這個如何實現的呢? 相信看完這篇文章你就懂了!

  同一臺伺服器跨庫訪問實現

  1. 首先建立兩個資料庫CrossLibraryTable1,CrossLibraryTable2

   --建立CrossLibraryTable1指令碼:

  use master --開啟master資料庫,一般的建立語句都在master中執行.
go
if exists (select * from sysdatabases where name='CrossLibraryTable1')
  drop database CrossLibraryTable1  /*檢查有沒有這個資料庫,如果有就刪除它。*/
go
create database CrossLibraryTable1
on primary
(
name='CrossLibraryTable1_data',  ------------ 養成好習慣,資料檔案加_data
filename='F:\程式碼存放\資料庫\CrossLibraryTable1_data.mdf',  ------------ 一定要是.mdf的檔案,代表主資料檔案
size=5mb, --預設資料庫大小
maxsize=100mb, --最大容量
filegrowth=1mb --增長量
)
log on
(
name='CrossLibraryTable1_log',   ------------ 養成好習慣,日誌檔案加_log
filename='F:\程式碼存放\資料庫\CrossLibraryTable1_log.ldf',  ------------ 一定要是.ldf的檔案,代表日誌檔案
size=1mb, --預設資料庫大小
filegrowth=10% --增長量
)
 

  --建立CrossLibraryTable2指令碼:

  use master --開啟master資料庫,一般的建立語句都在master中執行.
go
if exists (select * from sysdatabases where name='CrossLibraryTable2')
  drop database CrossLibraryTable2  /*檢查有沒有這個資料庫,如果有就刪除它。*/
go
create database CrossLibraryTable2
on primary
(
name='CrossLibraryTable2_data',  ------------ 養成好習慣,資料檔案加_data
filename='F:\程式碼存放\資料庫\CrossLibraryTable2_data.mdf',  ------------ 一定要是.mdf的檔案,代表主資料檔案
size=5mb, --預設資料庫大小
maxsize=100mb, --最大容量
filegrowth=1mb --增長量
)
log on
(
name='CrossLibraryTable2_log',   ------------ 養成好習慣,日誌檔案加_log
filename='F:\程式碼存放\資料庫\CrossLibraryTable2_log.ldf',  ------------ 一定要是.ldf的檔案,代表日誌檔案
size=1mb, --預設資料庫大小
filegrowth=10% --增長量
)
 

然後,執行完指令碼後,重新整理一下就可以看到剛剛建立的資料庫了:

2.接下來在兩個資料庫裡面分別建立一個CrossTest1和一個CrossTest2表用於跨庫查詢

--建立CrossTest1指令碼:

 use CrossLibraryTable1
  create table CrossTest1(
  Id int primary key identity,
  Name nvarchar(20)
  )

--建立CrossTest2指令碼:

 use CrossLibraryTable2
  create table CrossTest2(
  Id int primary key identity,
  Name nvarchar(20)
  )

表建立好後,我們再新增幾條資料進去:

 use CrossLibraryTable1 
 insert into CrossTest1 values('跨庫1測試資料1')  
 insert into CrossTest1 values('跨庫1測試資料2')

 use CrossLibraryTable2  
 insert into CrossTest2 values('跨庫2測試資料1')  
 insert into CrossTest2 values('跨庫2測試資料2')

切換到CrossLibraryTable1下面查詢CrossLibraryTable2的資料可以看到報如下錯誤

修正程式碼:

PS:像上面那樣是可以進行查詢,然而在專案中使用上面的程式碼格式就會引發一些問題,那什麼問題呢?比如另一個資料庫的名稱改變了,我們就需要把所有用到這個的地方都得改掉,這樣就很麻煩,那麼有什麼解決方案麼,使得改一處就好了?當然有,用資料庫同義詞就可以輕鬆搞定!

建立同義詞步驟如下:

 不同伺服器跨庫訪問實現

  當資料庫在不同伺服器上面,用上面的方法就不行了,那如何實現跨伺服器訪問呢?很簡單,看下面↓↓↓

     

  

 

 好了,SQL Server跨庫跨伺服器訪問實現就到這了,如果按照步驟一步一步操作的話,相信您也已經實現了,下一篇文章就來談談分庫分表實現。

相關文章