W jaki sposób pobrać metadane dotyczące SQL Servera?

W jaki sposób za pomocą T-SQL pobrać dane dotyczące m.in. nazwy serwera, instancji, czy zainstalowanej wersji? Rozwiązaniem są metadane i funkcje konfiguracyjne, które dostarczają takich informacji.

Jedną z takich konfiguracyjnych funkcji jest @@SERVERNAME zwracająca ciąg znakowy w postaci nazwy serwera, w przypadku lokalnie zainstalowanego serwera jest to naszego nazwa komputera.

SELECT @@SERVERNAME ;

Inną funkcją jest  @@SERVICENAME dostarczająca nazwę SQL Server-a.

SELECT @@SERVICENAME ;

A za pomocą funkcji  @@VERSION możemy uzyskać informacje o wersji serwera. W poniższym przykładzie jest serwer w wersji 2012.

SELECT @@VERSION ;

Funkcje konfiguracyjne pozwalają także pobrać nazwę języka.

SELECT @@LANGUAGE ;

Te same i więcej informacji możemy uzyskać za pomocą funkcji metadanych: SERVERPROPERTY. Pobiera ona jeden argument w postaci łańcucha znakowego stanowiącego nazwę właściwości. I tak właściwość  Edition zwraca nazwę edycji serwera. Proszę zwrócić uwagę, że brak w tym przypadku informacji na temat wersji serwera.

SELECT SERVERPROPERTY ( 'Edition' )

Natomiast właściwość EngineEdition zwraca numer edycji serwera. W tym przypadku jest to nr 3.

SELECT SERVERPROPERTY ( 'EngineEdition' )

Poniżej przedstawiam możliwe wartości zwracane przez funkcję wraz z ich znaczeniem:

1 = Personal or Desktop Engine (Not available in SQL Server 2005 and later versions.)
2 = Standard (This is returned for Standard, Web, and Business Intelligence.)
3 = Enterprise (This is returned for Evaluation, Developer, and both Enterprise editions.)
4 = Express (This is returned for Express, Express with Tools and Express with Advanced Services)
5 = SQL Database
6 - SQL Data Warehouse

Właściwość InstanceName podaje nazwę instancji SQL Server, lecz dla domyślnej instancji zwraca wartość  NULL.

SELECT SERVERPROPERTY ( 'InstanceName' )

MachineName lub ServerName zwracają nazwe komputera lub serwera z zainstalowanym SQL Server. jest to ta sama wartość co w przypadku funkcji konfiguracyjnej @@SERVERNAME.

SELECT SERVERPROPERTY ( 'MachineName' )


Aby pobrać poziom i wersję SQL Server, wystarczy zastosowac właściwości: ProductVersion i ProductLevel.

SELECT SERVERPROPERTY ( 'ProductVersion' )  as ProductVersion,
            SERVERPROPERTY ( 'ProductLevel' )  as ProductLevel ;