2012-10-24 55 views
9

我有一個C#應用程序,當用戶單擊按鈕時,將打開帶有指定服務器和數據庫連接的SQL Server Management Studio查詢編輯器。我想要做的是能夠具有相同的功能,但是已經運行了SSMS實例(不啓動一個新進程)。通過C#應用程序在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

據我的研究那張,沒有可與現有SSMS PROCESSS交互的API。 (http://stackoverflow.com/questions/2334435/how-do-i-programmatically-open-a-new-tab-in-an-open-instance-of-sql-management-s)

你可以嘗試做一個涉及SendKeys的黑客攻擊,但是這會有一個不知道SSMS窗口當前狀態的缺點(如果它有任何活動窗口打開或者其他任何東西)

如果你可以分享原始需求,在一些更好的選擇。

+0

我想過這樣做,但這需要快捷鍵。快捷鍵在用戶和版本中可能不同,所以我認爲這不會起作用。要求是我的C#應用​​程序執行預定義的SQL代碼,但是如果用戶想執行自定義SQL代碼,他們將不得不通過SSMS連接到服務器/數據庫。 – Fienix

+0

好吧,這很棘手。不確定這是否適合您的應用程序:爲什麼不讓您的應用程序以他的名義進行查詢和執行?還是希望用戶能夠充分利用SSMS? – tempidope

+0

我相信我會需要SSMS。一個例子是因爲我們需要查看估計的執行計劃。 – Fienix

相關問題