2012-10-24 4 views
9

Ich habe eine C# -Anwendung, die beim Klicken auf eine Schaltfläche den SQL Server Management Studio-Abfrageeditor mit einer angegebenen Server- und Datenbankverbindung öffnet. Ich möchte die gleiche Funktionalität haben, aber mit einer bereits laufenden Instanz von SSMS (keinen neuen Prozess starten).Öffnen Sie neue Datenbankverbindung und Abfragefenster in SSMS durch C# -Anwendung?

Mein Code so weit:

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

Antwort

2

Wie weit geht meine Forschung, gibt es keine API zur Verfügung mit einem bestehenden SSMS processs zu interagieren. (http://stackoverflow.com/questions/2334435/how-do-i-programmatical-open-a-new-tab-in-an-open-instance-of-sql-management-s)

Sie Ich könnte versuchen, einen Hack mit SendKeys zu machen, aber das hätte den Nachteil, dass ich den aktuellen Zustand des SSMS-Fensters nicht kenne (wenn es irgendwelche aktiven Fenster geöffnet hat)

Wenn Sie die ursprüngliche Anforderung teilen könnten, werden wir vielleicht nachsehen bei einigen besseren Alternativen.

+0

Ich dachte darüber nach, aber das würde Tastenkürzel erfordern. Tastenkürzel können bei Benutzern und Versionen unterschiedlich sein, daher glaube ich nicht, dass dies funktioniert. Voraussetzung ist, dass meine C# -Anwendung vordefinierten SQL-Code ausführt. Wenn ein Benutzer jedoch benutzerdefinierten SQL-Code ausführen möchte, muss er sich über SSMS mit dem Server/der Datenbank verbinden. – Fienix

+0

Okay, das ist schwierig. Nicht sicher, ob dies in Ihre Anwendung passen würde: Warum erlauben Sie Ihrer Anwendung nicht, die Abfrage zu erhalten und in ihrem Namen auszuführen? Oder möchten Sie, dass der Benutzer SSMS vollständig ausnutzt? – tempidope

+0

Ich glaube, ich würde SSMS benötigen. Ein Beispiel wäre, weil wir geschätzte Ausführungspläne einsehen müssen. – Fienix

Verwandte Themen