sp_serveroption (Transact-SQL)

適用対象: SQL Server

リモート サーバーとリンク サーバーのサーバー オプションを設定します。

Transact-SQL 構文表記規則

構文

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

引数

[ @server = ] N'server'

オプションを設定するサーバーの名前。 @serversysname で、既定値はありません。

[ @optname = ] 'optname'

指定したサーバーに設定するオプション。 @optnamevarchar(35)で、既定値はありません。 @optname には、次のいずれかの値を指定できます。

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

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

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

リンク サーバーは、そのサーバー内のすべての列で使用される単一の照合順序をサポートしている必要があります。 リンク サーバーが、単一のデータ ソース内で複数の照合順序をサポートしている、またはリンク サーバーの照合順序が 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)';
データ アクセス 分散クエリ アクセスに対してリンク サーバーを有効または無効にします。 sp_addlinkedserverによって追加されたsys.serverエントリにのみ使用できます。
dist ディストリビューターです。
name リンク サーバー オブジェクトの名前を指定します。

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

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

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

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

true場合、リモート列の照合順序は SQL Server データ ソースに使用され、collation name で指定された照合順序は SQL Server 以外のデータ ソースに使用されます。 これが既定です。

false場合、分散クエリでは常にローカル サーバーの既定の照合順序が使用されますが、collation 名リモート列の照合順序は無視されます。
リモート プロセス トランザクションの昇格 このオプションを使って、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を有効にするか (trueまたはon)、無効にする (falseまたはoff) かを指定します。 @optvaluenvarchar(128)で、既定値はありません。

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

  • collation name オプションでは、照合順序名またはNULL@optvalueできます。

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

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

リターン コードの値

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

解説

collation compatible オプションが true に設定されている場合、collation name は自動的に NULL に設定されます。

collation nameが null 以外の値に設定されている場合、collation 互換は自動的にfalseに設定されます。

アクセス許可

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

次の例では、SQL Server の別のインスタンス ( SEATTLE3) に対応するリンク サーバーを、SQL 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