使用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.
我做错了什么?
答案 0 :(得分:2)
我想出了这个问题。
我使用wix工具创建msi并将此项目(Trace reader)部署为windows中的服务。发生的事情是,跟踪读取器服务正在使用LocalSystem帐户运行。此帐户没有足够的权限访问痕迹。
我已为LocalSystem启用了“Alter trace”权限,如下所示。
将项目部署为服务时,这是必需的。