我是这样尝试的:
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运行时加载 信息。
无法将对象初始化为读者。
这是什么意思?
提前致谢
答案 0 :(得分:5)
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程序集。
答案 1 :(得分:3)
如果运行代码(使用.NETFramework v 4.5针对Microsoft SQL Server 2008在VS 2013中构建,则会出现以下错误:
无法将对象初始化为阅读器。 混合模式程序集是针对运行时的版本“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>
另外,当我使用Solution添加Assembly时 - &gt;添加程序集 - &gt;浏览,我在下面的路径中使用了“100”文件夹,而不是“110”:
C:\Program Files (x86)\Microsoft SQL Server\100\SDK\Assemblies
Microsoft.SqlServer.ConnectionInfo.dll
Microsoft.SqlServer.ConnectionInfoExtended.dll
但是,它也可能与110合作。
我希望,这个解决方案会有所帮助。