我正在尝试为自定义审计要求编写SSMS插件(需要审计生产环境中用户运行的所有查询).我有.addin文件位于相应的文件夹中,它命中我的Connect.Exec方法中的断点,我能够从活动文档中选择查询语句.但是我不确定是否有任何属性或方法可以查找以获取数据库名称和用户连接的服务器?
有些人通过codeplex浏览4个小时,下载每个项目并分析代码,这给了我需要的答案.我希望有一天这会帮助某人(虽然我同意@Mitch,如果SQL Server Audit适合你,你应该先尝试一下)..
添加对Microsoft.SqlServer.RegSrvrEnum.dll和SqlWorkBench.Interfaces的引用(位于C:\ ProgramFiles ..\SQL Server .. - 中的某处).确保已安装工具的SDK.我只测试了SQL Server Management Studio 2014.
然后下面的代码应该做的伎俩(欢迎你!)
IScriptFactory scriptFactory = ServiceCache.ScriptFactory; CurrentlyActiveWndConnectionInfo connectionIfno = scriptFactory.CurrentlyActiveWndConnectionInfo; UIConnectionInfo conn = connectionIfno.UIConnectionInfo; Debug.WriteLine("{0}::{1}", conn.ServerName, conn.AdvancedOptions["DATABASE"]);