Bir T-SQL komut dosyası kullanarak SQL Server sunucusunu ve geçerli bağlantının örnek adını nasıl alabilirim?
Bir T-SQL komut dosyası kullanarak SQL Server sunucusunu ve geçerli bağlantının örnek adını nasıl alabilirim?
Yanıtlar:
Cevabı sadece bu SO sorusunda buldum (kelimenin tam anlamıyla, sorunun içinde, herhangi bir cevap değil):
SELECT @@servername
bu varsayılan örnek olmadığı sürece sunucuadı \ örnek döndürür
SELECT @@servicename
bu varsayılan bile olsa örnek adını döndürür (MSSQLSERVER)
Buna ne dersin:
EXECUTE xp_regread @rootkey='HKEY_LOCAL_MACHINE',
@key='SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQl',
@value_name='MSSQLSERVER'
Bu, örnek adını da alacaktır. null
varsayılan örnek anlamına gelir:
SELECT SERVERPROPERTY ('InstanceName')
SELECT @@servername
size veri verecek server/instanceName
Yalnızca instanceName
siz almak için select @@ServiceName
sorguyu çalıştırmalısınız .
Neden sadece örnek adında duralım? SQL Server ortamınızın envanterini aşağıdakilerle yapabilirsiniz:
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
Bunu buldum:
EXECUTE xp_regread
@rootkey = 'HKEY_LOCAL_MACHINE',
@key = 'SOFTWARE\Microsoft\Microsoft SQL Server',
@value_name = 'InstalledInstances'
Bu size sunucunuzda kurulu olan tüm örneklerin listesini verecektir.
ServerName
MülkiyetSERVERPROPERTY
fonksiyonu ve@@SERVERNAME
benzer bilgileri döndürür.ServerName
Mülkiyet birlikte benzersiz sunucu örneğini oluşturan Windows sunucu ve örnek adı sağlar.@@SERVERNAME
şu anda yapılandırılmış yerel sunucu adını sağlar.
Ve mevcut sunucu için Microsoft örneği:
SELECT CONVERT(sysname, SERVERPROPERTY('servername'));
Bu senaryo, bir Windows sunucusunda birden çok SQL Server örneği yüklendiğinde ve istemcinin geçerli bağlantı tarafından kullanılan aynı örneğe başka bir bağlantı açması gerektiğinde kullanışlıdır.
Bağlandığınız sunucu ve örneğin listesini almak için:
select * from Sys.Servers
Bağlı sunucunun sahip olduğu veritabanlarının listesini almak için:
SELECT * from sys.databases;
Sadece kayıt sorgularına biraz açıklama eklemek için. Yalnızca geçerli örnek için eşleşen bitlik örneklerini (32 veya 64) listeler.
64 bit işletim sisteminde 32 bit SQL örnekleri için gerçek kayıt defteri anahtarı şu şekildedir:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server
Tüm 32 bit örnekleri almak için bunu 64 bitlik bir örnekte sorgulayabilirsiniz. 32 bitlik örnek Wow6432Node ile sınırlı göründüğü için 64 bit kayıt defteri ağacını okuyamıyor.
SELECT @@SERVERNAME
kullanarak bağlanmak için gereken sonucu üretirsqlcmd -S
. Varsayılan MSSQLSERVER örneğiyse, -S parametresinde belirtilmemelidir. Bu, 2017 14.0.2002.14 Developer sürümünde, 64-bit.