2013-10-12 52 views
2

所以我写了一个简单的exe文件,它将从压缩文件夹中提取sql文件并在SQL Server Studio中打开它们。它的效果很好,除了有时会打开多个sql文件,然后导致多个SQL Server实例打开。我怎样才能在一个实例中打开文件?在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窗口神奇开放的,但我还没有想通了,为什么。

+3

我已编辑您的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

+0

@JohnSaunders啊,对不起没有意识到。谢谢。 – vince88

回答

2

我找不到任何方式使用现有的SSMS(对不起!),但幸运的是,我发现SSMS命令行非常有用。可以输入server和/或instance的名称以连接开关-S。它还使用开关-EWindows Authentication一起登录。通过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(); 
+0

感谢您的快速回复。我将默认设置为SSMS并尝试了您的方法,有时可以使用,有时不适用。我想我把它缩小到需要连接到数据库。如果SQL Server未连接,它将打开多个窗口,否则文件将在已连接的窗口中打开。 有没有办法不必设置默认应用程序?我将它作为一些同事的工具。 – vince88

+0

@ vince88好的。请检查我的更新。 – Alireza

+0

这真的很接近!我现在遇到的问题是SSMS打开,但声称无法找到文件并且不会加载。我查了一下,文件确实存在。我认为问题是路径中有空格(例如C:\ Documents and Settings \ ...),因为当我将sql文件放在根目录C:\目录下时,它们打开得很好。我会继续努力,但谢谢你的帮助! – vince88

相关问题