Типы данных в ms sql. transact-sql

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

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

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

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

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

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

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

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

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

   
   SELECT @@SERVERNAME AS SERVERNAME;

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

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

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

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

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

   
   SELECT @@SERVICENAME AS SERVICENAME;

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

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

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

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

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

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

   
   SELECT SERVERPROPERTY ('InstanceName') AS SERVERPROPERTY;

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

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

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

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

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

   
   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;

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

Средства для начала работы

Основные средства

  • SQL Server Management Studio (SSMS) является основным средством администрирования компонента Компонент Database Engine и написания кода на языке Transact-SQL . Она расположена в оболочке Visual Studio . SSMS предоставляется для бесплатного скачивания из Центра загрузки Майкрософт. Последнюю версию можно использовать с более старыми версиями Компонент Database Engine.

  • SQL Server Диспетчер конфигурации устанавливается с SQL Server и с клиентскими средствами. Он позволяет включать серверные протоколы, настраивать параметры протокола, например порты TCP, настраивать автоматический запуск служб сервера и настраивать соединение клиентских компьютеров. Это средство может настроить дополнительные параметры соединения, но не активирует возможности.

Образец базы данных

Образцы баз данных и примеры с SQL Serverне поставляются. Большинство примеров, описанных в электронной документации по SQL Server , используют образец базы данных AdventureWorks2012 .

Начало работы в среде SQL Server Management Studio
  • В текущих версиях Windows на начальной странице введите «SSMS», а затем выберите Microsoft SQL Server Management Studio.
  • В более старых версиях Windows в меню Пуск наведите указатель на пункт Все программы, затем на пункт Microsoft SQL Serverи выберите пункт SQL Server Management Studio.
Запуск диспетчера конфигурации SQL Server
  • В текущих версиях Windows на Пуск странице введите диспетчер конфигурации и выберите пункт Диспетчер конфигурации SQL Server версия диспетчер конфигурации.
  • В более старых версиях Windows в меню Пуск последовательно наведите указатель на пункты Все программы, Microsoft SQL Server, Средства настройки, а затем выберите пункт Диспетчер конфигурации SQL Server.

Использование реляционных СУБД

Компонент Enterprise Standard Интернет Express с дополнительными службами Express
Пользовательские экземпляры Нет Нет Нет Да Да
LocalDB Нет Нет Нет Да Нет
Выделенное административное соединение Да Да Да Да, с помощью флага трассировки Да, с помощью флага трассировки
Поддержка SysPrep 1 Да Да Да Да Да
Поддержка сценариев PowerShell2 Да Да Да Да Да
Поддержка операций с компонентами приложения уровня данных — извлечение, развертывание, обновление, удаление Да Да Да Да Да
Автоматизация политики (проверка по расписанию и изменение) Да Да Да Нет нет
Сборщик данных производительности Да Да Да Нет Нет
Возможность регистрации в качестве управляемого экземпляра в среде управления несколькими экземплярами Да Да Да Нет нет
Стандартный производительности отчет Да Да Да Нет нет
Структуры планов и закрепление плана для структур планов Да Да Да Нет нет
Прямой запрос индексированных представлений (с использованием указания NOEXPAND) Да Да Да Да Да
Автоматическое сопровождение индексированного представления Да Да Да Нет нет
Распределенные секционированные представления Да Нет Нет Нет нет
Параллельные операции с индексами Да Нет Нет Нет нет
Автоматическое использование индексированного представления оптимизатором запросов Да Нет Нет Нет нет
Проверка согласованности параллелизма Да Нет Нет Нет нет
Точка управления служебной программой SQL Server Да Нет Нет Нет Нет
Расширение буферного пула Да Да Нет Нет Нет

1 Дополнительные сведения см. в разделе Вопросы по установке SQL Server с помощью SysPrep.

2 В Linux сценарии PowerShell поддерживаются с компьютеров Windows, ориентированных на серверы SQL Server на базе Linux.

Системы реляционных баз данных

