112 votes

Comment obtenir le nom de l'instance actuelle à partir de T-SQL ?

Comment puis-je obtenir le serveur SQL Server et le nom de l'instance de la connexion actuelle, en utilisant un script T-SQL ?

200voto

Guillermo Gutiérrez Points 2979

Je viens de trouver la réponse, dans cette question SO (littéralement, à l'intérieur de la question, pas de réponse) :

SELECT @@servername

renvoie le nom du serveur \instance pour autant que ce ne soit pas l'instance par défaut

SELECT @@servicename

renvoie le nom de l'instance, même s'il s'agit de la valeur par défaut (MSSQLSERVER)

17voto

Tmu Points 4827

Que dites-vous de ça ?

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

Cela permettra d'obtenir le nom de l'instance également. null signifie instance par défaut :

SELECT SERVERPROPERTY ('InstanceName')

http://technet.microsoft.com/en-us/library/ms174396.aspx

11voto

Shree Points 176

SELECT @@servername vous donnera des données comme server/instanceName

Pour obtenir uniquement le instanceName vous devez exécuter select @@ServiceName requête .

11voto

CodeSlinger Points 155

Pourquoi s'arrêter au seul nom de l'instance ? Vous pouvez inventorier votre environnement SQL Server avec les éléments suivants :

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

9voto

shA.t Points 7969

J'ai trouvé ça :

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

Cela vous donnera la liste de toutes les instances installées sur votre serveur.


Le site ServerName de l SERVERPROPERTY et @@SERVERNAME renvoient des informations similaires. Le site ServerName fournit le nom du serveur et de l'instance Windows qui, ensemble, constituent l'instance unique du serveur. @@SERVERNAME fournit le nom du serveur local actuellement configuré.

Et l'exemple de Microsoft pour le serveur actuel est :

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

Ce scénario est utile lorsque plusieurs instances de SQL Server sont installées sur un serveur Windows et que le client doit ouvrir une autre connexion à la même instance utilisée par la connexion actuelle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X