¿Cómo puedo obtener el servidor SQL Server y el nombre de la instancia de la conexión actual, usando un script T-SQL?
sql
sql-server
tsql
sql-server-2008r2-express
Guillermo Gutiérrez
fuente
fuente
SELECT @@SERVERNAME
produce el resultado necesario para conectarse usandosqlcmd -S
. Si es la instancia predeterminada de MSSQLSERVER, entonces no debe especificarse en el parámetro -S. Esto es en 2017 14.0.2002.14 Developer Edition, 64 bits.Respuestas:
Acabo de encontrar la respuesta, en esta pregunta SO (literalmente, dentro de la pregunta, no cualquier respuesta):
SELECT @@servername
devuelve servername \ instance en la medida en que esta no sea la instancia predeterminada
SELECT @@servicename
devuelve el nombre de la instancia, incluso si este es el predeterminado (MSSQLSERVER)
fuente
Qué tal esto:
EXECUTE xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key='SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQl', @value_name='MSSQLSERVER'
Esto también obtendrá el nombre de la instancia.
null
significa instancia predeterminada:SELECT SERVERPROPERTY ('InstanceName')
http://technet.microsoft.com/en-us/library/ms174396.aspx
fuente
SELECT @@servername
te dará datos comoserver/instanceName
Para obtener solo el
instanceName
, debe ejecutarselect @@ServiceName
query.fuente
Encontré esto:
EXECUTE xp_regread @rootkey = 'HKEY_LOCAL_MACHINE', @key = 'SOFTWARE\Microsoft\Microsoft SQL Server', @value_name = 'InstalledInstances'
Eso le dará una lista de todas las instancias instaladas en su servidor.
Y el ejemplo de Microsoft para el servidor actual es:
SELECT CONVERT(sysname, SERVERPROPERTY('servername'));
fuente
¿Por qué detenerse solo en el nombre de la instancia? Puede hacer un inventario de su entorno de SQL Server con lo siguiente:
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
fuente
Para obtener la lista del servidor y la instancia a la que está conectado:
select * from Sys.Servers
Para obtener la lista de bases de datos que tiene el servidor conectado:
SELECT * from sys.databases;
fuente
Solo para agregar algunas aclaraciones a las consultas del registro. Solo enumeran las instancias del bitness coincidente (32 o 64) para la instancia actual.
La clave de registro real para instancias SQL de 32 bits en un sistema operativo de 64 bits es:
Puede consultar esto en una instancia de 64 bits para obtener también todas las instancias de 32 bits. La instancia de 32 bits parece restringida al Wow6432Node, por lo que no se puede leer el árbol de registro de 64 bits.
fuente
Otro método para encontrar el nombre de la instancia: haga clic con el botón derecho en el nombre de la base de datos y seleccione Propiedades, en esta parte puede ver las propiedades de conexión de la vista en la esquina inferior izquierda, haga clic en eso y luego podrá ver el nombre de la instancia.
fuente