Bagaimana cara mendapatkan server SQL Server dan nama instance dari koneksi saat ini, menggunakan skrip T-SQL?
Bagaimana cara mendapatkan server SQL Server dan nama instance dari koneksi saat ini, menggunakan skrip T-SQL?
Jawaban:
Baru saja menemukan jawabannya, dalam pertanyaan SO ini (secara harfiah, di dalam pertanyaan, bukan jawaban apa pun):
SELECT @@servername
mengembalikan nama server \ instance sejauh ini bukan instance default
SELECT @@servicename
mengembalikan nama contoh, meskipun ini adalah default (MSSQLSERVER)
Bagaimana dengan ini:
EXECUTE xp_regread @rootkey='HKEY_LOCAL_MACHINE',
@key='SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQl',
@value_name='MSSQLSERVER'
Ini akan mendapatkan nama instance juga. null
berarti contoh default:
SELECT SERVERPROPERTY ('InstanceName')
SELECT @@servername
akan memberi Anda data sebagai server/instanceName
Untuk mendapatkan hanya instanceName
Anda yang harus menjalankan select @@ServiceName
kueri.
Aku menemukan ini:
EXECUTE xp_regread
@rootkey = 'HKEY_LOCAL_MACHINE',
@key = 'SOFTWARE\Microsoft\Microsoft SQL Server',
@value_name = 'InstalledInstances'
Itu akan memberi Anda daftar semua contoh yang dipasang di server Anda.
The
ServerName
milikSERVERPROPERTY
fungsi dan@@SERVERNAME
kembali informasi yang sama. TheServerName
properti menyediakan Windows server dan contoh nama yang bersama-sama membentuk contoh server yang unik.@@SERVERNAME
menyediakan nama server lokal yang saat ini dikonfigurasi.
Dan contoh Microsoft untuk server saat ini adalah:
SELECT CONVERT(sysname, SERVERPROPERTY('servername'));
Skenario ini berguna ketika ada beberapa contoh SQL Server yang diinstal di server Windows, dan klien harus membuka sambungan lain ke contoh yang sama yang digunakan oleh sambungan saat ini.
Mengapa berhenti di nama instance saja? Anda dapat menginventarisasi lingkungan SQL Server Anda dengan berikut ini:
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
Untuk mendapatkan daftar server dan instance yang Anda sambungkan:
select * from Sys.Servers
Untuk mendapatkan daftar database yang memiliki server yang terhubung:
SELECT * from sys.databases;
Hanya untuk menambahkan beberapa klarifikasi ke kueri registri. Mereka hanya mencantumkan instance bitness yang cocok (32 atau 64) untuk instance saat ini.
Kunci registri sebenarnya untuk instance SQL 32-bit di OS 64-bit adalah:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server
Anda dapat menanyakan ini pada instance 64-bit untuk mendapatkan semua instance 32-bit juga. Contoh 32-bit tampaknya terbatas pada Wow6432Node sehingga tidak dapat membaca pohon registri 64-bit.
SELECT @@SERVERNAME
menghasilkan hasil yang dibutuhkan untuk terhubung menggunakansqlcmd -S
. Jika itu adalah contoh MSSQLSERVER default, maka itu harus -tidak- ditentukan dalam parameter -S. Ini ada pada edisi 2017 14.0.2002.14 Pengembang, 64-bit.