SQL Server:无法从查询分析器中找到带有句柄10的预准备语句

spr*_*boy 20 sql sql-server

我运行SQL分析器,我想在查询分析器中运行一些查询,但是我收到错误"SQL Server:找不到带有句柄x的预处理语句".

有任何想法吗?

这是我从探查器中复制的SQL:

declare @p1 int
set @p1=10
exec sp_prepare @p1 output,N'@P0 int,@P1 nvarchar(4000),@P2 datetime,@P3 datetime,@P4 datetime,@P5 datetime,@P6 datetime,@P7 datetime',N'SELECT * FROM SCHEDULE WITH (NOLOCK) WHERE RoomNo= @P0  AND STATUS =  @P1   AND ( (EndTimeDT <=  @P2  AND EndTimeDT >  @P3 ) OR (StartTimeDT >=  @P4  AND StartTimeDT <  @P5 )  OR (StartTimeDT <=  @P6  AND EndTimeDT >  @P7 ) )',1
select @p1
go
exec sp_execute 10,19,N'A','2012-03-22 16:30:00','2012-03-22 16:00:00','2012-03-22 16:00:00','2012-03-22 16:30:00','2012-03-22 16:00:00','2012-03-22 16:30:00'
go
Run Code Online (Sandbox Code Playgroud)

Smi*_*ith 13

你不应该使用RPC:Starting查询RPC:Completed

在分析器中,您通常会看到RPC:StartingRPC:Completed.显示的语句RPC:Staring是您需要选择的语句,RPC:Completed包括未从客户端传递的输出值.

如果您使用,RPC:Completed您应该删除SET set @p1=10查询工作

  • 默认情况下,不跟踪`RPC:Starting`事件。开始新的跟踪时,您需要选中“显示所有事件”并选中“ RPC:Starting”。 (2认同)

Die*_*ego 12

这是我的第二个答案,我在写第一个问题时误解了这个问题.

你为什么这样做set @p1=10?你不应该设置这个变量.尝试删除它

  • 这正是profiler的textData字段中的内容. (6认同)

spr*_*boy 7

如果您想在查询分析器中运行它,似乎您需要修改分析器文本。

declare @p1 int
exec sp_prepare @p1 output,N'@P0 int,@P1 nvarchar(4000),@P2 datetime,@P3 datetime,@P4 datetime,@P5 datetime,@P6 datetime,@P7 datetime',N'SELECT * FROM SCHEDULE WITH (NOLOCK) WHERE RoomNo= @P0  AND STATUS =  @P1   AND ( (EndTimeDT <=  @P2  AND EndTimeDT >  @P3 ) OR (StartTimeDT >=  @P4  AND StartTimeDT <  @P5 )  OR (StartTimeDT <=  @P6  AND EndTimeDT >  @P7 ) )',1
select @p1
exec sp_execute @p1,19,N'A','2012-03-22 16:30:00','2012-03-22 16:00:00','2012-03-22 16:00:00','2012-03-22 16:30:00','2012-03-22 16:00:00','2012-03-22 16:30:00'
go
Run Code Online (Sandbox Code Playgroud)