我有一个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.
}
答案 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身份验证时,问题得以解决。