Step1.必須先將連線的 ANSI_NULLS 與 ANSI_WARNINGS 選項開啟,它才能執行分散式查詢
資料程式庫應用程式連線會將 SET ANSI_WARNINGS 設定為 OFF,所以須手動開啟
SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
或
SET ANSI_DEFAULTS ON
Step2.連接遠端SQL資料庫
'WINSERVER':Sql Server之執行個體,亦可輸入ip,當輸入ip時會自動抓取該台主機之預設值行個體
指定執行個體之方式:'WINSERVER\SQL2005'或'192.168.0.1'或'192.168.0.1\SQL2005'
EXEC sp_addlinkedserver 'WINSERVER', N'SQL Server'
exec sp_addlinkedsrvlogin 'WINSERVER', false, null,'sa','pw'
Step3.操作遠端資料庫之語法
select * from [WINSERVER].STDB_MCN.DBO.FDRCUSMI
Step4.登出遠端資料庫
EXEC sp_droplinkedsrvlogin 'WINSERVER', NULL
EXEC sp_droplinkedsrvlogin 'WINSERVER', 'sa'
exec sp_dropserver 'WINSERVER'
Step5.最後需將開啟之選項關閉
SET ANSI_NULLS OFF
SET ANSI_WARNINGS OFF
或
SET ANSI_DEFAULTS OFF
PS:登入與登出動作可將之寫成STORE PROCDURE
CREATE PROCEDURE [dbo].[PROC_LoginSQLServer]
AS
--Link不存在才建立連結
if not exists( select * from master.dbo.sysservers where srvname= '10.24.13.26')
begin
EXEC sp_addlinkedserver '10.24.13.26', N'SQL Server'
exec sp_addlinkedsrvlogin '10.24.13.26', false, null,'sa','admin'
end
CREATE PROCEDURE [dbo].[PROC_LogOutSQLServer]
AS
--Link存在才刪除連結
if exists( select * from master.dbo.sysservers where srvname= '10.24.13.26')
begin
EXEC sp_droplinkedsrvlogin '10.24.13.26', NULL
EXEC sp_droplinkedsrvlogin '10.24.13.26', 'sa'
exec sp_dropserver '10.24.13.26'
end
NOTE:
//判斷是否有註冊過(登陸遠端機器_sp_addlinkedserver)
select * from master.dbo.sysservers where srvname= '127.0.0.1'
沒有留言:
張貼留言