2012-10-24 5 views
9

Ho un'applicazione C# che, quando un utente fa clic su un pulsante, apre l'editor di query di SQL Server Management Studio con una connessione server e database specificata. Quello che mi piacerebbe fare è essere in grado di avere questa stessa funzionalità, ma con un'istanza di SSMS già in esecuzione (non avviare un nuovo processo).Aprire una nuova connessione al database e una finestra di interrogazione in SSMS tramite l'applicazione C#?

Il mio codice finora:

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. 
     } 

risposta

2

Per quanto riguarda la mia ricerca va, non v'è alcuna API disponibile per interagire con uno SSMS processs esistente. (http://stackoverflow.com/questions/2334435/how-do-i-programmatically-open-a-new-tab-in-an-open-in-stance-of-sql-management-s)

Tu potrebbe provare a fare un hack che coinvolge SendKeys, ma questo avrebbe uno svantaggio di non conoscere lo stato corrente della finestra SSMS (se ha finestre attive aperte o altro)

Se si potesse condividere il requisito originale, potremmo sembrare ad alcune migliori alternative.

+0

Ho pensato di farlo, ma ciò richiederebbe i tasti di scelta rapida. I tasti di scelta rapida potrebbero essere diversi tra utenti e versioni, quindi non penso che funzionerebbe. Il requisito è che la mia applicazione C# esegua codice SQL predefinito, ma se un utente volesse eseguire codice SQL personalizzato, dovrebbe connettersi al server/database tramite SSMS. – Fienix

+0

Ok, è difficile. Non sono sicuro se questo si adatterebbe alla tua domanda: perché non consentire alla tua applicazione di ottenere la query ed eseguirla per suo conto? o vuoi che l'utente ottenga il pieno utilizzo di SSMS? – tempidope

+0

Credo che avrei bisogno di SSMS. Un esempio potrebbe essere dovuto alla necessità di visualizzare i piani di esecuzione stimati. – Fienix