SQL Server存储过程不在计划缓存或Profiler中

时间:2018-08-06 18:51:27

标签: sql-server caching stored-procedures sql-server-profiler

我无法确定为什么某个存储过程没有出现在计划缓存或SQL Server Profiler中。我正在运行SQL Server 2014 SP2。

存储过程和类型如下所示。我发现唯一有用的参考资料涉及SS 2008中的错误修复,该错误修复在字符串函数中使用了Blob。我在类型定义中确实有一个斑点(ntext)。这可能是原因或某种原因吗?如果不是,还有什么可能导致此行为?有什么方法可以使存储过程在探查器中缓存和/或显示?

CREATE TYPE [dbo].[OruMessages] AS TABLE
(
    [msg_status] [nchar](10) NOT NULL,
    [msg_no] [char](20) NOT NULL,
    [HL7_text_long] [ntext] NULL,
    [HL7_text_short] [nvarchar](255) NULL,
    [patient_id] [nvarchar](60) NULL,
    [msh_system] [nvarchar](50) NOT NULL,
    [msh_organization] [nvarchar](50) NOT NULL,
    [msh_event_cd] [nchar](10) NOT NULL,
    [msh_msg_type] [nchar](10) NOT NULL,
    [sent_dt] [datetime] NULL,
    [queued_dt] [datetime] NOT NULL
)
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[usp_HL7_SaveOruMessages]
    (@messageList [dbo].[OruMessages] READONLY)
AS
BEGIN
    INSERT  INTO [dbo].[HL7_out_queue]
    SELECT
        [msg_status],
        [msg_no],
        [HL7_text_long],
        [HL7_text_short],
        [patient_id],
        [msh_system],
        [msh_organization],
        [msh_event_cd],
        [msh_msg_type],
        [sent_dt],
        [queued_dt]
    FROM
        @messageList;
END;
GO


CREATE EVENT SESSION [Capture [usp_HL7_SaveOruMessages]] executions] ON SERVER 
ADD EVENT sqlserver.module_end(
    ACTION(sqlserver.database_name,sqlserver.sql_text)
    WHERE ([sqlserver].[database_name]=N'db' AND [sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text],N'%usp_HL7_SaveOruMessages%'))),
ADD EVENT sqlserver.module_start(
    ACTION(sqlserver.database_name,sqlserver.sql_text)
    WHERE ([sqlserver].[database_name]=N'db' AND [sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text],N'%usp_HL7_SaveOruMessages%'))),
ADD EVENT sqlserver.sql_batch_completed(
    ACTION(sqlserver.database_name,sqlserver.sql_text)
    WHERE ([sqlserver].[equal_i_sql_unicode_string]([sqlserver].[database_name],N'db') AND [sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text],N'%usp_HL7_SaveOruMessages%') )),
ADD EVENT sqlserver.sql_statement_completed(
    ACTION(sqlserver.database_name,sqlserver.sql_text)
    WHERE ([sqlserver].[equal_i_sql_unicode_string]([sqlserver].[database_name],N'db') AND [sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text],N'%usp_HL7_SaveOruMessages%') ))
ADD TARGET package0.event_file(SET filename=N'C:\db\Capture [usp_HL7_SaveOruMessages] executions')
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)
GO

1 个答案:

答案 0 :(得分:0)

这是最后更改的扩展事件会话,它使我可以从主机上进行所有RPC,批处理和模块调用,然后我就可以找到有问题的存储过程。

Private Overrides Async Function UpdateData As Task(Of ReturnData)
    textBox1.text = "new text"
    await Task.CompletedTask
    return new ReturnData("data")
End Function