web-dev-qa-db-ger.com

So erhalten Sie den aktuellen Instanznamen von T-SQL

Wie kann ich den SQL Server-Server und den Instanznamen der aktuellen Verbindung mithilfe eines T-SQL-Skripts erhalten?

67

Ich habe gerade die Antwort in dieser SO Frage gefunden (wörtlich in der Frage, keine Antwort):

SELECT @@servername

gibt Servername\Instanz zurück, sofern dies nicht die Standardinstanz ist

SELECT @@servicename

gibt den Instanznamen zurück, auch wenn dies der Standardwert ist (MSSQLSERVER)

132

Wie wäre es damit:

EXECUTE xp_regread @rootkey='HKEY_LOCAL_MACHINE',
                   @key='SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQl',
                   @value_name='MSSQLSERVER'

Dadurch wird auch der Instanzname erhalten. null bedeutet Standardinstanz:

SELECT SERVERPROPERTY ('InstanceName')

http://technet.Microsoft.com/de-de/library/ms174396.aspx

15
Beno

SELECT @@servername gibt Ihnen Daten als server/instanceName

Um nur die instanceName zu erhalten, müssen Sie die select @@ServiceName-Abfrage ausführen.

10

Ich habe das gefunden:

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

Dadurch erhalten Sie eine Liste aller auf Ihrem Server installierten Instanzen.


Die ServerName-Eigenschaft der SERVERPROPERTY-Funktion und @@SERVERNAME geben ähnliche Informationen zurück. Die ServerName-Eigenschaft enthält den Windows-Server und den Instanznamen, aus denen sich die eindeutige Serverinstanz zusammensetzt. @@SERVERNAME liefert den aktuell konfigurierten lokalen Servernamen.

Ein Microsoft-Beispiel für den aktuellen Server ist:

SELECT CONVERT(sysname, SERVERPROPERTY('servername'));

Dieses Szenario ist hilfreich, wenn auf einem Windows-Server mehrere Instanzen von SQL Server installiert sind und der Client eine andere Verbindung zu derselben Instanz öffnen muss, die von der aktuellen Verbindung verwendet wird.

8
shA.t

Warum gerade beim Instanznamen aufhören? Sie können Ihre SQL Server-Umgebung folgendermaßen inventarisieren:

SELECT  
    SERVERPROPERTY('ServerName') AS ServerName,  
    SERVERPROPERTY('MachineName') AS MachineName,
    CASE 
        WHEN  SERVERPROPERTY('InstanceName') IS NULL THEN ''
        ELSE SERVERPROPERTY('InstanceName')
    END AS InstanceName,
    '' as Port, --need to update to strip from Servername. Note: Assumes Registered Server is named with Port
    SUBSTRING ( (SELECT @@VERSION),1, CHARINDEX('-',(SELECT @@VERSION))-1 ) as ProductName,
    SERVERPROPERTY('ProductVersion') AS ProductVersion,  
    SERVERPROPERTY('ProductLevel') AS ProductLevel,
    SERVERPROPERTY('ProductMajorVersion') AS ProductMajorVersion,
    SERVERPROPERTY('ProductMinorVersion') AS ProductMinorVersion,
    SERVERPROPERTY('ProductBuild') AS ProductBuild,
    SERVERPROPERTY('Edition') AS Edition,
    CASE SERVERPROPERTY('EngineEdition')
        WHEN 1 THEN 'PERSONAL'
        WHEN 2 THEN 'STANDARD'
        WHEN 3 THEN 'ENTERPRISE'
        WHEN 4 THEN 'EXPRESS'
        WHEN 5 THEN 'SQL DATABASE'
        WHEN 6 THEN 'SQL DATAWAREHOUSE'
    END AS EngineEdition,  
    CASE SERVERPROPERTY('IsHadrEnabled')
        WHEN 0 THEN 'The Always On Availability Groups feature is disabled'
        WHEN 1 THEN 'The Always On Availability Groups feature is enabled'
        ELSE 'Not applicable'
    END AS HadrEnabled,
    CASE SERVERPROPERTY('HadrManagerStatus')
        WHEN 0 THEN 'Not started, pending communication'
        WHEN 1 THEN 'Started and running'
        WHEN 2 THEN 'Not started and failed'
        ELSE 'Not applicable'
    END AS HadrManagerStatus,
    CASE SERVERPROPERTY('IsSingleUser') WHEN 0 THEN 'No' ELSE 'Yes' END AS InSingleUserMode,
    CASE SERVERPROPERTY('IsClustered')
        WHEN 1 THEN 'Clustered'
        WHEN 0 THEN 'Not Clustered'
        ELSE 'Not applicable'
    END AS IsClustered,
    '' as ServerEnvironment,
    '' as ServerStatus,
    '' as Comments
5
Nate S.

Nur um die Registrierungsabfragen zu verdeutlichen. Sie listen nur die Instanzen der passenden Bitanzahl (32 oder 64) für die aktuelle Instanz auf.

Der eigentliche Registrierungsschlüssel für 32-Bit-SQL-Instanzen unter einem 64-Bit-Betriebssystem lautet:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server

Sie können dies für eine 64-Bit-Instanz abfragen, um auch alle 32-Bit-Instanzen abzurufen. Die 32-Bit-Instanz scheint auf den Wow6432Node beschränkt zu sein, sodass die 64-Bit-Registrierungsstruktur nicht gelesen werden kann.

1
Colin Campbell

eine andere Methode, um den Instanznamen zu finden- Klicken Sie mit der rechten Maustaste auf Datenbankname und wählen Sie Eigenschaften aus. In diesem Teil können Sie Verbindungseigenschaften in der linken unteren Ecke anzeigen. Klicken Sie dann auf, um den Instanznamen anzuzeigen.

0
Yasin