다음을 통해 공유


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는 항상 로컬로 문자 열에 대한 비교를 평가합니다.

이 옵션은 연결된 서버에 해당하는 데이터 원본의 문자 집합과 정렬 순서가 로컬 서버와 동일하다는 것이 확실한 경우에만 설정해야 합니다.
데이터 정렬 이름 원격 데이터 정렬을 사용하고 데이터 원본이 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 분배자.
이름 연결된 서버 개체의 이름을 지정합니다.

이름 변경은 원격 데이터 원본에 영향을 주지 않고 카탈로그 뷰의 sys.servers 열에서 반환 name 된 값에 반영됩니다.
공급자 문자열 연결된 서버 연결의 원본을 식별하는 OLE DB 문자열을 지정합니다.

공급자 문자열 변경 내용은 카탈로그 뷰의 열에서 반환된 provider_string 값에 sys.servers 반영됩니다.
지연 스키마 유효성 검사 원격 테이블의 스키마가 선택되어 있는지 여부를 확인합니다.

이 경우 true쿼리 시작 부분에서 원격 테이블의 스키마 검사를 건너뜁니다.
pub 게시자.
쿼리 시간 제한 연결된 서버에 대한 쿼리에 대한 시간 제한 값을 지정합니다.

이 경우 0기본값을 sp_configure 사용합니다.
rpc 지정된 서버에서 RPC를 사용하도록 설정합니다.
rpc out 지정된 서버로의 RPC가 가능하도록 합니다.
sub 구독자.
시스템 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
원격 데이터 정렬 사용 원격 열의 데이터 정렬 또는 로컬 서버의 데이터 정렬이 사용되는지 여부를 결정합니다.

원격 true열의 데이터 정렬이 SQL Server 데이터 원본에 사용되고 데이터 정렬 이름지정된 데이터 정렬이 SQL Server가 아닌 데이터 원본에 사용됩니다. 기본값입니다.

분산 쿼리가 항상 로컬 서버의 기본 데이터 정렬을 사용하는 경우 false데이터 정렬 이름과 원격 열의 데이터 정렬은 무시됩니다.
원격 프로시전 트랜잭션 승격 MS DTC(Microsoft Distributed Transaction Coordinator) 트랜잭션을 통한 서버 간 프로시저 동작을 보호하려면 이 옵션을 사용합니다. 이 옵션 true (또는 on)이면 원격 저장 프로시저를 호출하면 분산 트랜잭션이 시작되고 MS DTC를 사용하여 트랜잭션을 등록합니다. 원격 저장 프로시저를 호출하는 SQL Server 인스턴스가 트랜잭션 주관자이며 트랜잭션의 완료를 제어합니다. 연결에 대한 후속 COMMIT TRANSACTION 또는 ROLLBACK TRANSACTION 문이 실행되면 제어 인스턴스는 MS DTC가 관련된 컴퓨터에서 분산 트랜잭션의 완료를 관리해 줄 것을 요청합니다.

Transact-SQL 분산 트랜잭션이 시작된 후 연결된 서버로 정의된 SQL Server의 다른 인스턴스에 대한 원격 저장 프로시저 호출을 수행할 수 있습니다. 연결된 서버는 모두 Transact-SQL 분산 트랜잭션에 등록되며 MS DTC는 연결된 각 서버에 대해 트랜잭션이 완료되도록 합니다.

이 옵션을 (또는off)로 false 설정하면 연결된 서버에서 원격 프로시저 호출을 호출하는 동안 로컬 트랜잭션이 분산 트랜잭션으로 승격되지 않습니다.

서버 간 프로시저를 호출하기 전에 트랜잭션이 이미 분산 트랜잭션인 경우 이 옵션은 적용되지 않습니다. 연결된 서버에 대한 프로시저 호출은 동일한 분산 트랜잭션에서 실행됩니다.

서버 간 프로시저 호출을 하기 전에 연결에 활성 트랜잭션이 없는 경우 이 옵션은 적용되지 않습니다. 그러면 프로시저가 활성 트랜잭션 없이 연결된 서버에 대해 실행됩니다.

이 옵션의 기본값은 (또는on)입니다 true .

[ @optvalue = ] N'optvalue'

@optname 사용true(또는) 또는 비활성화(false또는offon)해야 하는지 여부를 지정합니다. @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