我有一个来自 DBA 对我的一个数据库所做的跟踪的 .trc 文件。我的 PC 上没有安装 SQL 分析器工具,因此无法查看内容和分析跟踪日志。如何在我的 PC 上未安装 SQL 分析器的情况下读取此文件?
当我查询默认跟踪的配置时,它显示已启用:
exec sp_configure 'default trace enabled';
-->
name minimum maximum config_value run_value
default trace enabled 0 1 1 1
Run Code Online (Sandbox Code Playgroud)
但是当我查询sys.traces
路径时,它返回一个空行集:
select * from sys.traces;
Run Code Online (Sandbox Code Playgroud)
什么可以解释没有启用的跟踪?
在 SQL Server 中,有很多跟踪标志。为什么其中一些需要关闭。在某些地方我看到需要关闭跟踪标志 8017。所以我想知道需要关闭哪个跟踪标志,为什么?
我有一个 Windows 终端服务器,其中有许多不同的用户通过 RDP 登录以运行应用程序。该应用程序为每个用户建立一个或多个到 SQL Server 2008 R2 实例的连接。所有用户使用相同的 SQL 登录访问相同的数据库。我希望能够跟踪特定用户的 SQL 会话,但我还没有找到确定哪个 SQL 会话属于哪个用户的方法。但是,我能够确定应用程序的每个实例正在使用的源 TCP 端口。
有没有办法根据客户端的 TCP 端口跟踪 SQL 会话?
我有一个问题,某个存储过程偶尔会消失,我需要找出哪个脚本删除了它。我发现这段代码给出了与删除这个存储过程相关的事件。
DECLARE @path NVARCHAR(260);
SELECT
@path = REVERSE(SUBSTRING(REVERSE([path]),
CHARINDEX(CHAR(92), REVERSE([path])), 260)) + N'log.trc'
FROM sys.traces
WHERE is_default = 1;
SELECT
LoginName,
HostName,
StartTime,
ObjectName,
TextData
FROM sys.fn_trace_gettable(@path, DEFAULT)
WHERE EventClass = 47 -- Object:Deleted
AND EventSubClass = 1
AND ObjectName like N'%usp_GetPendingConfiguration%'
ORDER BY StartTime DESC;
Run Code Online (Sandbox Code Playgroud)
有没有办法可以找到哪个存储过程或事件删除了这个存储过程?请指教。
sql-server-2008 stored-procedures profiler extended-events trace
我一直在使用 EventClass RPC:Completed 跟踪一些存储过程,这些过程是从 .Net SqlClient 数据提供程序间歇性调用的,没有必需的参数 - 只是“exec SprocName”。
如果我在它们出现在跟踪的 TextData 中时手动调用它们,它们会生成一个异常 - 但在原始跟踪中不会生成任何异常。这些“无参数”调用的“错误”列确实显示“1 - 错误”,但我不明白该调用如何不生成异常。
起初我怀疑这是分析器的故障,“1 - 错误”导致参数从 TextData 被截断,但我在扩展事件会话中看到了相同的结果。
有没有人在他们的分析器跟踪或事件会话中看到过这样的东西?该应用程序几乎可以肯定将这些调用作为某些边缘情况错误的一部分,但为什么 sql server 没有抛出异常?
我想设置服务器端重播跟踪并编写设置跟踪的脚本。但是,我希望跟踪在 12 小时后或创建 10 个 1GB 文件后结束。通常对于最大文件数,系统会删除最旧的文件,然后创建新文件。在我的情况下,这将以文件 2-11 而不是所需的 1-10 结束。我有空间限制,需要从头到尾重播所有步骤。我可以将文件大小限制设置为 10GB。我认为文件大小有 1GB 的限制,但这可能只是 GUI 中的一个限制。
关于如何在脚本达到 10 个文件后停止脚本的任何想法?
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
declare @DateTime datetime
declare @maxfilecount int
set @DateTime = DATEADD(HOUR,12,GETDATE())
set @maxfilesize = 1024
set @maxfilecount = 10
exec @rc = sp_trace_create @TraceID output, 2, N'D:\Output\Trace', @maxfilesize, @Datetime, @maxfilecount
Run Code Online (Sandbox Code Playgroud) 我有一个跟踪文件,包括由服务器端跟踪创建的 TEXTDATA 列。一些跟踪查询非常长。
如果我在 Profiler 上重新打开跟踪文件,则会完整显示相关的长查询 - 它有 340 行文本和 10951 个字符。
但是在我将跟踪文件导入 SQL-Server 表后,相关查询似乎被截断了。该表有一个由fn_trace_gettable方法创建的 ntext 列。
我使用不同的方法查询表:SSMS 中的文本输出(配置了最大数量的字符)在第 52 行中断输出。 SSMS (*.rpt) 的文件输出也被截断,这里查询在第 250 行被截断.
所以现在我想知道是否有可能将整个查询从跟踪文件中提取到 SQL-Server 表中,以及如何获取?
我试图找到哪个应用程序在 SQL Server 上打开了各种连接,所有连接都命名为“.net sqlclient 数据提供程序”。
从系统监视器我得到了机器名称;
在带有 的客户端上netstat -a -b -o | Find "SQLServer"
,我找到了 4 个连接,所有连接都是“PID 4 (ntoskrnl) ...
是”,这是 Windows,它是一个 MS SQL 服务器。
“SQL server profiler 中的跟踪进程”,使 Management Studio 崩溃。
那么,在我开始一一查杀应用程序之前,您是否知道如何追溯这种联系?
此致;
埃泽克
trace ×10
sql-server ×9
performance ×2
profiler ×2
connections ×1
maintenance ×1
parameter ×1
security ×1
ssms ×1
t-sql ×1