ADO와 함께 저장 프로시저 사용

저장 프로시저란 SQL문과 하나의 이름으로 저장되고 한 단위로 처리되는 선택적인 흐름 제어문을 미리 컴파일하여 모아 놓은 것입니다. 연결 풀링을 사용하도록 하여 저장 프로시저를 작성하면 특수하게 고려해야 하는 문제들이 생길 수 있습니다. 예를 들어 준비된 SQL문에 대해 임시 저장 프로시저를 작성하는 것은 ODBC 데이터 원본 관리자에서 구성할 수 있는 선택 사항입니다. 이 설정의 기본값은 SQL Server 2.65와 3.5 드라이버의 경우에는 "On" 입니다. 즉 SQL문이 준비되면 임시 저장 프로시저가 작성되고 컴파일됩니다. 준비된 명령이 ADO 메서드 중 하나에 의해 호출되면 임시 저장 프로시저가 실행되어 SQL문을 분석하고 컴파일할 때 생기는 오버헤드가 줄어 듭니다. 이 기능을 적절하게만 사용하면 응용 프로그램의 성능을 개선할 수 있습니다. SQL문을 세 번 이상 실행하려고 하거나 두 번 이상 실행하고 매개 변수를 포함하도록 하려면 명령문을 준비해야 합니다. SQL문을 준비할 때는 SQL문을 처음 실행할 때 컴파일되어야 하고 데이터베이스로의 연결을 해제하면 준비한 SQL문도 없어진다는 점을 염두에 두어야 합니다.

연결 풀링을 사용하면 임시 저장 프로시저를 삭제할 시기를 결정해야 합니다. SQL Server 2.65 드라이버를 사용하는 경우 연결이 해제될 때 저장 프로시저도 해제됩니다. SQL Server 3.5 드라이버에서는 연결이 해제될 때 삭제하거나, 연결되어 있는 동안 필요할 때 삭제하는 방법 중에서 선택할 수 있습니다.

임시 저장 프로시저와 연결 풀링에는 저장 문제가 있을 수 있습니다. 기본 설정을 사용하는 경우에는 TempDB 공간이 부족하게 될 위험이 있습니다. 이 공간은 임시 저장 프로시저가 작성되고 저장되는 곳입니다. 연결 풀링을 사용하면 데이터베이스로 연결되지만 클라이언트가 연결을 종료하면 해제되어 연결이 다시 풀로 되돌아갑니다. 연결은 해제되지 않고 저장 프로시저가 더 이상 클라이언트와 연결되어 있지 않아 다시는 호출되지 않아도 TempDB에서 저장 프로시저가 삭제되지 않습니다.

따라서 SQL Server 2.65 드라이버를 실행할 때는 연결 풀링이 사용 가능할 때 준비 단계에서 저장 프로시저 작성을 사용 불가능으로 설정하는 것이 좋을 수도 있습니다. SQL Server 3.5 드라이버를 사용하는 경우에는 임시 저장 프로시저를 작성하는 옵션을 사용 불가능으로 설정하거나, 연결 풀링을 사용할 때는 "연결을 끊었을 때와 적절하게 연결되어 있는 동안"으로 설정해야 합니다. 이 옵션을 "연결을 끊었을 때와 연결되어 있는 동안 적절한 경우"로 설정하면 임시 저장 프로시저를 작성한 OLE DB ICommand 개체가 해제될 때 ODBC SQL Server 드라이버가 연결을 끊습니다. 클라이언트 코드가 ADO를 사용하는 경우에는 ADODB.Recordset과 ICommand 개체가 닫힐 때 저장 프로시저가 해제됩니다.


© 1997-2001 Microsoft Corporation. All rights reserved.