Компонент Database Engine сервера Microsoft SQL Server является системой реляционных баз данных. Понятие систем реляционных баз данных было впервые введено в 1970 г. Эдгаром Ф. Коддом в статье «A Relational Model of Data for Large Shared Data Banks». В отличие от предшествующих систем баз данных (сетевых и иерархических), реляционные системы баз данных основаны на реляционной модели данных, обладающей мощной математической теорией.

Модель данных — это набор концепций, взаимосвязей между ними и их ограничений, которые используются для представления данных в реальной задаче. Центральным понятием реляционной модели данных является таблица. Поэтому, с точки зрения пользователя, реляционная база данных содержит только таблицы и ничего больше. Таблицы состоят из столбцов (одного или нескольких) и строк (ни одной или нескольких). Каждое пресечение строки и столбца таблицы всегда содержит ровно одно значение данных.

Работа с демонстрационной базой данных в последующих статьях

Используемая в наших статьях база данных SampleDb представляет некую компанию, состоящую из отделов (department) и сотрудников (employee). Каждый сотрудник принадлежит только одному отделу, а отдел может содержать одного или нескольких сотрудников. Сотрудники работают над проектами (project): в любое время каждый сотрудник занят одновременно в одном или нескольких проектах, а над каждым проектом может работать один или несколько сотрудников.

Эта информация представлена в базе данных SampleDb (находится в исходниках) посредством четырех таблиц:

Department

Employee

Project

Works_on

Организация этих таблиц показана на рисунках ниже. Таблица Department представляет все отделы компании. Каждый отдел обладает следующими атрибутами (столбцами):

Department (Number, DepartmentName, Location)

Атрибут Number представляет однозначный номер каждого отдела, атрибут DepartmentName — его название, а атрибут Location — расположение. Таблица Employee представляет всех работающих в компании сотрудников. Каждый сотрудник обладает следующими атрибутами (столбцами):

Employee (Id, FirstName, LastName, DepartmentNumber)

Атрибут Id представляет однозначный табельный номер каждого сотрудника, атрибуты FirstName и LastName — имя и фамилию сотрудника соответственно, а атрибут DepartmentNumber — номер отдела, в котором работает сотрудник.

Все проекты компании представлены в таблице проектов Project, состоящей из следующих столбцов (атрибутов):

Project (ProjectNumber, ProjectName, Budget)

В столбце ProjectNumber указывается однозначный номер проекта, а в столбцах ProjectName и Budget — название и бюджет проекта соответственно.

В таблице Works_on указывается связь между сотрудниками и проектами:

Works_on (EmpId, ProjectNumber, Job, EnterDate)

В столбце EmpId указывается табельный номер сотрудника, а в столбце ProjectNumber — номер проекта, в котором он принимает участие. Комбинация значений этих двух столбцов всегда однозначна. В столбцах Job и EnterDate указывается должность и начало работы сотрудника в данном проекте соответственно.

На примере базы данных SampleDb можно описать некоторые основные свойства реляционных систем баз данных:

  • Строки таблицы не организованы в каком-либо определенном порядке.

  • Также не организованы в каком-либо определенном порядке столбцы таблицы.

  • Каждый столбец таблицы должен иметь однозначное имя в любой данной таблице. Но разные таблицы могут содержать столбцы с одним и тем же именем. Например, таблица Department содержит столбец Number и столбец с таким же именем имеется в таблице Project.

  • Каждый элемент данных таблицы должен содержать одно значение. Это означает, что любая ячейка на пересечении строк и столбцов таблицы никогда не содержит какого-либо набора значений.

  • Каждая таблица содержит, по крайней мере, один столбец, значения которого определяют такое свойство, что никакие две строки не содержат одинаковой комбинации значений для всех столбцов таблицы. В реляционной модели данных такой столбец называться потенциальным ключом (candidate key). Если таблица содержит несколько потенциальных ключей, разработчик указывает один из них, как первичный ключ (primary key) данной таблицы. Например, первичным ключом таблицы Department будет столбец Number, а первичными ключами таблиц Employee будет Id. Наконец, первичным ключом таблицы Works_on будет комбинация столбцов EmpId и ProjectNumber.

  • Таблица никогда не содержит одинаковых строк. Но это свойство существует только в теории, т.к. компонент Database Engine и все другие реляционные системы баз данных допускают существование в таблице одинаковых строк.

