分享方式:


sp_serveroption (Transact-SQL)

適用於:SQL Server

設定遠端伺服器和連結伺服器的伺服器選項。

Transact-SQL 語法慣例

語法

sp_serveroption
    [ @server = ] N'server'
    , [ @optname = ] 'optname'
    , [ @optvalue = ] N'optvalue'
[ ; ]

引數

[ @server = ] N'server'

要設定選項的伺服器名稱。 @server為 sysname,沒有預設值。

[ @optname = ] 'optname'

要為指定伺服器設定的選項。 @optname為 varchar(35),沒有預設值。 @optname可以是下列任何值。

Description
定序相容 對連結的伺服器影響分散式查詢執行。 如果此選項設定為 true,SQL Server 會假設連結伺服器中的所有字元都與本地伺服器相容,有關字元集和定序順序(或排序順序)。 這使 SQL Server 能夠將字元資料行的比較傳送給提供者。 如果未設定此選項,SQL Server 一律會在本機評估字元資料行的比較。

只有在確定對應於連結伺服器的資料來源與本機伺服器的字元集和排序順序相同時,才應該設定這個選項。
定序名稱 如果使用遠端定序為 true ,且數據源不是 SQL Server 數據源,則指定遠端數據來源所使用的定序名稱。 名稱必須是 SQL Server 所支援的定序之一。

在存取不是 SQL Server,但其定序卻符合某個 SQL Server 定序的 OLE DB 資料來源時,請使用此選項。

連結伺服器必須支援供這部伺服器的所有資料行使用的單一定序。 如果連結的伺服器支援單一資料來源內的多重定序,或者無法確定連結伺服器的定序是否符合某個 SQL Server 定序時,請勿設定此選項。
線上逾時 指定連線到連結伺服器以秒為單位的逾時值。

如果0為,連線逾時設定會使用設定的remote login timeout (s)預設值。 remote login timeout (s) 的預設值為 10

您可以使用下列查詢,從 sys.configurations 目錄檢視檢視此設定: SELECT name, value_in_use FROM sys.configurations WHERE name like 'remote login timeout (s)';
數據存取 啟用和停用連結伺服器的分散式查詢存取。 只能用於 sys.server 透過 sp_addlinkedserver新增的專案。
dist 分配器。
name 指定連結的伺服器物件名稱。

名稱變更會反映在目錄檢視數據sys.servers行所name傳回的值中,而不會影響遠端數據源。
提供者字串 指定識別連結伺服器連接來源的 OLE DB 字串。

提供者字串變更會反映在目錄檢視數據sys.servers行所provider_string傳回的值中。
延遲架構驗證 判斷是否已檢查遠端數據表的架構。

如果 true為 ,請略過查詢開頭遠程數據表的架構檢查。
酒館 發行者。
查詢逾時 指定針對連結伺服器的查詢逾時值。

如果 0sp_configure ,請使用預設值。
rpc 從指定的伺服器啟用 RPC。
rpc out 將 RPC 啟用至指定的伺服器。
sub 訂戶。
系統 僅供參考之用。 不支援。 我們無法保證未來的相容性。
使用遠端定序 判斷是否使用遠端資料行或本地伺服器的定序。

如果true為 ,遠端數據行的定序會用於 SQL Server 數據源,而定序名稱中指定的定序則用於非 SQL Server 數據源。 這是預設值。

如果 false為 ,分散式查詢一律會使用本地伺服器的預設定序,同時 忽略遠端數據行的定序名稱和 定序。
遠端程式交易升級 使用此選項,透過 Microsoft 分散式交易協調器 (MS DTC) 交易,保護伺服器對伺服器程序的動作。 當此選項為 true (或 on),呼叫遠端預存程式會啟動分散式交易,並使用 MS DTC 來登記交易。 發出遠端預存程序呼叫的 SQL Server 執行個體是交易發起者,並可控制交易的完成。 當針對連線發出後續 COMMIT TRANSACTION 或 ROLLBACK TRANSACTION 語句時,控制實例會要求 MS DTC 管理跨相關計算機完成分散式交易。

啟動 Transact-SQL 分散式交易之後,遠端預存程式呼叫可以呼叫已定義為鏈接伺服器的其他 SQL Server 實例。 鏈接的伺服器全都登記在 Transact-SQL 分散式交易中,而 MS DTC 可確保針對每個鏈接的伺服器完成交易。

如果此選項設定為 false (或 off),在連結伺服器上呼叫遠端過程調用時,本機交易不會升階為分散式交易。

如果在進行伺服器對伺服器過程調用之前,交易已經是分散式交易,則此選項沒有作用。 針對連結伺服器的程式調用會在相同的分散式交易下執行。

如果在進行伺服器對伺服器過程調用之前,連線中沒有任何交易作用中,此選項就沒有作用。 然後,程式會針對沒有使用中交易的連結伺服器執行。

這個選項的預設值為 true (或 on)。

[ @optvalue = ] N'optvalue'

指定@optname是否應啟用或ontrue停用 (falseoff)。 @optvalue為 nvarchar(128),沒有預設值。

  • 針對連線逾時和查詢逾選項,@optvalue可能是非負整數。

  • 對於定序名稱選項,@optvalue可能是定序名稱或 NULL

  • 針對名稱選項,@optvalue可能是字串,代表連結伺服器連接的新名稱。

  • 針對提供者字串選項,@optvalue可能是字串或 NULL,代表連結伺服器連接的新 OLE DB 來源。

傳回碼值

0 (成功) 或 1 (失敗)。

備註

如果定序相容選項設定為 true則定序名稱會自動設定為 NULL

如果 定序名稱 設定為非 Null 值, 會自動將定序相容 設定為 false

權限

需要伺服器上的 ALTER ANY LINKED SERVER 許可權。

範例

下列範例會將對應至另一個 SQL Server 實例的連結伺服器設定為與 SQL Server SEATTLE3本機實例相容的定序。

USE master;
GO
EXEC sp_serveroption N'SEATTLE3', 'collation compatible', N'true';
GO

下列範例會將連結的伺服器連線從 PRODVM01\ProdSQL01 重新命名為 LinkToProdSQL01

USE master;
GO
EXEC sp_serveroption
    @server = N'PRODVM01\ProdSQL01',
    @optname = 'name',
    @optvalue = N'LinkToProdSQL01';
GO