2013-08-06 17 views

risposta

108

Appena trovato la risposta, in this SO question (letteralmente, all'interno della domanda, senza alcuna risposta):

SELECT @@servername 

rendimenti servername \ esempio per quanto questo non è il caso di difetto

SELECT @@servicename 

ritorna nome istanza, anche se questa è l'impostazione predefinita (MSSQLSERVER)

+3

Fornisce solo il nome del server e non il nome dell'istanza. Server\??? – Steam

+1

@blasto, che sembra essere il comportamento quando l'istanza è l'impostazione predefinita sul server. Prova con un'istanza denominata. Controllare questo: http://technet.microsoft.com/en-us/library/ms187944.aspx –

+4

Errato, utilizzare @@ nomeserver può fornire una risposta errata.SELECT CONVERT (sysname, SERVERPROPERTY ('nomeserver')) è la risposta corretta. Il @@ ServerName riporta il nome del cluster SQL, mentre serverproperty ('nomeserver') riporta il nome del cluster di Windows. È necessario il nome del cluster di Windows per connettersi al db (il nome del cluster di Windows può essere diverso dal nome del cluster SQL, che di solito accade quando si installa una nuova versione di sql-server su una macchina diversa (@@ nomeserver = Environment.MachineName) e voglio mantenere il vecchio nome in modo da non dover cambiare tutte le configurazioni). –

12

ne dite di questo:

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

In questo modo ottenere il nome istanza pure. null significa istanza predefinita:

SELECT SERVERPROPERTY ('InstanceName') 

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

+9

SELECT SERVERPROPERTY ('InstanceName') mi fornisce un valore NULL. – Steam

+2

utilizzare invece SELECT CONVERT (sysname, SERVERPROPERTY ('nomeserver')); –

+0

@Steam: probabilmente perché è l'istanza predefinita. –

7

SELECT @@servername vi darà i dati come server/instanceName

Per ottenere solo la instanceName si dovrebbe eseguire select @@ServiceName query.

+0

Per prima cosa, hai la barra nel modo sbagliato. La forma corretta è "server \ istanza". In secondo luogo, non è sempre vero che @@ nomeserver fornirà sia il server AND l'istanza, perché quando c'è una sola istanza restituirà solo "server". – Robino

6

ho trovato questo:

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

che vi darà l'elenco di tutte le istanze installate nel server.


La ServerName proprietà della SERVERPROPERTY funzioni e @@SERVERNAME ritorno informazioni simili. La proprietà ServerName fornisce il server Windows e il nome dell'istanza che insieme costituiscono l'istanza del server univoco. @@SERVERNAME fornisce il nome del server locale attualmente configurato.

E Microsoft esempio per il server corrente è:

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

Questo scenario è utile quando ci sono più istanze di SQL Server installati su un server Windows, e il client deve aprire un'altra connessione al stessa istanza utilizzata dalla connessione corrente.

+0

SELECT CONVERT (sysname, SERVERPROPERTY ('nomeserver')); è la risposta corretta –

3

perché fermarsi proprio al nome istanza? È possibile eseguire l'inventario del proprio ambiente SQL Server con quanto segue:

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 
Problemi correlati