Làm cách nào để lấy máy chủ SQL Server và tên phiên bản của kết nối hiện tại, sử dụng tập lệnh T-SQL?
Làm cách nào để lấy máy chủ SQL Server và tên phiên bản của kết nối hiện tại, sử dụng tập lệnh T-SQL?
Câu trả lời:
Chỉ cần tìm thấy câu trả lời, trong câu hỏi SO này (theo nghĩa đen, bên trong câu hỏi, không phải bất kỳ câu trả lời nào):
SELECT @@servername
trả về tên máy chủ \ instance với điều kiện đây không phải là trường hợp mặc định
SELECT @@servicename
trả về tên phiên bản, ngay cả khi đây là tên mặc định (MSSQLSERVER)
Còn cái này thì sao:
EXECUTE xp_regread @rootkey='HKEY_LOCAL_MACHINE',
@key='SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQl',
@value_name='MSSQLSERVER'
Điều này cũng sẽ nhận được tên cá thể. null
nghĩa là phiên bản mặc định:
SELECT SERVERPROPERTY ('InstanceName')
SELECT @@servername
sẽ cung cấp cho bạn dữ liệu như server/instanceName
Để chỉ nhận được, instanceName
bạn nên chạy select @@ServiceName
truy vấn.
Tôi đã tìm thấy cái này:
EXECUTE xp_regread
@rootkey = 'HKEY_LOCAL_MACHINE',
@key = 'SOFTWARE\Microsoft\Microsoft SQL Server',
@value_name = 'InstalledInstances'
Điều đó sẽ cung cấp cho bạn danh sách tất cả các phiên bản được cài đặt trong máy chủ của bạn.
Các
ServerName
tài sản củaSERVERPROPERTY
hàm và@@SERVERNAME
trả về thông tin tương tự. CácServerName
bất động sản cung cấp máy chủ và instance name Windows mà cùng nhau tạo nên dụ máy chủ độc đáo.@@SERVERNAME
cung cấp tên máy chủ cục bộ hiện được định cấu hình.
Và ví dụ của Microsoft cho máy chủ hiện tại là:
SELECT CONVERT(sysname, SERVERPROPERTY('servername'));
Tình huống này hữu ích khi có nhiều phiên bản SQL Server được cài đặt trên máy chủ Windows và máy khách phải mở một kết nối khác đến cùng một phiên bản được kết nối hiện tại sử dụng.
Tại sao chỉ dừng lại ở tên cá thể? Bạn có thể kiểm kê môi trường SQL Server của mình bằng cách sau:
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
Để nhận danh sách máy chủ và phiên bản mà bạn đã kết nối:
select * from Sys.Servers
Để nhận danh sách cơ sở dữ liệu mà máy chủ được kết nối có:
SELECT * from sys.databases;
Chỉ để thêm một số làm rõ cho các truy vấn đăng ký. Họ chỉ liệt kê các trường hợp của bitness phù hợp (32 hoặc 64) cho trường hợp hiện tại.
Khóa đăng ký thực tế cho các phiên bản SQL 32 bit trên hệ điều hành 64 bit là:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server
Bạn có thể truy vấn điều này trên phiên bản 64 bit để nhận tất cả các phiên bản 32 bit. Phiên bản 32-bit dường như bị hạn chế đối với Wow6432Node nên không thể đọc cây đăng ký 64-bit.
SELECT @@SERVERNAME
tạo ra kết quả cần thiết để kết nối bằng cách sử dụngsqlcmd -S
. Nếu nó là phiên bản MSSQLSERVER mặc định, thì nó phải-không- được chỉ định trong tham số -S. Đây là phiên bản dành cho nhà phát triển 14.0.2002.14 2017, 64-bit.