1. 程式人生 > >SQL server連結伺服器總結

SQL server連結伺服器總結

一、使用 Microsoft OLE DB Provider For ODBC 連結MySQL

安裝MySQL的ODBC驅動MyODBC
1、為MySQL建立一個ODBC系統資料來源,例如:選擇資料庫為test ,資料來源名稱為myDSN
2、建立連結資料庫
EXEC sp_addlinkedserver @server = 'Mysql111', @srvproduct='MySQL', @provider = 'MSDASQL', @datasrc = 'myDSN'
GO
EXEC sp_addlinkedsrvlogin    @rmtsrvname='Mysql111',@useself='false',@locallogin='sa',@rmtuser='feng',@rmtpassword='1'
3、查詢資料
SELECT * FROM OPENQUERY (Mysql111 ,'select * from 表' )
下面這個不行:
SELECT * FROM OPENQUERY (Mysql111 ,'表' )
注意:不能直接用select * from 連結伺服器名.資料庫名.使用者名稱.表(或檢視) 四部分名稱查詢資料,可能是個Bug.

二、使用 Microsoft OLE DB Provider For ORACLE 連結ORACLE

1、建立連結資料庫
sp_addlinkedserver '別名', 'Oracle', 'MSDAORA', '服務名'
GO
EXEC sp_addlinkedsrvlogin @rmtsrvname='別名
',@useself='false',@locallogin='sa',@rmtuser='oracle使用者名稱
',@rmtpassword='密碼'
2、查詢資料
SELECT * FROM 別名..使用者名稱.表(檢視)
注意:四部分名稱全部用大寫
3、執行儲存過程
使用OPENQUERY:
SELECT *
FROM OPENQUERY(別名, 'exec 使用者名稱.儲存過程名')

三、設定連結伺服器以訪問格式化文字檔案

用於 Jet 的 Microsoft OLE DB 提供程式可用於訪問並查詢文字檔案。 若要直接建立訪問文字檔案的連結服務
器而不將檔案連結為 Access .mdb 檔案中的表,請執行 sp_addlinkedserver,如下例所示。
提供程式是 Microsoft.Jet.OLEDB.4.0,提供程式字串為"Text"。資料來源是包含文字檔案的目錄的完整路徑名
稱。schema.ini 檔案(描述文字檔案的結構)必須與此文字檔案存在於相同的目錄中。有關建立 schema.ini 檔案
的更多資訊,請參見 Jet 資料庫引擎文件。
--Create a linked server.
EXEC sp_addlinkedserver txtsrv, 'Jet 4.0',
'Microsoft.Jet.OLEDB.4.0',
'c:\data\distqry',
NULL,
'Text'
GO
--Set up login mappings.
EXEC sp_addlinkedsrvlogin txtsrv, FALSE, NULL, Admin, NULL
GO
--List the tables in the linked server.
EXEC sp_tables_ex txtsrv
GO
--Query one of the tables: file1#txt
--using a 4-part name.
SELECT *
FROM txtsrv...[file1#txt]

四、連結SQL Server伺服器:

1、使用 ODBC 的 Microsoft OLE DB 提供程式
EXEC sp_addlinkedserver '別名','','MSDASQL',NULL,NULL,'DRIVER={SQL
Server};SERVER=遠端名;UID=使用者;PWD=密碼;
如果加上引數@catalog,可以指定資料庫
exec sp_addlinkedsrvlogin @rmtsrvname='別名
',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密碼'
2、使用SQL Server 的 Microsoft OLE DB 提供程式
exec sp_addlinkedserver @server='別名
',@provider='sqloledb',@srvproduct='',@datasrc='遠端伺服器名'
exec sp_addlinkedsrvlogin
@rmtsrvname='wzb',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtp
assword='密碼'
然後你就可以如下:
select * from 別名.庫名.dbo.表名
insert 庫名.dbo.表名 select * from 別名.庫名.dbo.表名
select * into 庫名.dbo.新表名 from 別名.庫名.dbo.表名
go
例1、
此示例在 SQL Server 的例項上建立一臺名為 S1_instance1 的連結伺服器,該伺服器使用 SQL Server 的
Microsoft OLE DB 提供程式。
EXEC    sp_addlinkedserver    @server='S1_instance1', @srvproduct='',
                        @provider='SQLOLEDB',
