Categories: Разное

Шаблоны в SQL Server Management Studio

Встроенные шаблоны

Все встроенные шаблоны сгруппированы по назначению:

Рассмотрим на примере таблицы:

Допустим нам нужно создать таблицу, т.е. обычный Create Table. Мы можем писать весь текст вручную, мы можем скопировать уже готовый скрипт и его адаптировать. Но в этом примере мы всё сделаем с помощью шаблонов.

Короче кликаем по нужному шаблону (в примере “Create Table”, после чего появляется новый запрос и в нём текст запроса. У меня получился следующий:

-- =========================================
-- Create table template
-- =========================================
USE <database, sysname, AdventureWorks>
GO
 
IF OBJECT_ID('<schema_name, sysname, dbo>.<table_name, sysname, sample_table>', 'U') IS NOT NULL
  DROP TABLE <schema_name, sysname, dbo>.<table_name, sysname, sample_table>
GO
 
CREATE TABLE <schema_name, sysname, dbo>.<table_name, sysname, sample_table>
(
    <columns_in_primary_key, , c1> <column1_datatype, , int> <column1_nullability,, NOT NULL>,
    <column2_name, sysname, c2> <column2_datatype, , char(10)> <column2_nullability,, NULL>,
    <column3_name, sysname, c3> <column3_datatype, , datetime> <column3_nullability,, NULL>,
 CONSTRAINT <contraint_name, sysname, PK_sample_table> PRIMARY KEY (<columns_in_primary_key, , c1>)
)
GO

Здесь хочется отметить, что параметр заключается в угловые скобки и состоит из 3-х частей, разделённых запятыми. Например для следующего параметра:

<schema_name, sysname, dbo>

schema_name – имя параметра в шаблоне

sysname – тип параметра (int, char(20) и т.п., а также sysname)

dbo – значение по умолчанию

В выше приведённом шаблоне тип создаваемого столбца также задаётся отдельным параметром, поэтому при объявлении самого столбца тип не задаётся:

<columns_in_primary_key, , c1> <column1_datatype, , int>  ……

Но если бы мы точно знали, что столбец c1 должен быть типа int, то могли бы записать так:

<columns_in_primary_key, int , c1>  ……

Вернёмся к примеру.

Осталось только параметры шаблона задать. Для этого в главном меню -> Query -> Specify Values for Template Parameters…

Ну или как можно заметить можно нажать Ctrl+Shift+M

Появляется окошко, где мы можем настраивать нужные параметры:

Пробежались, задали значения:

Жмём ОК, и наш запрос принимает нормальный вид:

-- =========================================
-- Create table template
-- =========================================
USE BestDatabase
GO
 
IF OBJECT_ID('dbo.ForDelete', 'U') IS NOT NULL
  DROP TABLE dbo.ForDelete
GO
 
CREATE TABLE dbo.ForDelete
(
    id int NOT NULL,
    name char(20) NULL,
    kode char(20) NULL,
 CONSTRAINT PK_ForDelete PRIMARY KEY (id)
)
GO

Вот справочник и готов, а кода мы фактически и не писали! Но ведь я взял обычный шаблон, я бы сказал просто демонстрационный.

Пользовательские шаблоны

А теперь давайте создадим свой шаблон для создания справочника, чтобы в будущем нам нужно было делать минимум операций.

Для этого в нужной папке браузера шаблонов создаём новый.

Примечание: Вероятно есть смысл в создании специальной папки для пользовательских шаблонов, но я в примере новый шаблон добавил в папку Table

Теперь внесём в него необходимый код. Для этого в контекстном меню этого шаблона нужно выбрать Edit. Ведь двойной клик – это уже использование шаблона.

Далее пишем текст запроса, основу я скопирую из предыдущего примера, и внесу некоторые правки:

-- =========================================
-- Создание таблицы справочника
-- =========================================
USE <database, sysname, DataBaseName>
GO
 
IF OBJECT_ID('<schema_name, sysname, dbo>.<table_name, sysname, sample_table>', 'U') IS NOT NULL
  DROP TABLE <schema_name, sysname, dbo>.<table_name, sysname, sample_table>
GO
 
 
CREATE TABLE <schema_name, sysname, dbo>.<table_name, sysname, sample_table>
(
    id int NOT NULL,
    name char(20) NULL,
    code char(20) NULL,
 CONSTRAINT PK_<table_name, sysname, sample_table> PRIMARY KEY (id)
)
GO

Можно сохранять шаблон.

Использование пользовательского шаблона

Как и раньше двойной клик на имени шаблона, открывается новый запрос заполненный текстом шаблона. Заходим в настройку параметров шаблона (Ctrl+Shift+M)

Открывается окошко:

Можно заметить, что указать нужно 3 параметра, но если имя схемы в проекта будет всегда dbo, то можно и его убрать из параметров.

После чего будет сформирован следующий скрипт:

-- =========================================
-- Создание таблицы справочника
-- =========================================
USE TSQL2012
GO
 
IF OBJECT_ID('dbo.NewDictionary', 'U') IS NOT NULL
  DROP TABLE dbo.NewDictionary
GO
 
 
CREATE TABLE dbo.NewDictionary
(
    id int NOT NULL,
    name char(20) NULL,
    code char(20) NULL,
 CONSTRAINT PK_NewDictionary PRIMARY KEY (id)
)
GO

Выполняем его. Таблица успешно создаётся:

Written by Igor Motskin

Также вы можете записаться на наш бесплатный курс по ASP.NET & Sql Server

Периодически мы проводим обучение и даем возможность стажировки на базе нашей платформы с управлением на SQL. Если вам это интересно, то пожалуйста посмотрите информацию об обучении/стажировке по SQL.

Руслан Раянов

Recent Posts

Cтандартизация задач сотрудника через личный кабинет #личныйкабинет

https://falconspace.ru/blog/sozdanie-arm-dlya-sotrudnikov--razrabotka-lichnogo-kabineta-dlya-sotrudnikov - Как сделать АРМ сотрудника. Личный кабинет сотрудника на сайте

24 часа ago

Контроль доступа к ресурсам информационной системы

https://falconspace.ru/blog/sozdanie-arm-dlya-sotrudnikov--razrabotka-lichnogo-kabineta-dlya-sotrudnikov - Как сделать АРМ сотрудника. Личный кабинет сотрудника на сайте

2 дня ago

Что дает личный кабинет для руководства компании?

https://falconspace.ru/blog/sozdanie-arm-dlya-sotrudnikov--razrabotka-lichnogo-kabineta-dlya-sotrudnikov - Как сделать АРМ сотрудника. Личный кабинет сотрудника на сайте

3 дня ago

Почему управление дистанционно вызывает опасение? В сети куча мошенников

https://falconspace.ru/blog/pro-udalennoe-vzaimodeystvie-zakazchika-i-podryadchika - Удаленное взаимодействие между заказчиками и разработчиками

5 дней ago

Удаленное взаимодействие между заказчиками и разработчиками #личныйкабинет

С одной стороны сразу видится кучу выгод от удаленной работы, но как-то страшно и боязно…

6 дней ago

Почему управление дистанционно вызывает опасение? Я могу физически контролировать подрядчика

https://falconspace.ru/blog/pro-udalennoe-vzaimodeystvie-zakazchika-i-podryadchika - Удаленное взаимодействие между заказчиками и разработчиками

1 неделя ago