Come posso ottenere il server di SQL Server e il nome dell'istanza della connessione corrente, utilizzando uno script T-SQL?Come ottenere il nome istanza corrente da T-SQL
risposta
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)
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')
SELECT SERVERPROPERTY ('InstanceName') mi fornisce un valore NULL. – Steam
utilizzare invece SELECT CONVERT (sysname, SERVERPROPERTY ('nomeserver')); –
@Steam: probabilmente perché è l'istanza predefinita. –
SELECT @@servername
vi darà i dati come server/instanceName
Per ottenere solo la instanceName
si dovrebbe eseguire select @@ServiceName
query.
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
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à dellaSERVERPROPERTY
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.
SELECT CONVERT (sysname, SERVERPROPERTY ('nomeserver')); è la risposta corretta –
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
- 1. Come ottenere l'ID istanza corrente da boto3?
- 2. Come ottenere il nome della funzione corrente?
- 3. Ottenere il nome del modulo corrente
- 4. Ottenere il nome utente corrente quando rappresentato
- 5. Actionscript - Ottenere il nome della funzione corrente
- 6. Come ottenere il nome del metodo corrente dal codice
- 7. Testo sublime: come ottenere il nome file della vista corrente
- 8. Come posso ottenere il nome della subroutine corrente in Perl?
- 9. Come posso ottenere il nome della directory corrente in Javascript?
- 10. Come ottenere il nome del metodo corrente in Delphi 7?
- 11. Come ottenere il nome della proprietà corrente tramite riflessione?
- 12. In MVC3, come ottenere il nome del controller corrente?
- 13. Come ottenere il nome corrente del notebook IPython
- 14. Come ottenere il nome di contesto corrente di rspec?
- 15. Come ottenere il nome della pagina corrente in Silex
- 16. Come ottenere il percorso assoluto del nome file javascript corrente
- 17. Come posso ottenere il nome della directory corrente in Ruby?
- 18. Come ottenere il nome del tema corrente in Magento
- 19. Facebook JS SDK come ottenere il nome utente corrente?
- 20. In Boost.Test, come ottenere il nome del test corrente?
- 21. Ottenere il nome della classe corrente incluso il pacchetto
- 22. Ottieni il nome dell'ambiente corrente
- 23. Come conoscere il nome dello storyboard corrente?
- 24. Come ottenere il nome di lavoro da jenkins
- 25. Ottieni il nome dell'utente corrente
- 26. Come ottenere la query TSQL da LINQ DataContext.SubmitChanges()
- 27. Utilizzo di nomeof per ottenere il nome del metodo corrente
- 28. Ottieni il nome editore dell'applicazione ClickOnce corrente?
- 29. Get nome istanza C#
- 30. Come trovo il nome file eseguibile corrente?
Fornisce solo il nome del server e non il nome dell'istanza. Server\??? – Steam
@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 –
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). –