Sql server 如何获取SQL批处理中的查询数
我有一个批处理语句,我将通过Sql server 如何获取SQL批处理中的查询数,sql-server,sql-server-2008-r2,Sql Server,Sql Server 2008 R2,我有一个批处理语句,我将通过sp_executesql或Exec执行该语句: 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 sysCo
sp_executesql
或Exec
执行该语句:
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)
有没有办法知道一个批次中有多少select/insert/update/delete语句或查询
对于上述Eg;答案分别是2和3
为清楚起见:我不决定批处理语句,它直接通过存储过程参数到达我这里
我只需要知道服务器在此批处理中执行了多少个查询。您可以使用
SET SHOWPLAN\u ALL
选项。不幸的是,您不能保存和分析输出(至少不能在TSQL中保存和分析输出-这是使用ADO对象实现的一种方法)
我们能假设每一条语句都以
结尾吗代码>?我不能确定这一点,因此我将两者都作为egs给出。唯一的方法是检查执行计划,例如as。如果不分析查询,就无法猜测语句的数量。一旦有了XML格式的执行计划,就可以使用OPENXML检查计划中出现了多少条语句
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