SQL Server Profiler 2014 "не удалось открыть таблицу"

Я пытаюсь воспроизвести трассировку SQL Server 2014 Profiler, которую я сохранил в таблице БД. Когда я открываю, я получаю сообщение об ошибке "Не удалось открыть таблицу". В логах windows ничего нет.

Я погуглил, и эта ошибка случалась при обновлении системы SQL Server 2000 до 64-битной системы. Это не относится здесь. Я работаю на Windows Server 2012 с новой установкой SQL Server 2014.

След был 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
) 

4 ответа

Решение

Вы должны подождать... "воспроизведение" будет серым в течение 1 минуты, пока он полностью не загрузит скрипт.

Я попробовал то же самое, и я не столкнулся с какими-либо проблемами. Вы пытались с новой трассировкой и сохранить в другой именованной таблице?

Вы должны сначала создать таблицу определенной структуры. Попробуйте экспортировать трассировку в таблицу из профилировщика и посмотрите, что она создала. Затем просто вставьте подмножество столбцов в таблицу. Вот что я использовал для 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 )

Возникла та же проблема, и оказалось, что я пытался открыть трассировку, записанную в Profiler 2014 с Profiler 2008 на экземпляре SQL, чтобы ответить на трассировку. Обновление профилировщика до 2014 на экземпляре воспроизведения решило проблему.

Другие вопросы по тегам