背景
在SQL SERVER中,如果我們查詢數據庫需要關聯另外一台數據庫中表,在這種情況下我們可以通過添加服務器鏈接來實現。
案列
方式1.sql server 提供了圖形化界面,如下:
右鍵>>New Linked server
填寫相關參數即可。
方式2.sql server 語句添加,如下:
--code 釋迦苦僧 EXEC master.dbo.sp_addlinkedserver @server = N'192.168.1.22', @srvproduct=N'SQL Server' EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'192.168.1.22',@useself=N'False', @locallogin=NULL,@rmtuser=N'sa',@rmtpassword='abcd1234'
查詢時語句為:
select * from [192.168.1.22].TestDB.dbo.Table_1
注釋:
[@useself =] 'useself'
決定用於連接到遠程服務器的登錄名稱。useself 的數據類型為 varchar(8),默認設置為 TRUE。true 值指定 SQL Server 驗證的登錄使用其自己的憑據以連接到 rmtsrvname,而忽略 rmtuser 和 rmtpassword 參數。false 值指定 rmtuser 和 rmtpassword 參數用來連接到特定 locallogin 的 rmtsrvname。如果 rmtuser 和 rmtpassword 也設置為 NULL,則連接鏈接服務器不需使用任何登錄或密碼。對於 Windows NT 身份驗證登錄而言,useself 為 true 則無效,除非 Microsoft Windows NT® 環境支持安全帳戶委托,並且,提供程序支持 Windows 身份驗證(此時不再需要創建值為 true 的映射,不過創建仍然有效)。
[ @locallogin =] 'locallogin'
本地服務器上的登錄。locallogin 的數據類型為 sysname,默認設置為 NULL。NULL 值指定此條目將應用於所有連接到 rmtsrvname 的本地登錄。如果值不為 NULL,則 locallogin 可以是一個 SQL Server 登錄或 Windows NT 用戶。必須授予 Windows NT 用戶直接訪問 SQL Server 或通過其作為已授予訪問權限的組的成員來訪問 SQL Server 的權限。
不同服務器數據庫之間的數據操作
鏈接Oracle
USE [master] GO EXEC master.dbo.sp_addlinkedserver @server = N'GSPRING', @srvproduct=N'Oracle', @provider=N'MSDAORA', @datasrc=N'gspring' GO USE [master] GO EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'GSPRING', @locallogin = N'sa', @useself = N'False', @rmtuser = N'user1', @rmtpassword = N'1' GO
其他:
1、本地配置的所有鏈接可以在sysservers表中查到:
select * from sys.sysservers;
2、訪問遠程數據庫表時也可以先在本地建一個同義詞,然后就可以像在本地一樣的訪問了:
USE [master] GO CREATE SYNONYM [dbo].[linktable] FOR [DBSERVER].[helpdesk].[dbo].[Messages]; GO select * from linktable;
3.刪除linkserver
exec sp_dropserver '10.58.1.69' ,'droplogins'
http://www.cnblogs.com/firstyi/archive/2007/08/09/849494.html
作者:釋迦苦僧 出處:http://www.cnblogs.com/woxpp/p/3990375.html 本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。