Использование SQL Server с клиентскими и серверными приложениями

На компьютер, где работают клиент-серверные приложения, которые подключаются непосредственно к экземпляру SQL Server , можно установить только клиентские компоненты SQL Server. Установка клиентских компонентов будет хорошим выбором также и в том случае, если администрируется экземпляр SQL Server на сервере базы данных или планируется разработка приложений SQL Server .

При выборе установки клиентских средств будут установлены следующие компоненты SQL Server : компоненты обеспечения обратной совместимости, SQL Server Data Tools, компоненты подключения, средства управления, пакет средств разработки программного обеспечения и компоненты электронной документации по SQL Server . Дополнительные сведения см. в разделе Установка SQL Server.

Remarks

ServerName, свойство

Свойство функции и функция @@SERVERNAME возвращают аналогичные сведения. В свойстве задаются имена экземпляра и сервера Windows, которые вместе образуют уникальный экземпляр сервера. @@SERVERNAME возвращает настроенное имя локального сервера.

Свойство и переменная @@SERVERNAME возвращают одинаковые сведения, если установленное по умолчанию имя сервера не было изменено во время установки. Имя локального сервера можно настроить, выполнив следующие команды:

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

Свойство функции возвращает имя сервера Windows при его сохранении. В предыдущих основных версиях он возвращал прописные буквы. Это поведение изменилось обратно на верхний регистр в период с SQL Server 2019 (15.x) CU9 и CU12, но начиная с SQL Server 2019 (15.x) CU13 имя сервера возвращается при сохранении.

Если имя сервера Windows содержит символы нижнего регистра, это изменение поведения может привести к различиям между свойством функции и @@SERVERNAME (верхний и нижний регистры) даже при отсутствии изменений в имени сервера.

Предположим, у вас есть сервер с именем и экземпляр SQL Server с именем . В следующей таблице приведены изменения поведения между различными сборками SQL Server 2019:

выпуск SQL Server 2019 (15.x) SERVERPROPERTY(‘ServerName’) Дополнительные сведения
RTM Возвращает свойство в верхнем регистре
CU1–CU8 Возвращает свойство как есть, без изменения на верхний регистр
CU9–CU12 Возвращает свойство в верхнем регистре
CU 13 и более поздних версий Возвращает свойство как есть, без изменения на верхний регистр

Свойства Version

Функция возвращает отдельные свойства, которые относятся к информации о версии, а функция @@VERSION объединяет все выходные данные в одну строку. Если для конкретного приложения требуются отдельные строки свойств, лучше использовать функцию , которая возвращает эти строки, чем заниматься синтаксическим анализом результатов функции @@VERSION.

Расположение файлов и сопоставление данных реестра

Во время установки SQL Server для каждого компонента сервера создается идентификатор экземпляра. В этой версии SQL Server сервер состоит из компонента Компонент Database Engine, служб Службы Analysis Servicesи Службы Reporting Services.

Идентификатор экземпляра по умолчанию указывается в следующем формате.

  • Для компонента Компонент Database Engine— MSSQL, за которым следуют основной номер версии, символ подчеркивания и дополнительный номер версии (если применимо), затем точка и имя экземпляра.

  • Для служб Службы Analysis Services— MSAS, за которым следуют основной номер версии, символ подчеркивания и дополнительный номер версии (если применимо), затем точка и имя экземпляра.

  • Для служб Службы Reporting Services— MSRS, за которым следуют основной номер версии, символ подчеркивания и дополнительный номер версии (если применимо), затем точка и имя экземпляра.

