Как узнать имя экземпляра Microsoft SQL Server на T-SQL

Всем привет! Сегодня мы с Вами рассмотрим несколько способов определения имени экземпляра Microsoft SQL Server на языке T-SQL, а также с использованием других программных средств.

Как узнать имя экземпляра Microsoft SQL Server на T-SQL

Способы определения имени экземпляра Microsoft SQL Server

Существует несколько способов узнать, какое имя экземпляра у SQL Server. Мы рассмотрим способы, которые подразумевают обращение к определенным системным функциям на языке T-SQL, а также способ, с помощью которого мы можем узнать имена всех экземпляров SQL Server, которые установлены на конкретном сервере.

Заметка! Чем отличаются функции от хранимых процедур в T-SQL.

Кроме этого я покажу способ определения имени экземпляра SQL Server без выполнения SQL инструкций, например, для случаев, когда нет возможности подключиться к SQL Server. Данный способ предполагает выполнение определённой инструкции на языке PowerShell.

Таким образом, для того чтобы определить имя экземпляра Microsoft SQL Server, Вы можете использовать тот способ, который будет удобнее в Вашем конкретном случае.

Способ 1 – функция @@SERVERNAME

Первый способ предполагает использование системной функции @@SERVERNAME, которая возвращает имя локального сервера, на котором работает SQL Server.

Функция @@SERVERNAME возвращает следующие данные:

Исходные данные Данные, которые возвращает функция
Если используется экземпляр по умолчанию «Имя_сервера»
Если используется именованный экземпляр «Имя_сервера\Имя_экземпляра»
Если используется экземпляр по умолчанию отказоустойчивого кластера «Сетевое_имя_экземпляра_отказоустойчивого_ кластера_windows_server»
Если используется именованный экземпляр отказоустойчивого кластера «Сетевое_имя_экземпляра_отказоустойчивого_ кластера_windows_server\имя_экземпляра»

Пример использования функции

   
   SELECT @@SERVERNAME AS SERVERNAME;

Скриншот 1

В моем случае используется именованный экземпляр Microsoft SQL Server, поэтому функция вернула соответствующие данные, где SQLEXPRESS и есть имя экземпляра SQL Server.

Заметка! Установка Microsoft SQL Server в редакции Express.

Способ 2 – функция @@SERVICENAME

Второй способ определения имени экземпляра Microsoft SQL Server предполагает использование функции @@SERVICENAME, которая возвращает имя раздела реестра, согласно которому запущен SQL Server.

Если текущий экземпляр является экземпляром по умолчанию, то данная функция возвращает «MSSQLSERVER», однако если же текущий экземпляр является именованным экземпляром, то эта функция возвращает имя этого экземпляра.

Пример использования функции

   
   SELECT @@SERVICENAME AS SERVICENAME;

Скриншот 2

В данном случае, так как у меня именованный экземпляр, функция @@SERVICENAME вернула имя экземпляра.

Способ 3 – функция SERVERPROPERTY

Следующий способ определения имени экземпляра SQL Server предполагает использование системной функции SERVERPROPERTY, которая возвращает много различных сведений о свойствах экземпляра Microsoft SQL Server.

Данная функция принимает один параметр, и если мы передадим значение «InstanceName», то она нам вернет имя экземпляра.

Однако здесь стоит учитывать, что если используется экземпляр по умолчанию, то функция вернет NULL.

Пример использования функции

   
   SELECT SERVERPROPERTY ('InstanceName') AS SERVERPROPERTY;

Заметка! Как узнать версию Microsoft SQL Server на T-SQL.

Скриншот 3

У меня именованный экземпляр, поэтому функция вернула имя экземпляра.

Способ 4 – процедура xp_regread

Если Вам необходимо узнать имена всех экземпляров SQL Server, которые установлены на конкретном сервере, то для этого Вы можете использовать системную хранимую процедуру xp_regread, которая умеет считывать параметры реестра Windows, в котором как раз и можно найти всю интересующую нас информацию об экземплярах Microsoft SQL Server.

Заметка! Назначение хранимых процедур в языке T-SQL.

Процедура принимает три параметра: в первом мы указываем название раздела реестра, во втором — путь к нужной нам ветке реестра, и третий — параметр, значение которого нам нужно считать.

Пример использования процедуры

   
   DECLARE @SQLServerInstances TABLE(
                                     LineNumber NVARCHAR(100),
                                     InstanceName NVARCHAR(100),
                                     Data NVARCHAR(100) NULL
                                    );
 
   INSERT INTO @SQLServerInstances
     EXECUTE xp_regread @rootkey = 'HKEY_LOCAL_MACHINE',
                        @key = 'SOFTWARE\Microsoft\Microsoft SQL Server',
                        @value_name = 'InstalledInstances';
 
   SELECT LineNumber, InstanceName
   FROM @SQLServerInstances;

Скриншот 4

У меня установлен только один экземпляр, поэтому инструкция вернула одну строку данных.

Как узнать имя экземпляра Microsoft SQL Server на PowerShell

Способ предполагает простое считывание названия службы Microsoft SQL Server, т.е. мы с помощью определенной инструкции на PowerShell ищем название службы по префиксу «MSSQL$» (данный префикс имеет «Имя службы, а не «Отображаемое имя службы»).

Заметка! Справочник командлетов Windows PowerShell.

Пример инструкции на PowerShell

   
   Get-WMIObject Win32_Service -Filter "name like 'MSSQL$%'" | % {$_.name.substring(6)}

Скриншот 5

Кроме этого, узнать имя экземпляра Microsoft SQL Server можно, если зайти в оснастку «Службы» в Windows и посмотреть, какое имя указано в названии службы SQL Server.

Заметка! Всем тем, кто только начинает свое знакомство с языком SQL, рекомендую прочитать книгу «SQL код» – это самоучитель по языку SQL, которую написал я, и в которой я подробно, и в то же время простым языком, рассказываю о языке SQL.

На сегодня это все, надеюсь, материал был Вам полезен, пока!

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку «Отправить комментарий», я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.