Frage

Ich versuche, welche Instanzen von SQL Server, um zu bestimmen / SQL Express habe ich installiert (entweder manuell oder programmatisch), aber alle Beispiele erzählen mir eine SQL-Abfrage auszuführen, dies zu bestimmen, die ich schon davon ausgegangen bin verbunden eine bestimmte Instanz.

War es hilfreich?

Lösung

Bei einer Befehlszeile:

SQLCMD -L

oder

OSQL -L

(Hinweis: muss eine Kapital L sein)

Diese listet alle SQL-Server im Netzwerk installiert. Es gibt Konfigurationsoptionen Sie einen SQL Server zu verhindern, zeigt in der Liste setzen. Um dies zu tun ...

Bei Befehlszeile:

svrnetcn

In der aktivierten Protokolle Liste, wählen Sie 'TCP / IP', dann auf Eigenschaften. Es gibt ein Kontrollkästchen für ‚Verstecken Server‘.

Andere Tipps

Sie können diesen Registrierungswert abfragen, um die SQL-Version direkt zu bekommen:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\Tools\ClientSetup\CurrentVersion

Alternativ können Sie Ihre Instanznamen abfragen und dann mit Ihrem Instanznamen verwenden sqlcmd, die Sie möchten:

Ihr Instanzname sehen:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names

diese dann ausführen:

SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')

Wenn Sie mit C ++ Sie diese verwenden können Code die Registrierungsinformationen zu erhalten.

Alle Instanzen installiert sollte im Dienste-Snap-In der Microsoft Management Console angezeigt. Um die Instanznamen zu erhalten, gehen Sie auf Start | Start | Geben Sie services.msc und sucht alle Einträge mit "SQL Server (Instanzname)".

- T-SQL Query Liste von Instanzen auf einer Maschine installiert finden

DECLARE @GetInstances TABLE
( Value nvarchar(100),
 InstanceNames nvarchar(100),
 Data nvarchar(100))

Insert into @GetInstances
EXECUTE xp_regread
  @rootkey = 'HKEY_LOCAL_MACHINE',
  @key = 'SOFTWARE\Microsoft\Microsoft SQL Server',
  @value_name = 'InstalledInstances'

Select InstanceNames from @GetInstances 

Wenn Sie wollen einfach nur sehen, was auf dem Rechner installiert ist Sie derzeit angemeldet ist, denke ich, der einfachste manuelle Prozess ist, die SQL Server Configuration Manager zu öffnen, um nur (im Startmenü), die alle zeigt die SQL Services (und nur SQL-Dienste) auf dieser Hardware (läuft oder nicht). Dies setzt voraus, SQL Server 2005 oder höher; dotnetengineer der Empfehlung des Services Management Console zu verwenden, finden Ihnen alle Dienstleistungen zeigt, und soll immer verfügbar sein.

(wenn Sie frühere Versionen von SQL Server, zum Beispiel ausgeführt sind)

Wenn Sie sich für einen breiteren Entdeckungsprozess suchen, aber Sie könnten Tools von Drittanbietern betrachten wie SQLRecon und SQLPing, die Ihr Netzwerk scannen und einen Bericht über alle SQL-Service-Instanzen bauen auf einem beliebigen Server gefunden, auf die sie haben Zugriff. Es ist schon eine Weile her, seit ich Tools wie diese benutzt habe, aber ich war überrascht, was sie fanden (nämlich eine Handvoll von Fällen, die ich nicht bestanden hätte wissen). YMMV. Sie könnten für Details googeln, aber ich glaube, diese Seite die entsprechenden Downloads hat: http://www.sqlsecurity.com/Tools/FreeTools/tabid/65/Default.aspx

Ich weiß, dieser Thread ist ein bisschen alt, aber ich über diesen Thread kam, bevor ich die Antwort gefunden ich suchte und dachte, ich würde Aktie. Wenn Sie SQLExpress (oder localdb) verwenden gibt es eine einfachere Möglichkeit, Ihre Instanznamen zu finden. Bei einer Befehlszeile ein:

> sqllocaldb i

Dies listet die Instanznamen, die Sie lokal installiert haben. So sollten Sie Ihre vollständigen Servernamen enthalten (localdb) \ vor dem Instanznamen zu verbinden. Auch sqllocaldb können Sie neue Instanzen oder löschen sowie konfigurieren, dass sie erstellen. . Siehe: SqlLocalDB Dienstprogramm

