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には、次のいずれかの値を指定できます。

Value 説明
照合順序に互換性がある リンク サーバーに対する分散クエリの実行に影響します。 このオプションが true設定されている場合、SQL Server では、リンク サーバー内のすべての文字が、文字セットと照合順序 (または並べ替え順序) に関してローカル サーバーと互換性があると見なされます。 これにより、SQL Server からプロバイダーに文字を含む列の比較を送信できるようになります。 このオプションが設定されていない場合、SQL Server では文字列を含む列の比較の評価は常にローカルで行われます。

このオプションは、リンク サーバーに対応するデータ ソースがローカル サーバーと同じ文字セットと並べ替え順を持っていることが確認できている場合のみ設定します。
照合順序名 リモート照合順序を使用していて、データ ソースが SQL Server データ ソースでない場合true、リモート データ ソースで使用される照合順序の名前を指定します。 SQL Server がサポートしている照合順序名のいずれかを指定する必要があります。

このオプションは、SQL Server 以外の OLE DB データ ソースにアクセスし、その照合順序が SQL Server 照合順序のいずれかと一致する場合に使用します。

リンク サーバーは、そのサーバー内のすべての列で使用される単一の照合順序をサポートしている必要があります。 リンク サーバーが、単一のデータ ソース内で複数の照合順序をサポートしている、またはリンク サーバーの照合順序が SQL Server 照合順序のいずれかと一致するかどうかが判断できない場合は、このオプションを設定しないでください。
接続タイムアウト リンク サーバーに接続するためのタイムアウト値を秒単位で指定します。

場合 0接続タイムアウト 設定では、設定に構成されている既定値が remote login timeout (s) 使用されます。 remote login timeout (s) の既定値は 10 です。

この設定は、次のクエリSELECT name, value_in_use FROM sys.configurations WHERE name like 'remote login timeout (s)';を使用してsys.configurationsカタログ ビューから表示できます。
データ アクセス 分散クエリ アクセスに対してリンク サーバーを有効または無効にします。 を介してsp_addlinkedserver追加されたエントリにのみsys.server使用できます。
dist ディストリビューターです。
name リンク サーバー オブジェクトの名前を指定します。

名前の変更は、リモート データ ソースに影響を与えずに name 、カタログ ビューの sys.servers 列によって返される値に反映されます。
provider string リンク サーバー接続のソースを識別する OLE DB 文字列を指定します。

プロバイダー文字列の変更は、カタログ ビューの列によって provider_string 返される値に sys.servers 反映されます。
遅延スキーマの検証 リモート テーブルのスキーマがチェックされているかどうかを判断します。

の場合trueは、クエリの先頭にあるリモート テーブルのスキーマ チェックをスキップします。
pub Publisher。
クエリのタイムアウト リンク サーバーに対するクエリのタイムアウト値を指定します。

の場合 0は、既定値を使用します sp_configure
rpc 指定されたサーバーから RPC を有効にします。
rpc out 指定されたサーバーに対して RPC を有効にします。
sub サブスクライバー。
system 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
リモート照合順序を使用する リモート列またはローカル サーバーの照合順序を使用するかどうかを決定します。

SQL Server データ ソースに対してリモート列の照合順序が使用され、照合順序名指定された照合順序が SQL Server 以外のデータ ソースに使用される場合true。 これが既定です。

分散クエリでは false常にローカル サーバーの既定の照合順序が使用されますが 、照合順序名 とリモート列の照合順序は無視されます。
リモート プロセス トランザクションの昇格 このオプションを使って、Microsoft 分散トランザクション コーディネーター (MS DTC) トランザクションにより、サーバー間のプロシージャのアクションを保護します。 このオプションが (またはon) の場合、trueリモート ストアド プロシージャを呼び出すと、分散トランザクションが開始され、MS DTC でトランザクションが参加します。 リモート ストアド プロシージャを呼び出す SQL Server のインスタンスは、トランザクションを実行したインスタンスであり、このインスタンスによってトランザクションの完了が制御されます。 接続に対して後続の COMMIT TRANSACTION ステートメントまたは ROLLBACK TRANSACTION ステートメントが発行されると、制御インスタンスは、関係するコンピューター全体の分散トランザクションの完了を MS DTC が管理することを要求します。

Transact-SQL 分散トランザクションが開始されると、リンク サーバーとして定義されている SQL Server の他のインスタンスに対してリモート ストアド プロシージャ呼び出しを行うことができます。 リンク サーバーはすべて Transact-SQL 分散トランザクションに参加し、MS DTC は各リンク サーバーに対してトランザクションが完了することを保証します。

このオプションが (またはoff) にfalse設定されている場合、リンク サーバーでリモート プロシージャ 呼び出しを呼び出している間、ローカル トランザクションは分散トランザクションに昇格されません。

サーバー間プロシージャ呼び出しを行う前に、トランザクションが既に分散トランザクションである場合、このオプションは無効です。 リンク サーバーに対するプロシージャ 呼び出しは、同じ分散トランザクションで実行されます。

サーバー間プロシージャ呼び出しを行う前に、接続にアクティブなトランザクションがない場合、このオプションは無効です。 その後、このプロシージャは、アクティブなトランザクションのないリンク サーバーに対して実行されます。

このオプションの既定値は true (または on) です。

[ @optvalue = ] N'optvalue'

@optnameを有効にするか、無効falseonoffにするかを指定します。true @optvalueは nvarchar(128) で、既定値はありません。

  • 接続タイムアウトおよびクエリ タイムアウト オプションの場合、@optvalueは負以外の整数である可能性があります。

  • 照合順序名オプションの場合、@optvalueは照合順序名または NULL.

  • name オプションでは@optvalueリンク サーバー接続の新しい名前を表す文字列を指定できます。

  • プロバイダー文字列オプションの場合、@optvalueは、リンク サーバー接続の新しい OLE DB ソースを表す文字列またはNULL文字列にすることができます。

リターン コードの値

0 (成功) または 1 (失敗)。

解説

照合順序と 互換性のある オプションが設定 trueされている場合、 照合順序名 は自動的に NULLに設定されます。

照合順序名が null 以外の値に設定されている場合は、照合順序と互換性が自動的にfalse設定されます。

アクセス許可

サーバーに対する ALTER ANY LINKED Standard Edition RVER 権限が必要です。

次の例では、SQL Server の別のインスタンスに対応するリンク サーバーを、 SEATTLE3SQL Server のローカル インスタンスと照合順序の互換性を持つよう構成します。

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