【问题标题】:How to get count of no. of queries in a SQL batch如何计算没有。 SQL 批处理中的查询数
【发布时间】:2015-09-28 08:06:40
【问题描述】:

我有一个批处理语句,我将通过sp_executesqlExec 执行:

Declare @query1 varchar(max), @query2  varchar(max)
Set @query1 = '

select top 10 * from sysobjects;
select top 10 * from sysColumns;'

Set @query2 = '
select top 10 * from sysobjects
select top 10 * from sysColumns
select top 10 * from sysColumns
'

Exec(@query1)

Exec(@query2)

有什么方法可以知道单个批次中有多少个选择/插入/更新/删除语句或查询?

对于上面的例子;答案分别是 2 和 3

为了清楚起见:我不决定批处理语句,它直接通过存储过程参数给我。

我只需要知道服务器在这批中执行了多少查询。

【问题讨论】:

  • 我们可以假设每个语句都以;结尾吗?
  • 我无法确定这一点,因此我将两者都作为 egs..
  • 唯一的方法是检查执行计划,例如shown here。如果不解析查询,您无法猜测语句的数量。一旦您有了 XML 格式的执行计划,您就可以使用 OPENXML 检查计划中出现了多少条语句

标签: sql-server sql-server-2008-r2


【解决方案1】:

您可以使用SET SHOWPLAN_ALL 选项。不幸的是,您无法保存和分析输出(至少不能在 TSQL 中 - here 是使用 ADO 对象执行此操作的一种方法)

SET SHOWPLAN_ALL ON
GO

DECLARE @sql NVARCHAR(MAX)

SET @sql = '
SELECT * FROM dbo.Test 
SELECT TOP 1 * FROM dbo.Test'

EXECUTE sp_executesql @sql
GO

SET SHOWPLAN_ALL OFF
GO

【讨论】:

    猜你喜欢
    • 2012-04-27
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多