SQL Server ermöglicht Anwendungen, SQL Server-Instanzen innerhalb des aktuellen Netzwerkes zu finden. Die SqlDataSourceEnumerator Klasse stellt diese Informationen dem Anwendungsentwickler, ein Datatable enthält Informationen über alle sichtbaren Server bereitstellt. Diese zurückgegebenen Tabelle eine Liste von Serverinstanzen auf dem Netzwerk enthält, die zur Aufstellung der Liste übereinstimmt, wenn ein Benutzer eine neue Verbindung zu erstellen versucht, und erweitert die Dropdown-Liste alle verfügbaren Server im Dialogfeld Verbindungseigenschaften enthalten. Die Ergebnisse angezeigt werden, sind nicht immer vollständig. Um die Tabelle mit Informationen über die verfügbaren SQL Server-Instanzen abzurufen, müssen Sie zuerst einen Enumerator abrufen, die gemeinsam genutzte / statische Instanz Eigenschaft mit:

using System.Data.Sql;

class Program
{
  static void Main()
  {
    // Retrieve the enumerator instance and then the data.
    SqlDataSourceEnumerator instance =
      SqlDataSourceEnumerator.Instance;
    System.Data.DataTable table = instance.GetDataSources();

    // Display the contents of the table.
    DisplayData(table);

    Console.WriteLine("Press any key to continue.");
    Console.ReadKey();
  }

  private static void DisplayData(System.Data.DataTable table)
  {
    foreach (System.Data.DataRow row in table.Rows)
    {
      foreach (System.Data.DataColumn col in table.Columns)
      {
        Console.WriteLine("{0} = {1}", col.ColumnName, row[col]);
      }
      Console.WriteLine("============================");
    }
  }
}

von Msdn http://msdn.microsoft .com / de-de / library / a6t1z9x2 (v = vs.80) aspx

Von Windows-Befehlszeile ein:

SC \\server_name query | find /I "SQL Server ("

Wo „server_name“ ist der Name eines Remote-Server, auf dem Sie die SQL-Instanzen angezeigt werden soll.

Dies erfordert ausreichende Berechtigungen natürlich.

Wenn Sie bei der Bestimmung dieser in einem Skript interessiert sind, können Sie versuchen, die folgenden:

sc \\server_name query | grep MSSQL

Hinweis: grep ist ein Teil von gnuwin32 Tool

Ich hatte das gleiche Problem. Der „osql -L“ Befehl nur angezeigt, eine Liste von Servern, aber ohne Instanznamen (nur die Instanz von meinem lokalen SQL Sever angezeigt wurde). Mit Wireshark, sqlbrowser.exe (die im freigegebenen Ordner Ihrer SQL-Installation gefunden können) fand ich eine Lösung für mein Problem.

Die lokale Instanz wird durch Registrierungseintrag aufgelöst. Die Remote-Instanzen werden von UDP-Broadcast (Port 1434) und SMB gelöst. Verwenden Sie "sqlbrowser.exe -c", um die Anfragen auflisten.

Meine Konfiguration verwendet 1 physischen und 3 virtuelle Netzwerkadapter. Wenn ich die „osql -L“ verwendet, um Befehl die sqlbrowser eine Anforderung von einem der virtuellen Adapter angezeigt (die in einem anderen Netzwerksegment ist), anstelle des physischen. osql wählt den Adpater durch seine Metrik. Sie können die Metrik mit dem Befehl „route print“ sehen. Für meine Konfiguration zeigte die Routing-Tabelle eine niedrigere Metrik für teh virtuellen Adapter dann für die physische. Also änderte ich die Schnittstellenmetrik in den Netzwerkeigenschaften durch automatische Metrik in den erweiterten Netzwerkeinstellungen deaktivieren. osql verwendet nun den physischen Adapter.

Diese Abfrage sollten Sie den Servernamen und Instanznamen bekommen:

SELECT @@SERVERNAME, @@SERVICENAME

I SQLServer nur 2008 installiert, aber ich war nicht in der Lage auf alle Datenbankinstanzen zu verbinden. Die Befehle @G Mastros posted keine aktiven Instanzen aufgeführt.