Ниже приведены примеры идентификаторов экземпляров по умолчанию для данной версии SQL Server .

  • MSSQL{nn}.MSSQLSERVER — экземпляр SQL Server по умолчанию.

  • MSAS{nn}.MSSQLSERVER — экземпляр по умолчанию служб SQL Server Analysis Services.

  • MSSQL{nn}.MyInstance — именованный экземпляр SQL Server с именем «MyInstance».

Именованный экземпляр SQL Server , в состав которого входит компонент Компонент Database Engine и службы Службы Analysis Services, имеет имя «MyInstance» и устанавливается каталоге по умолчанию, имеет следующую структуру каталогов.

  • C:\Program Files\Microsoft SQL Server\MSSQL{nn}.MyInstance\

  • C:\Program Files\Microsoft SQL Server\MSAS{nn}.MyInstance\

В качестве идентификатора экземпляра может быть указано любое значение, следует только избегать применения специальных символов и зарезервированных ключевых слов.

Идентификатор экземпляра, отличный от заданного по умолчанию, можно указать во время установки SQL Server . Если пользователь изменяет каталог установки по умолчанию, вместо \{Program Files}\MicrosoftSQL Server используется <custom path>\MicrosoftSQL Server. Следует заметить, что идентификаторы экземпляров, начинающиеся с символа подчеркивания (_) или содержащие символ решетки (#) или знак доллара ($), не поддерживаются.

Примечание

Службы Integration Services и клиентские компоненты не привязаны к экземпляру, поэтому им не присваивается идентификатор экземпляра. По умолчанию компоненты, не привязанные к экземпляру, устанавливаются в один каталог: <drive>:\Program Files\Microsoft SQL Server\nnn\. Изменение пути установки для одного компонента приводит к его изменению и для всех остальных компонентов. При последующих установках компоненты, не зависящие от экземпляра, устанавливаются в каталог исходной установки.

SQL Server Службы Analysis Services — это единственный компонент SQL Server, который поддерживает переименование экземпляра после установки. При переименовании экземпляра служб Службы Analysis Services его идентификатор экземпляра не изменится. После переименования экземпляра в каталогах и разделах реестра по-прежнему используется идентификатор экземпляра, созданный во время установки.

В разделе реестра HKLM\Software\Microsoft\MicrosoftSQL Server\<идентификатор_экземпляра> создается куст для компонентов, привязанных к экземпляру. Например,

  • HKLM\Software\Microsoft\MicrosoftSQL Server\MSSQL{nn}.MyInstance

  • HKLM\Software\Microsoft\MicrosoftSQL Server\MSAS{nn}.MyInstance

  • HKLM\Software\Microsoft\MicrosoftSQL Server\MSRS{nn}.MyInstance

В реестре также хранится сопоставление идентификаторов экземпляров с именами экземпляров. Сопоставление идентификатора экземпляра с именем экземпляра осуществляется следующим образом:

  • «<InstanceName>»=»MSSQL{nn}»

  • «<InstanceName>»=»MSAS{nn}»

  • «<InstanceName>»=»MSRS{nn}»

Как найти имя сервера SQL Server Management Studio

Когда я запускаю SQL Server Management Studio (SSMS), я получаю Connect to Server окно входа в систему с пустым текстовым полем для Server name . Я перепробовал много имен, но не смог решить.

Как я могу найти / получить имя сервера?

Откройте SQL Server Configuration Manager (найдите его в меню «Пуск»). Нажмите на SQL Server Services . Имя экземпляра SQL Server в скобках указано в строке со SQL Server службой. Если он говорит MSSQLSERVER , то это экземпляр по умолчанию. Чтобы подключиться к нему в Management Studio, просто введите . (точка) ИЛИ (local) и нажмите Подключиться. Если имя экземпляра отличается, используйте его .\ для подключения (например, если имя экземпляра SQL2008 , подключитесь к нему .\SQL2008 ).

Также убедитесь , что SQL Server и SQL Server Browser службы работают, иначе вы не сможете подключиться.

Редактировать:

Вот скриншот того, как это выглядит на моей машине. В этом случае у меня установлено два экземпляра: SQLExpress и SQL2008 .

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

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

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: