2013-10-12 81 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

相關問題