如何接收 SQL Server 探查器事件?
Posted
技术标签:
【中文标题】如何接收 SQL Server 探查器事件?【英文标题】:How can I receive SQL Server profiler events? 【发布时间】:2012-08-16 12:40:28 【问题描述】:我是这样尝试的:
using System;
using System.Windows.Forms;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Trace;
namespace SqlProfiller
public partial class Form1 : Form
TraceServer reader = new TraceServer();
SqlConnectionInfo connInfo = new SqlConnectionInfo();
public Form1()
InitializeComponent();
private void button1_Click(object sender, EventArgs e)
connInfo.ServerName = @".\SQLR2";
connInfo.DatabaseName = "DB";
connInfo.UserName = "sa";
connInfo.Password = "123";
reader.InitializeAsReader(connInfo, @"Standard.tdf");
while (reader.Read())
Console.WriteLine("SPID : " + reader["SPID"]);
Console.WriteLine("Login : " + reader["SessionLoginName"]);
Console.WriteLine("Object: " + reader["ObjectName"]);
Console.WriteLine("Text : " + reader["TextData"]);
Console.WriteLine();
textBox1.Text += "Event : " + reader["EventClass"] + Environment.NewLine;
textBox1.Text += "SPID : " + reader["SPID"] + Environment.NewLine;
textBox1.Text += "Login : " + reader["SessionLoginName"] + Environment.NewLine;
textBox1.Text += "Object: " + reader["ObjectName"] + Environment.NewLine;
textBox1.Text += "Text : " + reader["TextData"] + Environment.NewLine;
textBox1.Text += "----------------------------------------------------------";
textBox1.Text += Environment.NewLine;
Application.DoEvents();
错误:
Microsoft.SqlServer.Management.Trace.SqlTraceException: 失败 将对象初始化为阅读器。 ---> System.IO.FileLoadException:混合 模式程序集是针对运行时的“v2.0.50727”版本构建的,并且 没有额外配置无法在4.0运行时加载 信息。
无法将对象初始化为阅读器。
这是什么意思?
提前致谢
【问题讨论】:
【参考方案1】:What does this mean?
System.IO.FileLoadException: Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.
这意味着您的进程作为 .NET 4 进程运行并且您正在加载的程序集是 .NET 2 编译的 (Microsoft.SqlServer.Management
)。
重新编译您的应用程序以使用 .NET 2 或 add a hint for .NET 4 in config 以允许 .NET 2 程序集。
【讨论】:
【参考方案2】:如果运行您的代码(在 VS 2013 中使用 .NETFramework v 4.5 针对 Microsoft SQL Server 2008 构建,您将收到以下错误:
未能将对象初始化为读取器。 混合模式程序集是针对运行时的“v2.0.50727”版本构建的,如果没有附加,则无法在 4.0 运行时中加载 l 配置信息。
您可以通过更改 VS 项目中的 App.config 来修复它,默认情况下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
到这个(小补充)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
另外,当我使用解决方案添加程序集 -> 添加程序集 -> 浏览时,我使用了“100”文件夹,而不是下面路径中的“110”:
C:\Program Files (x86)\Microsoft SQL Server\100\SDK\Assemblies
Microsoft.SqlServer.ConnectionInfo.dll
Microsoft.SqlServer.ConnectionInfoExtended.dll
但是,它可能也适用于 110。
我希望,这个解决方案会有所帮助。
【讨论】:
以上是关于如何接收 SQL Server 探查器事件?的主要内容,如果未能解决你的问题,请参考以下文章
(转)SQLServer_十步优化SQL Server中的数据访问四
我知道字段内容,并不知道字段名,如何在数据库中快速找到或查询出所在的表?SQL SERVER 2000。
SQL Server的Audit login与Audit logout
sql server 不能启动 在事件记录中显示在启动sql server时,进程被另外一个程序占用 怎么解决,求教!!!