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

时间:2012-10-24 17:14:34

标签: 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.
        }

2 个答案:

答案 0 :(得分: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窗口的当前状态(如果它有任何活动窗口打开或任何东西)

如果您可以分享原始要求,我们可能会考虑一些更好的选择。

答案 1 :(得分:0)

这个问题使我发疯,最终我发现,当我从以“ sa”身份登录更改为使用Windows身份验证时,问题得以解决。