В чем разница между пакетом SQL, оператором T-SQL и удаленным вызовом процедуры?
Как я могу определить, является ли часть кода T-SQL партией или оператором?
источник
В чем разница между пакетом SQL, оператором T-SQL и удаленным вызовом процедуры?
Как я могу определить, является ли часть кода T-SQL партией или оператором?
Ну, я полагаю, вы говорите в основном о классах Profiler, но объяснение в любом случае остается в силе.
Пакет SQL - это набор из одного или нескольких операторов, сгруппированных и разделенных оператором GO. Например: дополнительные операторы SELECT и INSERT образуют пакет, если в конце у них есть GO.
Вызов RPC - это вызов, поступающий из клиентского приложения в базу данных. Например: служба Windows, веб-приложение, приложение Windows, все, что требует подключения к базе данных, фактически вызывает RPC.
Теперь в Profiler вы увидите все, что касается сервера базы данных. Пакет из Management Studio, вызов RPC (который является либо пакетом, либо вызовом хранимой процедуры) из внешнего приложения, выполнение процедуры из Management Studio.
Каждый из них состоит из операторов TSQL, поэтому этот класс Profiler полезен на случай, если вы захотите еще больше расширить выполнение, чтобы увидеть, что на самом деле выполняется. Что вставляет, выбирает .. и т.д.
Самый простой способ просмотреть их в Profiler - это включить только вызов End RPC или End batch, и вы увидите там всю необходимую статистику (длительность, IO, CPU). Затем двигайтесь дальше, включив класс операторов TSQL, и копайте глубже.
GO
является ли принятый и используемый по умолчанию пакетный терминатор популярных клиентов, которые мы используем (т. Е. SSMS и sqlcmd), но стоит отметить, что фактическаяGO
строка в качестве пакетного терминатора может изменяться и настраиваться.Пакетная инструкция против T-SQL
Это четко определено в SQL Server BOL здесь
Пакет представляет собой группу из одного или нескольких операторов Transact-SQL, одновременно отправляемых из приложения на SQL Server для выполнения. Go - это пакетный разделитель, используемый в большинстве клиентских приложений, включая SSMS.
SQL Server компилирует операторы пакета в один исполняемый модуль, называемый планом выполнения. Операторы в плане выполнения затем выполняются по одному.
Простым термином, основанным на моем понимании, является RPC, когда вы выполняете сохраненный процесс с помощью клиентского API (например, в ADO.net CommandObject. Метод Execute)
Более подробное объяснение можно найти в одной из публикаций интернет-группы здесь :
источник