C# 在现有SQL Server实例中打开多个文件

C# 在现有SQL Server实例中打开多个文件,c#,sql-server,C#,Sql Server,因此,我编写了一个简单的exe,它将从压缩文件夹中提取sql文件,并在SQLServerStudio中打开它们。它工作得很好,只是有时会打开多个sql文件,这会导致打开多个sql Server实例。如何在一个实例中打开所有文件 这就是我目前正在尝试的: foreach (string sqlFile in files) { Process sqlServer; if (Process.GetProcessesByName("Ssms").Length > 0)

因此,我编写了一个简单的exe,它将从压缩文件夹中提取sql文件,并在SQLServerStudio中打开它们。它工作得很好,只是有时会打开多个sql文件,这会导致打开多个sql Server实例。如何在一个实例中打开所有文件

这就是我目前正在尝试的:

foreach (string sqlFile in files)
{ 
     Process sqlServer;

     if (Process.GetProcessesByName("Ssms").Length > 0)
          sqlServer = Process.GetProcessesByName("Ssms")[0];
     else
          sqlServer = new Process();

     sqlServer.StartInfo.FileName = sqlFile;
     sqlServer.Start();                                                    
}

有时一个文件会在现有的SQL Server窗口中神奇地打开,但我还不知道为什么。

我找不到任何方法来使用现有的
SSMS
(抱歉!),但幸运的是,我发现
SSMS
命令行非常有用。它可以输入
服务器的名称
和/或
实例
,以连接交换机
-S
。它还使用开关
-E
使用
Windows身份验证登录。通过
SSMS/?
查看其选项,并选择最适合您的问题的选项。无论如何,我在连接/断开已有SSMS实例的情况下测试了以下代码:

string serverName = "myservername";    
var sepratedFiles = string.Join(" ", files.Select(p=>"\"" +p +"\"");

Process sqlServer = new Process();
sqlServer.StartInfo.FileName = "SSMS";
sqlServer.StartInfo.Arguments = string.Format("-S {0} {1}", serverName, sepratedFiles );
sqlServer.Start();

我已经编辑了你的标题。请看,“,其中的共识是“不,他们不应该”。@JohnSaunders啊,抱歉没有意识到。谢谢。谢谢你的快速回复。我将默认设置为SSMS,并尝试了您的方法,有时有效,有时无效。我想我把范围缩小到需要连接到数据库。如果未连接SQL server,它将打开多个窗口,否则文件将在已连接的窗口中打开。有没有办法不必设置默认应用程序?我正在为一些同事创建一个工具。这真的很接近!我现在的问题是SSMS打开了,但声称找不到文件,也不会加载。我查过了,文件确实在那里。我认为问题在于路径有空格(例如C:\Documents and Settings\…),因为当我将sql文件放在根C:\目录中时,它们会很好地打开。我会继续努力,但谢谢你的帮助!我想我明白了,我必须把文件名用引号括起来,比如:“\”“+filename+”\”“@vince88再次完美捕获。更新了答案以反映它。