cursor threshold 서버 구성 옵션 구성Configure the cursor threshold Server Configuration Option

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)아니요Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

이 항목에서는 또는 을 사용하여 SQL Server 2017SQL Server 2017 에서 SQL Server Management StudioSQL Server Management Studio 커서 임계값 Transact-SQLTransact-SQL서버 구성 옵션을 구성하는 방법에 대해 설명합니다.This topic describes how to configure the cursor threshold server configuration option in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. 커서 임계값 옵션은 커서 키 집합이 비동기적으로 생성되는 커서 집합의 행 수를 지정합니다.The cursor threshold option specifies the number of rows in the cursor set at which cursor keysets are generated asynchronously. 커서에서 결과 집합에 대해 키 집합을 생성할 때 쿼리 최적화 프로그램은 해당 결과 집합으로 반환될 행 개수를 계산합니다.When cursors generate a keyset for a result set, the query optimizer estimates the number of rows that will be returned for that result set. 쿼리 최적화 프로그램의 계산 결과, 반환된 행 개수가 이 임계값보다 크면 커서가 계속 채워지는 동안 사용자가 커서에서 행을 인출할 수 있도록 커서가 비동기적으로 생성됩니다.If the query optimizer estimates that the number of returned rows is greater than this threshold, the cursor is generated asynchronously, allowing the user to fetch rows from the cursor while the cursor continues to be populated. 그렇지 않으면 커서가 동기적으로 생성되어 모든 행이 반환될 때까지 쿼리가 기다립니다.Otherwise, the cursor is generated synchronously, and the query waits until all rows are returned.

항목 내용In This Topic

시작하기 전 주의 사항 Before You Begin

제한 사항 Limitations and Restrictions

  • SQL ServerSQL Server 에서는 키 집합 커서 또는 정적 Transact-SQLTransact-SQL 커서를 비동기식으로 생성할 수 없습니다. does not support generating keyset-driven or static Transact-SQLTransact-SQL cursors asynchronously. Transact-SQLTransact-SQL 커서 작업은 일괄 처리되므로 Transact-SQLTransact-SQL 커서를 비동기식으로 생성하지 않아도 됩니다. cursor operations such as OPEN or FETCH are batched, so there is no need for the asynchronous generation of Transact-SQLTransact-SQL cursors. SQL ServerSQL Server 에서는 각 커서 작업의 클라이언트 왕복 때문에 짧은 대기 시간 OPEN이 문제가 되는 비동기 키 집합 기반 또는 정적 API(응용 프로그래밍 인터페이스) 서버 커서를 계속 지원합니다. continues to support asynchronous keyset-driven or static application programming interface (API) server cursors where low latency OPEN is a concern, due to client round trips for each cursor operation.

  • 키 집합의 예상 행 개수를 결정하는 최적화 프로그램의 정확도는 커서에 있는 각 테이블 통계의 통용성에 따라 다릅니다.The accuracy of the query optimizer to determine an estimate for the number of rows in a keyset depends on the currency of the statistics for each of the tables in the cursor.

권장 사항 Recommendations

  • 이 옵션은 고급 옵션으로, 숙련된 데이터베이스 관리자나 공인된 SQL ServerSQL Server 기술 지원 담당자만 변경해야 합니다.This option is an advanced option and should be changed only by an experienced database administrator or certified SQL ServerSQL Server technician.

  • 커서 임계값 을 -1로 설정하면 모든 키 집합이 동기적으로 생성되므로 작은 커서 집합에 유리합니다.If you set cursor threshold to -1, all keysets are generated synchronously, which benefits small cursor sets. cursor threshold 를 0으로 설정하면 모든 커서 키 집합이 비동기적으로 생성됩니다.If you set cursor threshold to 0, all cursor keysets are generated asynchronously. 다른 값을 사용하면 쿼리 최적화 프로그램이 커서 집합에 있는 예상 행 개수를 비교하여 이 값이 cursor threshold에 설정된 수를 초과하면 비동기적으로 키 집합을 작성합니다.With other values, the query optimizer compares the number of expected rows in the cursor set and builds the keyset asynchronously if it exceeds the number set in cursor threshold. 결과 집합이 작을수록 동기적 작성 성능이 향상되므로 커서 임계값 를 너무 낮게 설정하지 않는 것이 좋습니다.Do not set cursor threshold too low, because small result sets are better built synchronously.

보안 Security

사용 권한 Permissions

매개 변수 없이 또는 첫 번째 매개 변수만 사용하여 sp_configure 를 실행할 수 있는 권한은 기본적으로 모든 사용자에게 부여됩니다.Execute permissions on sp_configure with no parameters or with only the first parameter are granted to all users by default. 구성 옵션을 변경하거나 RECONFIGURE 문을 실행하는 두 매개 변수를 사용하여 sp_configure 를 실행하려면 사용자에게 ALTER SETTINGS 서버 수준 권한이 있어야 합니다.To execute sp_configure with both parameters to change a configuration option or to run the RECONFIGURE statement, a user must be granted the ALTER SETTINGS server-level permission. sysadminserveradmin 고정 서버 역할은 ALTER SETTINGS 권한을 암시적으로 보유하고 있습니다.The ALTER SETTINGS permission is implicitly held by the sysadmin and serveradmin fixed server roles.

SQL Server Management Studio 사용 Using SQL Server Management Studio

커서 임계값 옵션을 설정하려면To configure the cursor threshold option

  1. 개체 탐색기에서 서버를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.In Object Explorer, right-click a server and select Properties.

  2. 고급 노드를 클릭합니다.Click the Advanced node.

  3. 기타에서 커서 임계값 옵션을 원하는 값으로 변경합니다.Under Miscellaneous, change the Cursor Threshold option to the value you want.

Transact-SQL 사용 Using Transact-SQL

커서 임계값 옵션을 설정하려면To configure the cursor threshold option

  1. 데이터베이스 엔진Database Engine에 연결합니다.Connect to the 데이터베이스 엔진Database Engine.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.From the Standard bar, click New Query.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.Copy and paste the following example into the query window and click Execute. 다음 예제에서는 sp_configure 를 통해 cursor threshold 옵션을 0 으로 설정하여 커서 키 집합이 비동기적으로 생성되도록 만드는 방법을 보여 줍니다.This example shows how to use sp_configure to set the cursor threshold option to 0 so that cursor keysets are generated asynchronously.

USE AdventureWorks2012 ;  
GO  
EXEC sp_configure 'show advanced options', 1 ;  
GO  
RECONFIGURE  
GO  
EXEC sp_configure 'cursor threshold', 0 ;  
GO  
RECONFIGURE  
GO  

자세한 내용은 서버 구성 옵션(SQL Server)서버 구성 옵션을 구성하는 방법에 대해 설명합니다.For more information, see Server Configuration Options (SQL Server).

후속 작업: 커서 임계값 옵션을 구성한 후 Follow Up: After you configure the cursor threshold option

이 설정은 서버를 다시 시작하지 않아도 즉시 적용됩니다.The setting takes effect immediately without restarting the server.

관련 항목:See Also

@@CURSOR_ROWS(Transact-SQL) @@CURSOR_ROWS (Transact-SQL)
RECONFIGURE(Transact-SQL) RECONFIGURE (Transact-SQL)
서버 구성 옵션(SQL Server) Server Configuration Options (SQL Server)
sp_configure (Transact-SQL) sp_configure (Transact-SQL)
UPDATE STATISTICS(Transact-SQL)UPDATE STATISTICS (Transact-SQL)