我在使用 traceReader.InitializeAsReader(connDef, "D:\\trace.tdf");
错误:
2013-07-25 13:59:53,578 [8] DEBUG Error while invoking InitializeAsReaderException has been thrown by the target of an invocation. Microsoft.SqlServer.Management.Trace.SqlTraceException: Failed to initialize object as reader. ---> System.Runtime.InteropServices.COMException at ?A0xe4daab47.ProcessError(Int32 hr, UInt16* lpszMessage) at Microsoft.SqlServer.Management.Trace.CTraceControllerBase.InitSource(Boolean bReOpen) at Microsoft.SqlServer.Management.Trace.CTraceObjectsRowsetController.InitSource(Boolean bReOpen) at Microsoft.SqlServer.Management.Trace.TraceServer.InitializeAsReader(ConnectionInfoBase serverConnInfo, String profileFileName) --- End of inner exception stack trace --- at Microsoft.SqlServer.Management.Trace.TraceServer.InitializeAsReader(ConnectionInfoBase serverConnInfo, String profileFileName).
场景:
I use sql 2012 server under windows 2008 R2.
加载的程序集是
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.
我做错了什么?
最佳答案
I figured out the issue.
我使用 wix 工具创建 msi 并将这个项目(Trace reader)部署为 windows 中的服务。发生的事情是,trace reader 服务正在使用 LocalSystem 帐户运行。此帐户没有足够的访问权限痕迹。
我已经为 LocalSystem 启用了“Alter trace”权限,如下所示。
当您将项目部署为服务时,这是必需的。
关于c# - 初始化跟踪阅读器时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17853114/