SQL 배치, 명령문 및 RPC의 차이점은 무엇입니까? 원격 프로 시저 호출의 차이점은 무엇입니까? T-SQL

SQL 배치, T-SQL 문 및 원격 프로 시저 호출의 차이점은 무엇입니까?
T-SQL 코드의 일부가 배치 또는 명령문인지 어떻게 알 수 있습니까?



답변

글쎄, 나는 당신이 주로 프로파일 러 수업에 대해 이야기한다고 가정하지만 설명은 어쨌든 유효합니다.

SQL 배치는 하나 이상의 명령문으로 묶여 있으며 GO 문으로 구분됩니다. EG : 더 많은 SELECT 및 INSERT 문은 끝에 GO가 있으면 배치를 형성합니다.

RPC 호출은 클라이언트 응용 프로그램에서 데이터베이스로 들어오는 호출입니다. EG : Windows 서비스, 웹 응용 프로그램, Windows 응용 프로그램 등 데이터베이스에 연결해야 할 경우 실제로 RPC 호출을 수행합니다.

이제 프로파일 러에는 데이터베이스 서버에 닿는 모든 것이 표시됩니다. Management Studio의 일괄 처리, 외부 응용 프로그램의 RPC 호출 (일괄 처리 또는 저장 프로 시저 호출), Management Studio의 프로 시저 실행

이들 각각은 TSQL 문으로 구성되므로이 Profiler 클래스는 실행을 더 확장하여 실제로 실행 된 것을 확인하려는 경우에 유용합니다. 삽입, 선택 등

Profiler에서 가장 쉽게 볼 수있는 방법은 End RPC call 또는 End batch call 만 활성화하는 것입니다. 필요한 모든 통계 (지속 시간, IO, CPU)가 표시됩니다. 그런 다음 TSQL Statements 클래스를 사용 가능하게하여 더 깊이 파고들십시오.


답변

배치 대 T-SQL 문

이것은 SQL Server BOL에 명확하게 정의되어 있습니다.

일괄 처리는 응용 프로그램에서 SQL Server로 동시에 전송되어 실행되는 하나 이상의 Transact-SQL 문의 그룹 입니다. Go 는 SSMS를 포함한 대부분의 클라이언트 응용 프로그램에서 사용되는 배치 구분 기호입니다.

SQL Server는 배치 문을 실행 계획이라는 단일 실행 단위로 컴파일합니다. 그런 다음 실행 계획의 문은 한 번에 하나씩 실행됩니다.

내 이해 RPC를 기반으로 한 간단한 용어는 클라이언트 API를 사용하여 저장 프로 시저를 실행할 때입니다 (예 : ADO.net CommandObject. Execute 메서드)

자세한 내용은 다음 인터넷 뉴스 그룹 중 하나에 나와 있습니다 .

RPC “대”batch “는 ADO.NET (또는 모든 SQL Server 클라이언트)이 사용하는 TDS 실행 모드입니다. 매개 변수가없는 일반 SQL 문이 실행될 때”배치 “를 사용합니다. 저장 프로 시저가 실행될 때, RPC를 사용합니다 (이것은 독립형 네트워크 원격 프로 시저 호출과 RPC와 동일하지 않으며 TDS (SQL Server 네트워크 프로토콜)에서이 모드 RPC를 호출하기 만합니다). 실제로 sp_executesql이라는 저장 프로 시저를 사용하고 SQL 문 자체와 나머지 매개 변수를 전달하므로 RPC로 표시됩니다.

Pablo Castro
프로그램 관리자-ADO.NET 팀
Microsoft Corp.