【问题标题】:sql server profiler 2014 "failed to open a table"sql server profiler 2014“无法打开表”
【发布时间】:2015-02-25 15:11:22
【问题描述】:

我正在尝试重播我保存到数据库表的 SQL Server 2014 Profiler 跟踪。当我打开时,我收到“无法打开表”错误消息。 Windows 日志中没有任何内容。

我用谷歌搜索过,这个错误曾经在将 SQL Server 2000 系统升级到 64 位系统时发生。这不适用于这里。我正在使用全新安装的 SQL Server 2014 在 Windows Server 2012 上运行。

跟踪是一个TSQL_replay 模板。我使用以下代码将其保存到表中。该代码生成了一个包含所示定义的表格。

SELECT * 
INTO myTrace 
FROM ::fn_trace_gettable(N'c:\Logs\sql_trace_events.trc', default)

CREATE TABLE [dbo].[myTrace]
(
    [TextData] [ntext] NULL,
    [BinaryData] [image] NULL,
    [DatabaseID] [int] NULL,
    [TransactionID] [bigint] NULL,
    [LineNumber] [int] NULL,
    [NTUserName] [nvarchar](256) NULL,
    [NTDomainName] [nvarchar](256) NULL,
    [HostName] [nvarchar](256) NULL,
    [ClientProcessID] [int] NULL,
    [ApplicationName] [nvarchar](256) NULL,
    [LoginName] [nvarchar](256) NULL,
    [SPID] [int] NULL,
    [Duration] [bigint] NULL,
    [StartTime] [datetime] NULL,
    [EndTime] [datetime] NULL,
    [Reads] [bigint] NULL,
    [Writes] [bigint] NULL,
    [CPU] [int] NULL,
    [Permissions] [bigint] NULL,
    [Severity] [int] NULL,
    [EventSubClass] [int] NULL,
    [ObjectID] [int] NULL,
    [Success] [int] NULL,
    [IndexID] [int] NULL,
    [IntegerData] [int] NULL,
    [ServerName] [nvarchar](256) NULL,
    [EventClass] [int] NULL,
    [ObjectType] [int] NULL,
    [NestLevel] [int] NULL,
    [State] [int] NULL,
    [Error] [int] NULL,
    [Mode] [int] NULL,
    [Handle] [int] NULL,
    [ObjectName] [nvarchar](256) NULL,
    [DatabaseName] [nvarchar](256) NULL,
    [FileName] [nvarchar](256) NULL,
    [OwnerName] [nvarchar](256) NULL,
    [RoleName] [nvarchar](256) NULL,
    [TargetUserName] [nvarchar](256) NULL,
[DBUserName] [nvarchar](256) NULL,
[LoginSid] [image] NULL,
[TargetLoginName] [nvarchar](256) NULL,
[TargetLoginSid] [image] NULL,
[ColumnPermissions] [int] NULL,
[LinkedServerName] [nvarchar](256) NULL,
[ProviderName] [nvarchar](256) NULL,
[MethodName] [nvarchar](256) NULL,
[RowCounts] [bigint] NULL,
[RequestID] [int] NULL,
[XactSequence] [bigint] NULL,
[EventSequence] [bigint] NULL,
[BigintData1] [bigint] NULL,
[BigintData2] [bigint] NULL,
[GUID] [uniqueidentifier] NULL,
[IntegerData2] [int] NULL,
[ObjectID2] [bigint] NULL,
[Type] [int] NULL,
[OwnerID] [int] NULL,
[ParentName] [nvarchar](256) NULL,
[IsSystem] [int] NULL,
[Offset] [int] NULL,
[SourceDatabaseID] [int] NULL,
[SqlHandle] [image] NULL,
[SessionLoginName] [nvarchar](256) NULL,
[PlanHandle] [image] NULL,
[GroupID] [int] NULL
) 

【问题讨论】:

    标签: sql-server trace sql-server-2014 sql-server-profiler


    【解决方案1】:

    我尝试了同样的事情,但没有遇到任何问题。您是否尝试过使用新跟踪并保存到不同的命名表?

    【讨论】:

      【解决方案2】:

      您必须等待...“重播”会灰显大约 1 分钟,直到它完全加载脚本。

      【讨论】:

      • 如果它是一个大脚本,您可能需要等待更长的时间,直到回放没有变灰
      【解决方案3】:

      有同样的问题,结果我试图在不同的 SQL 实例上使用 Profiler 2008 打开 Profiler 2014 中记录的跟踪以回复跟踪。在回放实例上将分析器升级到 2014 解决了这个问题。

      【讨论】:

        【解决方案4】:

        您必须先创建特定结构的表。尝试将跟踪从分析器导出到表中并查看它创建的内容。然后只需将列的子集插入表中。这是我用于 SQL 2012-2017 的内容:

        ------- Trace created with Replay template
        
        USE [testdb]
        
        GO 
        
        /****** Object:  Table [dbo].[TraceTable]    Script Date: 29-Oct-18 17:37:07 ******/ 
        SET ANSI_NULLS ON 
        GO 
        
        SET QUOTED_IDENTIFIER ON
        
        GO 
        
        CREATE TABLE [dbo].[TraceTableSQL1] 
        ( 
            [RowNumber] [int] IDENTITY ( 0 , 1 ) NOT NULL , 
            [EventClass] [int] NULL , 
            [BinaryData] [image] NULL , 
            [DatabaseID] [int] NULL , 
            [NTUserName] [nvarchar] ( 128 ) NULL , 
            [NTDomainName] [nvarchar] ( 128 ) NULL , 
            [HostName] [nvarchar] ( 128 ) NULL , 
            [ClientProcessID] [int] NULL , 
            [ApplicationName] [nvarchar] ( 128 ) NULL , 
            [LoginName] [nvarchar] ( 128 ) NULL , 
            [SPID] [int] NULL , 
            [StartTime] [datetime] NULL , 
            [EndTime] [datetime] NULL , 
            [Error] [int] NULL , 
            [DatabaseName] [nvarchar] ( 128 ) NULL , 
            [RowCounts] [bigint] NULL , 
            [RequestID] [int] NULL , 
            [EventSequence] [bigint] NULL , 
            [IsSystem] [int] NULL , 
            [ServerName] [nvarchar] ( 128 ) NULL , 
            [TextData] [ntext] NULL , 
            [EventSubClass] [int] NULL , 
            [Handle] [int] NULL , 
            PRIMARY KEY CLUSTERED 
            ( 
                [RowNumber] ASC 
            ) 
            WITH ( PAD_INDEX = OFF , STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [PRIMARY] 
        ) 
        ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 
        GO 
        
        INSERT [TraceTableSQL1] 
        SELECT 
        [EventClass] , 
        [BinaryData] , 
        [DatabaseID] , 
        [NTUserName] , 
        [NTDomainName] , 
        [HostName] , 
        [ClientProcessID] , 
        [ApplicationName] , 
        [LoginName] , 
        [SPID] , 
        [StartTime] , 
        [EndTime] , 
        [Error] , 
        [DatabaseName] , 
        [RowCounts] , 
        [RequestID] , 
        [EventSequence] , 
        [IsSystem] , 
        [ServerName] , 
        [TextData] , 
        [EventSubClass] , 
        [Handle] 
        FROM sys.fn_trace_gettable ( N'd:\temp\profiler.trc' , DEFAULT )
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-07-15
          • 1970-01-01
          • 2014-01-30
          • 2015-10-30
          • 1970-01-01
          • 1970-01-01
          • 2016-11-22
          相关资源
          最近更新 更多