通过C#应用程序在SSMS中打开新的数据库连接和查询窗口?

Fie*_*nix 10 c# ssms

我有一个C#应用程序,当用户单击按钮时,将打开具有指定服务器和数据库连接的SQL Server Management Studio查询编辑器.我想要做的是能够拥有相同的功能,但是已经运行的SSMS实例(不启动新进程).

我的代码到目前为止:

if (IsProcessOpen("Ssms") == false)
        {
            Process ssms = new Process();
            ssms.StartInfo.FileName = "C:\\Program Files (x86)\\Microsoft SQL Server\\110\\Tools\\Binn\\ManagementStudio\\Ssms.exe";
            ssms.StartInfo.Arguments = "-S " + StaticVariables.Getserver + " -d " + StaticVariables.Getdatabase;
            ssms.Start();
        }
        else
        {
            //In already running SSMS process, open connection to server and database with new query window.
        }
Run Code Online (Sandbox Code Playgroud)

tem*_*ope 2

就我的研究而言,没有可用于与现有 SSMS 流程交互的 API。(http://stackoverflow.com/questions/2334435/how-do-i-programmatically-open-a-new-tab-in-an-open-instance-of-sql-management-s)

您可以尝试进行涉及 SendKeys 的黑客攻击,但这会有一个缺点,即不知道 SSMS 窗口的当前状态(如果它打开了任何活动窗口或其他任何内容)

如果您可以分享最初的要求,我们可能会考虑一些更好的替代方案。