初始化跟踪读取器时出错

时间:2013-07-25 08:42:59

标签: c#

使用traceReader.InitializeAsReader(connDef, "D:\\trace.tdf");

时出现以下错误

错误:

  

2013-07-25 13:59:53,578 [8]调查   错误   虽然已经抛出了调用InitializeAsReaderException   调用的目标。   Microsoft.SqlServer.Management.Trace.SqlTraceException:失败   将对象初始化为读者。 --->   System.Runtime.InteropServices.COMException at   ?A0xe4daab47.ProcessError(Int32 hr,UInt16 * lpszMessage)at at   Microsoft.SqlServer.Management.Trace.CTraceControllerBase.InitSource(布尔   bReOpen)at   Microsoft.SqlServer.Management.Trace.CTraceObjectsRowsetController.InitSource(布尔   bReOpen)at   Microsoft.SqlServer.Management.Trace.TraceServer.InitializeAsReader(ConnectionInfoBase   serverConnInfo,String profileFileName)---内部异常结束   堆栈跟踪--- at   Microsoft.SqlServer.Management.Trace.TraceServer.InitializeAsReader(ConnectionInfoBase   serverConnInfo,String profileFileName)。

情景:

  

我在Windows 2008 R2下使用sql 2012服务器。

加载的装配是

connectionInfoAssembly = Assembly.Load("Microsoft.SqlServer.ConnectionInfo, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91");
traceAssembly = Assembly.Load("Microsoft.SqlServer.ConnectionInfoExtended, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91");
smoAssembly = Assembly.Load("Microsoft.SqlServer.Smo, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91");

ConnInfo是

server='';Trusted_Connection=true;multipleactiveresultsets=false --- Database name.

我做错了什么?

1 个答案:

答案 0 :(得分:2)

  

我想出了这个问题。

我使用wix工具创建msi并将此项目(Trace reader)部署为windows中的服务。发生的事情是,跟踪读取器服务正在使用LocalSystem帐户运行。此帐户没有足够的权限访问痕迹。

我已为LocalSystem启用了“Alter trace”权限,如下所示。 enter image description here

将项目部署为服务时,这是必需的。