【问题标题】:SQL Server: Could not find prepared statement with handle 10 from query analizerSQL Server:无法从查询分析器中找到带有句柄 10 的准备好的语句
【发布时间】:2012-04-07 12:31:41
【问题描述】:

我运行 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

【问题讨论】:

  • 在对应的RPC:Starting事件中,文本数据可能包含set @p1=NULLSmith's answer 提到了这一点。
  • 仅供参考 - 这看起来就像 Cognos 将查询传递给 SQL Server 的方式。

标签: sql sql-server


【解决方案1】:

您应该使用RPC:Starting 查询而不是RPC:Completed

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

如果您使用 RPC:Completed,则应删除 SET set @p1=10 查询才能正常工作

【讨论】:

  • 默认情况下,RPC:Starting 事件不会被跟踪。开始新的跟踪时,您需要勾选“显示所有事件”并勾选RPC:Starting
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    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
    

    【讨论】:

    • 当您说“修改分析器文本”时,您的意思是“删除输出中使用的变量的集合语句”(即删除set @p1=10 行)?
    猜你喜欢
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 2020-05-04
    • 2017-03-13
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多