搜尋本站文章

2012-02-26

建立「連結伺服器(Linked Server)」,卻遭遇錯誤 259:不允許對系統目錄的特定更新;以 SQL Server 2008 R2 與 Oracle 11g R2 為例

示範環境:
1. Windows Server 2008 R2 x64 + SQL Server 2008 R2 x64 版本。
2. Oracle 11g R2 x64 版本。

若是使用 SSMS 管理工具來組態「連結伺服器」與 Oracle 執行個體連線,可能會遭遇到以下的錯誤訊息:

執行 Transact-SQL 陳述式或批次時發生例外狀況。 (Microsoft.SqlServer.ConnectionInfo)

不允許對系統目錄的特定更新。 (Microsoft SQL Server, 錯誤: 259)

如需說明,請按一下: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600&EvtSrc=MSSQLServer&EvtID=259&LinkId=20476

-- 01_不允許對系統目錄的特定更新之錯誤訊息



不知道為何使用 SSMS 管理工具執行設定「連結伺服器」的組態設定時,
SSMS 管理工具會自動產生以下修改系統資料表:[master].[dbo].[sysservers] 的範例程式碼範例程式碼:

update [master].[dbo].[sysservers] set  [datasource] = 'test01' where [srvname] = 'Oracle_test01'
GO

--
訊息 259,層級 16,狀態 1,行 1
不允許對系統目錄的特定更新。

--
Msg 259, Level 16, State 1, Line 1
Ad hoc updates to system catalogs are not allowed.

-- 02_訊息259_不允許對系統目錄的特定更新



這功能是用來更新系統資料表,但系統內定是不得更新系統資料表。


可能的解決方案:
仍是可以使用 SSMS 管理工具來組態。
但是,不按下「確定」,而是改以產生「指令碼」的方式後。

再自行刪除上述修改系統資料表:[master].[dbo].[sysservers] 的範例程式碼,就可以正常的執行後續的指令碼。




參考資料:

Editing Linked Server Properties Throws Ad hoc updates error
http://connect.microsoft.com/SQLServer/feedback/details/573861/editing-linked-server-properties-throws-ad-hoc-updates-error

使用連結伺服器(Linked Server) 連接到 Oracle;以 SQL Server 2008 R2 與 Oracle 11g R2 為例 -- 圖文版本
http://sharedderrickref.blogspot.com/2012/02/linked-server-oracle-sql-server-2008-r2.html