@datasrc='S1\instance1'
例2、
--建立連結伺服器
EXEC sp_addlinkedserver 'xiaoming','','MSDASQL',NULL,NULL,'DRIVER={SQL
Server};SERVER=192.168.0.1;UID=sa;PWD=123;'
--建立連結伺服器登入對映
exec sp_addlinkedsrvlogin
@rmtsrvname='xiaoming',@useself='false',@locallogin='sa',@rmtuser='sa',
@rmtpassword='123'
go
--查詢資料
select * from xiaoming.schooladmin.dbo.agent
--刪除連結伺服器登入對映和連結伺服器:
exec sp_droplinkedsrvlogin 'xiaoming' ,'sa'
exec sp_dropserver 'xiaoming'
注意事項:
SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }
所以不能通過連線伺服器設定此屬性,into 也存在這樣的問題
select * into   xiaoming.northwind.dbo.tt from
xiaoming.northwind.dbo.tt

五、設定連結伺服器以訪問Access資料庫

使用用於 Jet 的 Microsoft OLE DB 提供程式,此示例建立一臺名為 test的連結伺服器。
說明 本示例假設已經安裝 Microsoft Access 和示例 Northwind 資料庫,且
Northwind 資料庫駐留在 C:\。
USE master
GO
-- To use named parameters:
EXEC sp_addlinkedserver
@server = 'test',
@provider = 'Microsoft.Jet.OLEDB.4.0',
@srvproduct = 'OLE DB Provider for Jet',
@datasrc = 'C:\Northwind.mdb'
GO
-- OR to use no named parameters:
USE master
GO
EXEC sp_addlinkedserver
'test',
'OLE DB Provider for Jet',
'Microsoft.Jet.OLEDB.4.0',
'C:\Northwind.mdb'
GO
使用
select * from test...表名

六、連線SYBASE

--首先,你要在SQL伺服器上裝上訪問sybase的客戶端
--建立連結伺服器
exec sp_addlinkedserver 'Sybase1', ' ', 'MSDASQL', NULL, NULL,'Driver={Sybase System
11};Database=hisdb;Srvr=10.211.135.12;UID=sa;PWD=1111;'
使用:select * from Sybase1.hisdb.dbo.table1
方法二
使用ODBC
SQL Server到SYBASE連線伺服器的實現
測試環境為:
作業系統: WINDOWS2000 SERVER (繁體系統)
安裝資料庫: SQLSERVER2000(英文版)和SYBASE8.0客戶端(英文版)
具體實現步驟:
1.要求pc機上安裝SYBASE8.0客戶端軟體和sqlserver2000軟體。
2.配置windows的ODBC資料來源: 開始選單—》程式集—》系統管理工具—》資料資料來源(ODBC)—》進入配置用
戶DSN或者系統DSN均可以:新增—》選擇ADAPTIVE SERVER ANYWHERE8.0—》自定義資料來源名稱(隨意如:
SYBASETEST)—》資料庫名稱(必選!)—》OK完成。
3. 選擇剛才配置的資料來源名稱, 再選擇 配置, 跳出SYBASETEST MESSAGES:
The data source is not connected. Connecting to the data source will provide useful information
during configuration. Would you like to
connect to the data source?選擇YES(OK或確認)即可,進入CONNECT TO SYBASE DATABASE畫面:
USER ID: 輸入SYBASE DATABASE的使用者
PASSWORD: 輸入SYBASE DATABASE的使用者的密碼
CONNECTION MODE: 可以選擇預設的SHARE模式
選擇OK(確認)即可!
配置和測試ODBC完成!
4.配置sqlserver2000中的連線伺服器:
企業管理器—》安全性—》連線伺服器—》右鍵新建連線伺服器—》定義連線名稱; 選其他資料來源; 指定程式
名稱為:SYBASE ADAPTIVE SERVER ANYWHERE PROVIDER8.0; 產品名稱可不填; 資料來源指定剛才ODBC中定義好的資料
源名稱; 提供程式字串按以下格式填寫:User ID=username;Password=userpasswd(或者按如下格式:
UID=username;PWD=userpasswd),這裡的使用者名稱和密碼對應所要連線的SYBASE資料庫中的使用者名稱和密碼 —》 安全性
標籤頁裡:設定用此安全上下文進行,並錄入SYBASE的資料庫使用者名稱和密碼—》伺服器選項標籤頁可預設—》確定。
5.準備工作全部完成!在sqlserver企業管理器—》安全性—》連線伺服器開啟剛建好的連線伺服器—》點選表
,即可在右邊視窗看到該SYBASE資料庫使用者擁有的的所有表名,但在這裡還並不能查看錶的記錄,這個需要在
sqserver的查詢分析器中用具體sql實現!訪問表時,使用格式為: [連線伺服器名]..[SYBASE使用者].[表名]。

exec sp_addlinkedserver 'server','','SQLOLEDB','192.168.1.8'
exec sp_addlinkedsrvlogin 'server','false',NULL,'sa','123'
go
select * from server.zlhotel.dbo.RoomInfo

go
exec sp_dropserver 'server2','droplogins'

如何在SQL   SERVER中建立與其它SQL   SERVER的連線 

建立一臺名為   Server2   的連結伺服器:  
USE   master  
EXEC   sp_addlinkedserver   'server2',N'SQL   Server'  
建立一個對映,使用帳號   Sa   和密碼   Password   連線到連結伺服器   Server2:  
EXEC   sp_addlinkedsrvlogin   'Server2',   'false',   NULL,   'Sa',   'Password'  
查詢資料:  
SELECT   *   FROM   Server2.dbname.dbo.tablename 


操作表格式:Server2.dbname.dbo.tablename
--如果經常訪問或資料量大,建議用連結伺服器 

--建立連結伺服器  
exec   sp_addlinkedserver     'srv_lnk','','SQLOLEDB','遠端伺服器名或ip地址'  
exec   sp_addlinkedsrvlogin   'srv_lnk','false',null,'使用者名稱','密碼'  
go 

--查詢示例  
select   *   from   srv_lnk.資料庫名.dbo.表名 

--匯入示例  
select   *   into   表   from   srv_lnk.資料庫名.dbo.表名 

go  
--以後不再使用時刪除連結伺服器  
exec   sp_dropserver   'srv_lnk','droplogins' 


--如果只是臨時訪問,可以直接用openrowset  
--查詢示例  
select   *   from   openrowset('SQLOLEDB'  
,'sql伺服器名';'使用者名稱';'密碼'  
,資料庫名.dbo.表名) 


--匯入示例  
select   *   into   表   from   openrowset('SQLOLEDB'  
,'sql伺服器名';'使用者名稱';'密碼'  
,資料庫名.dbo.表名)

如何通過網際網路聯接到某個連上網際網路的區域網中的一臺計算機上的MSSQL上 


***************   能連線到SQL的幾個要素.   ************************** 

1.先保證ping通(有防火牆的先關閉防火牆)  
2.在命令提示符下執行:telnet   <伺服器ip地址>   1433   不會報錯  
3.查詢分析器中進行連線,時使用用ip連線:  
檔案--連線--SQL   Server輸入對方IP--連線使用,根據對方的SQL配置確定--確定 

確定SQL採用什麼身份驗證方式:  
企業管理器--右鍵SQL例項--屬性--安全性--身份驗證 


4.如果不行  
SQL   Server伺服器--開始--程式--Microsoft   SQL   Server  
--伺服器網路實用工具  
--啟用   WinSock代理  
--代理地址:(sqlserver伺服器IP)  
--代理埠--1433  
---確定 

5.如果還不行,在客戶端裝個SQL   Server客戶端配置一下:  
開始--程式--Microsoft   SQL   Server--客戶端網路實用工具  
--別名--新增  
--網路庫選擇"tcp/ip"--伺服器別名輸入SQL伺服器名  
--連線引數--伺服器名稱中輸入SQL伺服器ip地址  
--如果你修改了SQL的埠,取消選擇"動態決定埠",並輸入對應的埠號

*************   連線實戰   ************************************************] 

--如果你的兩臺電腦都有固定的公網IP地址,那就真恭喜你.連線有普通的區域網一樣. 

--如果你的兩臺電腦只可以得到動態的公網的IP地址,用下面的方法: 到: http://www.comexe.cn/註冊免費域名,安裝它的動態域名解析軟體.(當然,還有很多其他軟體可供選擇)   就可以了.