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 可以是以下任何值。

说明
兼容排序规则 影响针对链接服务器的分布式查询执行。 如果此选项设置为 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)';
数据访问 启用和禁用链接服务器以进行分布式查询访问。 只能用于 sys.server 通过 sp_addlinkedserver. 添加的条目。
dist 分发服务器。
name 指定链接服务器对象的名称。

名称更改反映在目录视图的列sys.servers返回name的值中,而不会影响远程数据源。
提供程序字符串 指定标识链接服务器连接的源的 OLE DB 字符串。

提供程序字符串更改反映在目录视图的列sys.servers返回provider_string的值中。
延迟架构验证 确定是否检查远程表的架构。

如果 true跳过查询开头远程表的架构检查。
酒馆 Publisher。
查询超时 指定针对链接服务器的查询的超时值。

如果 0为默认值,请使用 sp_configure 默认值。
rpc 从给定的服务器启用 RPC。
rpc out 对给定的服务器启用 RPC。
sub 订户。
系统 标识为仅供参考。 不支持。 不保证以后的兼容性。
使用远程排序规则 确定是使用远程列还是本地服务器的排序规则。

如果true为 SQL Server 数据源使用远程列的排序规则,并且排序规则名称中指定的排序规则用于非 SQL Server 数据源。 这是默认情况。

如果 false,分布式查询始终使用本地服务器的默认排序规则,同时 忽略远程列的排序规则名称和 排序规则。
远程 proc 事务提升 使用该选项可通过 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'

指定是否 应启用@optnametrue 或)或 on禁用(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