Linux系統運維及專案正式上線:進入學習
推薦學習:《》
以SQL Server的資料庫管理工具SSMS(SQL Server Management Studio)為平臺進行操作。
SQL Server Management Studio (SSMS) 是用於管理SQL Server 基礎結構的整合環境。 使用 SSMS,可以存取、設定、管理和開發 SQL Server、Azure SQL 資料庫和 SQL 資料倉儲的所有元件。 SSMS 在一個綜合實用工具中彙集了大量圖形工具和豐富的指令碼編輯器,為各種技能水平的開發者和資料庫管理員提供對 SQL Server 的存取許可權。
跨伺服器操作就是可以在本地連線到遠端伺服器上的資料庫,可以在對方的資料庫上進行相關的資料庫操作,比如增刪改查。
隨著資料量的增多,業務量的擴張,需要在不同的伺服器安裝不同的資料庫,有時候因為業務需要,將不同的伺服器中的資料進行整合,這時候就需要進行跨伺服器操作了。
DBLINK(資料庫連結),顧名思義就是資料庫的連結,就像電話線一樣,是一個通道,當我們要跨本地資料庫,存取另外一個資料庫表中的資料時,本地資料庫中就必須要建立遠端資料庫的dblink,通過dblink本地資料庫可以像存取本地資料庫一樣存取遠端資料庫表中的資料。
1. 開啟SSMS -->登入到本地資料庫 --> 伺服器物件 --> 連結伺服器(右鍵) --> 新建連結伺服器,如下圖:
2. 在彈出的對話方塊中輸入相關資訊
● 在【連結伺服器】輸入對方伺服器的IP地址;
● 在【伺服器型別】中選擇【SQL Server】;
3. 點選左側的【安全性】,出現如下頁面,在第3步中輸入對方資料庫的賬號密碼即可。
點選確定按鈕後,連結伺服器(LinkedServer)就建立成功了。這時可以看到建立好的連結伺服器:
檢視連結伺服器的程式碼: 在建立好的連結伺服器上點右鍵,編寫連結伺服器指令碼為 --> Create到 -->新查詢編輯器視窗,即可開啟剛剛建立的連結伺服器的指令碼。
--連結伺服器(LinkedServer)建立完成後會自動生成相關程式碼 —— 連結到遠端SQLServer資料庫:
EXEC master.dbo.sp_addlinkedserver @server = N'192.168.110.189,1433',@srvproduct=N'SQL Server';
-- @rmtsrvname
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'192.168.110.189',@useself=N'False',@locallogin=NULL,@rmtuser=N'sa',@rmtpassword='########';
登入後複製
注意: 這裡有一個弊端,那就是連結的是整個遠端SqlServer中的所有資料庫(一般只需要一個特定的資料庫),而且連結伺服器的名稱是個IP且無法自定義! 所以,最好的方式還是通過程式碼直接建立連結資料庫(見「三、程式碼詳解」)。
連結伺服器(LinkedServer)就建立成功後,我們就可以用建立好的DBLINK連結到遠端的Linked伺服器了。下面我們用建立好的試著查詢對方伺服器上的表來驗證一下。
--查詢連結伺服器(LinkedServer)中資料的方法: [DBLINK名].[對方資料庫名].[對方資料庫下模式名].[對方資料庫表名]
SELECT * FROM [192.168.110.189].[erp25new].[dbo].[fee_data]
上面FROM欄位後面依此是[DBLINK名].[對方資料庫名].[對方資料庫下模式名].[對方資料庫表名],表名前面的這些內容一個都不能少。
查詢結果如下圖:
1. 【常規】選擇頁:
2.【安全性】選擇頁:
自定義連結資料庫到SQLServer【新建連結伺服器】對話方塊中需輸入的相關資訊說明:
1.【常規】頁
● 在【連結伺服器】中,輸入 自定義的連結伺服器別名,如:DBLINK_TO_TESTDB
● 在【伺服器型別】中選擇【其他資料來源】;
▶[提供程式]中選擇 第一個Microsoft OLE DB Provider for SQL Server
▶[產品名稱]中,可以空白不填,也可以填寫SQL Server { 注意提供程式是OLE DB Provider for SQL Server時產品名稱這裡必須為空白!}
▶[資料來源]中 遠端資料庫的地址,埠\範例名 ,如 10.10.0.73,1433\MSSQLSERVER
▶[存取介面字串]中,可以空著不填; 也可以填下方的:(注意######是密碼,請換成自己的密碼)
Provider=sqloledb;Data Source=10.10.0.73,1433\MSSQLSERVER;Initial Catalog=TESTDB;User Id=apps;Password=#####;
▶[目錄]就是資料庫名稱,這裡填上我們需要遠端連上的資料庫 TESTDB (可以換成自己實際的)。
2.【安全性】頁
● 選擇【使用此安全上下文建立連線(M)】
▶[遠端登入]: 遠端資料庫的連線賬號
▶[使用密碼]: 遠端資料庫連線賬號的密碼
--連結伺服器(LinkedServer)建立完成後會自動生成相關程式碼 —— 連結到遠端的SQLServer資料庫(自定義):
EXEC master.dbo.sp_addlinkedserver @server = N'DBLINK_TO_TESTDB',@srvproduct=N'',@provider=N'SQLNCLI', @datasrc=N'10.10.0.73';EXEC master.dbo.sp_addlinkedsrvlogin@rmtsrvname=N'DBLINK_TO_TESTDB',@useself=N'False',@locallogin=NULL,@rmtuser=N'apps',@rmtpassword='########';
/****** 實際例子 系統生成的Object: LinkedServer [DBLINK_TO_TESTDB] ******/
USE [master]
GO
EXEC master.dbo.sp_addlinkedserver @server = N'DBLINK_TO_TESTDB', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'10.10.0.73,1433\MSSQLSERVER', @catalog=N'TESTDB'
/*For security reasons the linked server remote logins password is changed with ########*/
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'TEST',@useself=N'False',@locallogin=NULL,@rmtuser=N'apps',@rmtpassword='########'
登入後複製
其他方式: 提供程式換成其它的, 如本機SQL Server Native Client 11.0 (SQL Server Native Client 11.0 不支援連線到SQL Server 2000或更早的版本) 等
A. SSMS連結到遠端SQLServer資料庫
(本地SQLServer資料庫連結伺服器(LinkedServer)到遠端SQLServer資料庫。)
--LinkedServer連結到遠端SQLServer資料庫:
--1. 宣告將要連結的‘連結名稱(自定義)’,遠端資料庫產品名(或別名),(提供商,資料庫伺服器地址及範例名)
EXEC master.dbo.sp_addlinkedserver @server = N'DBLINK_TO_TESTDB',@srvproduct=N'SQL Server';
--2. 宣告‘連結名稱(自定義)’,@useself=N'False',@locallogin=NULL,將要連結的資料庫伺服器的賬號和密碼
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'192.168.110.189',@useself=N'False',@locallogin=NULL,@rmtuser=N'sa',@rmtpassword='########';
B. SSMS連結到遠端非SQLServer資料庫
(本地SQLServer資料庫連結伺服器(LinkedServer)到遠端非SQLServer的資料庫。如遠端的MySQL、Oracle等資料庫。)
--連結到遠端的非SQLServerd資料庫(如連結到遠端MySQL、Oracle等資料庫):
--1. 宣告‘自定義的連結名稱’,遠端資料庫產品名(或別名),提供商,資料庫伺服器地址及範例名
EXEC master.dbo.sp_addlinkedserver @server = N'TEST_SQL_SERVER',@srvproduct=N'TEST',@provider=N'SQLNCLI11', @datasrc=N'192.168.110.189';-
-2. 宣告登入資訊 ‘自定義的連結名稱’,@useself=N'False',@locallogin=NULL,遠端資料庫的賬號和密碼
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'TEST_SQL_SERVER',@useself=N'False',@locallogin=NULL,@rmtuser=N'sa',@rmtpassword='########';
實際例子-SQL Server通過Linkserver連線MySql
--通過SSMS連結到遠端MySql資料庫(SQL Server連線MySql)--使用的存取介面為:MySql Provider for OLE DB--
EXEC master.dbo.sp_addlinkedserver @server = N'DBLINK_TO_MysqlTESTDB', @srvproduct = N'MySql', @provider = N'MSDASQL', @provstr = N'Driver={MySQL ODBC 5.1 Driver};Server=10.167.69.6,3306/sytv;Database=TESTDB;User=root;Password=root;Option=3';--
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'DBLINK_TO_MysqlTESTDB', @useself = N'False', @locallogin = N'10.167.69.6,3306/sytv', @rmtuser = N'root', @rmtpassword = N'root';
登入後複製
實際例子-SQL Server通過Linkserver連線Oracle
--通過SSMS連結到遠端Oracle資料庫(SQL Server連線Oracle)
--使用的存取介面為:Oracle Provider for OLE DB
USE [master]
GO
--Declare Oracle OLEDB 'OraOLEDB.Oracle':
EXEC master.dbo.sp_MSset_oledb_prop N'OraOLEDB.Oracle', N'AllowInProcess', 1;--Create the Linked Server to the ECT database in Oracle:
EXEC sp_addlinkedserver 'DBLINK_TO_OraTESTDB', 'Oracle', 'OraOLEDB.Oracle', '10.167.69.6/prt';--EXEC master.dbo.sp_addlinkedserver @server = N'DBLINK_TO_OraTESTDB', @srvproduct=N'oracle', @provider=N'OraOLEDB.Oracle', @datasrc=N'10.167.69.6/orcl'
--Create the Remote Login for the Oracle Linked Server:
EXEC sp_addlinkedsrvlogin @rmtsrvname=N'DBLINK_TO_OraTESTDB',@useself=N'False',@locallogin=N'apps',@rmtuser=N'SYSTEM',@rmtpassword='######';
--最後可以測試一下是否連線成功 --select * from openquery(DBLINK_TO_OraTESTDB,'select * from SYSTEM.HELP');
登入後複製
推薦學習:《》
以上就是SQL Server跨伺服器運算元據庫的圖文方法(LinkedServer)的詳細內容,更多請關注TW511.COM其它相關文章!