So sah ich in Diensten und festgestellt, dass der SQL Server-Agent deaktiviert wurde. Ich reparierte es durch die automatische Einstellung und dann beginnen sie.

Ich hatte das gleiche Problem, wenn ich mehr als 100 Servern wurde die Bewertung, hatte ich ein Skript in C # geschrieben die Dienstnamen SQL bestehen aus zu durchsuchen. Wenn Instanzen auf dem Server installiert, fügt SQL Server einen Dienst für jede Instanz mit Dienstnamen. Es kann für verschiedene Versionen wie 2000 bis 2008 variiert, aber sicher gibt es einen Service mit Instanznamen.

Ich nehme den Namen Service und Instanznamen aus dem Dienstnamen erhalten. Hier ist der Beispielcode verwendet, mit WMI Query Ergebnis:

if (ServiceData.DisplayName == "MSSQLSERVER" || ServiceData.DisplayName == "SQL Server (MSSQLSERVER)")
            {
                InstanceData.Name = "DEFAULT";
                InstanceData.ConnectionName = CurrentMachine.Name;
                CurrentMachine.ListOfInstances.Add(InstanceData);
            }
            else
                if (ServiceData.DisplayName.Contains("SQL Server (") == true)
                {
                    InstanceData.Name = ServiceData.DisplayName.Substring(
                                            ServiceData.DisplayName.IndexOf("(") + 1,
                                            ServiceData.DisplayName.IndexOf(")") - ServiceData.DisplayName.IndexOf("(") - 1
                                        );
                    InstanceData.ConnectionName = CurrentMachine.Name + "\\" + InstanceData.Name;
                    CurrentMachine.ListOfInstances.Add(InstanceData);
                }
                else
                    if (ServiceData.DisplayName.Contains("MSSQL$") == true)
                    {
                        InstanceData.Name = ServiceData.DisplayName.Substring(
                                                ServiceData.DisplayName.IndexOf("$") + 1,
                                                ServiceData.DisplayName.Length - ServiceData.DisplayName.IndexOf("$") - 1
                                            );

                        InstanceData.ConnectionName = CurrentMachine.Name + "\\" + InstanceData.Name;
                        CurrentMachine.ListOfInstances.Add(InstanceData);
                    }

Hier ist eine einfache Methode: gehe zu starten Sie dann Programme dann Microsoft SQL Server 2005 dann Konfigurationstools dann SQL Server Configuration Manager dann SQL Server 2005-Netzwerkkonfiguration dann Hier können Sie finden alle die Instanz auf dem Computer installiert.

Wenn Ihr innerhalb SSMS Sie könnte es einfacher für Sie zu verwenden:

SELECT @@Version

Ich weiß, ihr eine alte Post, aber ich fand eine schöne Lösung mit PoweShell, wo Sie SQL-Instanzen installiert auf einem lokalen oder einem Remote-Computer, einschließlich der Version finden können und auch andere Eigenschaften erhalten werden, erweitern.

$MachineName = ‘.’ # Default local computer Replace . with server name for a remote computer

$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey(‘LocalMachine’, $MachineName)
$regKey= $reg.OpenSubKey("SOFTWARE\\Microsoft\\Microsoft SQL Server\\Instance Names\\SQL" )
$values = $regkey.GetValueNames()
$values | ForEach-Object {$value = $_ ; $inst = $regKey.GetValue($value); 
              $path = "SOFTWARE\\Microsoft\\Microsoft SQL Server\\"+$inst+"\\MSSQLServer\\"+"CurrentVersion";
              #write-host $path; 
              $version = $reg.OpenSubKey($path).GetValue("CurrentVersion");
                          write-host "Instance" $value;
              write-host  "Version" $version}

Eine weitere Möglichkeit wäre, SQLSERVER Entdeckung report..go zu Installationsmedium von SQL Server und doppelklicken Sie setup.exe

laufen

und im nächsten Bildschirm, gehen Sie zu Tools und Entdeckung Bericht klicken, wie unten

gezeigt

Dies zeigt Ihnen alle Instanzen mit ganzen features..below präsentieren entlang ist eine Momentaufnahme auf meinem PC eingeben Bild Beschreibung hier

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top