Создание скриптов для объектов в среде SQL Server Management Studio
В этом учебнике вы научитесь создавать скрипты Transact-SQL (T-SQL) для различных объектов, доступных в SQL Server Management Studio (SSMS). В нем приводятся примеры создания скриптов для следующих объектов:
- запросов при выполнении действий в графическом пользовательском интерфейсе;
- баз данных двумя разными способами («Сформировать скрипт как» и «Создать скрипт»);
- Таблицы
- Хранимые процедуры
- Расширенные события
Чтобы создать скрипт любого объекта в обозревателе объектов, щелкните его правой кнопкой мыши и выберите команду Создать скрипт объекта как. В этом учебнике будет показан процесс.
Предварительные условия
Для работы с этим учебником требуется среда SQL Server Management Studio, доступ к серверу SQL Server и база данных AdventureWorks.
- Установите SQL Server Management Studio.
- Установите выпуск SQL Server 2017 Developer Edition.
- Скачайте примеры баз данных AdventureWorks.
Создание скриптов для запросов в графическом пользовательском интерфейсе
Вы можете создать связанный код T-SQL для задачи в графическом пользовательском интерфейсе SSMS, чтобы выполнить его. Ниже приведены примеры выполнения этого действия при резервном копировании базы данных и сжатии журнала транзакций. Аналогичные инструкции применимы к любому действию, выполняемому в графическом пользовательском интерфейсе.
Создание скрипта T-SQL при резервном копировании базы данных
- Подключитесь к серверу SQL Server.
- Разверните узел Базы данных .
- Щелкните правой кнопкой мыши резервную копию задач AdventureWorks2022:> >
- Настройте резервное копирование требуемым образом. В этом учебнике оставлены все параметры по умолчанию. Все изменения, внесенные в этом окне, также отражаются в скрипте.
- Выберите пункты Создать скрипт>Добавить скрипт в новое окно запроса:

- Просмотрите код T-SQL в окне запроса.

- Выберите команду Выполнить, чтобы выполнить запрос на резервное копирование базы данных с помощью T-SQL.
Создание скрипта T-SQL при сжатии журнала транзакций
- Щелкните правой кнопкой мыши базу данных AdventureWorks2022>Tasks >Shrink>Files:

- Выберите Журнал в раскрывающемся списке Тип файла:

- Выберите пункты Скрипт и Добавить скрипт в буфер обмена:

- Откройте окно Новый запрос и вставьте скрипт. (Щелкните правой кнопкой мыши в окне. Затем нажмите кнопку «Вставить».)

- Выберите команду Выполнить, чтобы выполнить запрос и сжать журнал транзакций.
Создание скриптов для баз данных
В следующем разделе показано, как создать скрипт для базы данных с помощью команды Создать скрипт как или Создать скрипты. Команда Создать скрипт как повторно создает базу данных и ее параметры конфигурации. Команда Создать скрипты позволит создать скрипт для схемы и данных. В этом разделе вы сможете создать две новых базы данных. Для создания AdventureWorks2022a используется параметр Script As. Для создания AdventureWorks2022b используется параметр «Создать скрипты«.
Создание скрипта базы данных с помощью команды «Создать скрипт»
- Подключитесь к серверу SQL Server.
- Разверните узел Базы данных .
- Щелкните правой кнопкой мыши базу данных AdventureWorks2022> Script Database as>Create To>New Query Editor Window:

- Просмотрите запрос на создание базы данных в окне:
Этот параметр использует только параметры конфигурации базы данных. - Нажмите клавиши CTRL+F, чтобы открыть диалоговое окно Найти. Щелкните стрелку вниз, чтобы открыть пункт Заменить. В верхней строке «Найти » введите AdventureWorks2022 и в нижней строке «Заменить » введите AdventureWorks2022a.
- Выберите «Заменить все «, чтобы заменить все экземпляры AdventureWorks2022 на AdventureWorks202a.

- Выберите «Выполнить» , чтобы выполнить запрос и создать новую базу данных AdventureWorks2022a.
Создание скрипта базы данных с помощью команды «Создать скрипты»
- Подключитесь к серверу SQL Server.
- Разверните узел Базы данных .
- Щелкните правой кнопкой мыши задачи AdventureWorks2022>Tasks>Generate Scripts:

- Откроется страница Введение. Нажмите кнопку Далее, чтобы открыть страницу Выбор объектов. Вы можете выбрать всю базу данных или отдельные объекты в базе данных. Выберите Внести в скрипт всю базу данных целиком вместе со всеми объектами.

- Нажмите кнопку Далее, чтобы открыть страницу Задание параметров скриптов. Здесь вы можете настроить расположение для сохранения скрипта и другие дополнительные параметры. А. Выберите команду Сохранить в новом окне запроса. b. Выберите пункт Дополнительно и убедитесь, что заданы следующие значения параметров:
- параметр Статистика скриптов имеет значение Статистика скриптов;
- параметр Типы данных для создания скриптов имеет значение Только схема;
- параметр Индексы скриптов имеет значение True.

Вы можете создать скрипт данных для базы данных при выборе варианта Схема и данные для параметра Типы данных для создания скриптов. Однако это не подходит для крупных баз данных. Может потребоваться больше памяти, чем SSMS может выделить. Это ограничение не влияет на небольшие базы данных. Если вы хотите переместить данные в более крупную базу данных, используйте мастер импорта и экспорта.

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

- Подключитесь к серверу SQL Server.
- Разверните узел Базы данных.
- Разверните узел базы данных AdventureWorks2022.
- Разверните узел Таблицы.
- Щелкните правой кнопкой мыши dbo.ErrorLog и последовательно выберите пункты >Создать скрипт таблицы как>Удалить и создать в>Новое окно редактора запросов:
- Выберите команду Выполнить, чтобы выполнить запрос. Это действие удаляет таблицу Errorlog и повторно создает ее.
Заметка Таблица журнала ошибок пуста по умолчанию в AdventureWorks2022 базе данных. Вы не потеряете данные, если удалите ее. Однако если в таблице есть данные, при выполнении этих действий они будут потеряны.
Создание скриптов для хранимых процедур
В этом разделе вы узнаете, как удалить и создать хранимую процедуру.

- Подключитесь к серверу SQL Server.
- Разверните узел Базы данных.
- Разверните узел Программируемость.
- Разверните узел Хранимые процедуры.
- Щелкните правой кнопкой мыши хранимую процедуру dbo.uspGetBillOfMaterials и последовательно выберите пункты >Создать скрипт хранимой процедуры как>Удалить и создать в>Новое окно редактора запросов:
Создание скриптов для расширенных событий
В этом разделе описывается, как создать скрипты для расширенных событий.
- Подключитесь к серверу SQL Server.
- Разверните узел Управление.
- Разверните узел Расширенные события.
- Разверните узел Сеансы.
- Щелкните правой кнопкой мыши нужный расширенный сеанс и выберите пункты >Создать скрипт для сеанса>СОЗДАТЬ в>Новое окно редактора запросов:

- В новом окне редактора запросов измените имя сеанса с system_health на system_health2. Выберите команду Выполнить, чтобы выполнить запрос.
- Щелкните правой кнопкой мыши Сеансы в обозревателе объектов. Выберите команду Обновить, чтобы увидеть новый сеанс расширенного события. Зеленый значок рядом с сеансом означает, что сеанс выполняется. Красный значок указывает, что сеанс остановлен.
Заметка Вы можете запустить сеанс, щелкнув его правой кнопкой мыши и выбрав команду Запустить. Так как это копия уже запущенного сеанса system_health, этот шаг можно пропустить. Вы можете удалить копию расширенного сеанса события, щелкнув его правой кнопкой мыши и выбрав команду Удалить.
Далее
Лучший способ познакомиться с SSMS — это поработать в среде самостоятельно. Эти руководства и статьи помогут вам ознакомиться с различными функциями SSMS. С их помощью вы научитесь работать с компонентами SSMS и легко находить регулярно используемые функции.
- Подключение к экземпляру и отправка запросов к нему
- Использование шаблонов в SSMS
- Конфигурация SSMS
- Дополнительные советы и рекомендации по использованию SSMS
Программная генерация скриптов для MSSQL
В силу частых и неупорядоченных изменений базы данных, большим числом пользователей, часто возникает вопросы о истории изменений. Речь не идет о тотально логирование всех изменений, которые происходят с базой в течение дня. Интерес представляют собой снимки структуры БД каждый день после окончания рабочего дня. С помощью SQL Server Management Studio можно сгенерировать скрипты, но поштучно или все сразу. Полную свободу действий можно получить использовав набор библиотек от SQL Server Management Studio в вашем .NET приложение. Описание программы генерации скриптов: таблиц, представлений, процедур далее.
Присоединение библиотек
Потребуются классы из пространств имен:
using Microsoft.SqlServer.Management.Smo; using Microsoft.SqlServer.Management.Common; using Microsoft.SqlServer.Management.Sdk.Sfc;
Библиотеки, которые их содержат имеют такие же названия и находятся в папке:
C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies
или
C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies
в зависимости от версии SQL Server.
Выполняемый сценарий
Генератор скриптов создает отдельные папки Tables, Views, Procedures в указанной директории. Создает скрипты создания объектов и сохраняет в отдельных файлах в соответствующих папках. Для таблиц генерация производиться с учетом зависимостей(ключи, индексы и т.д.) и без. Создает общий файл однотипных скриптов в указанной директории.
//Создается экземпляр сервера Server myServer = new Server(@"myServ"); //Аутентификация Windows myServer.ConnectionContext.LoginSecure = true; //Открыть соединение myServer.ConnectionContext.Connect(); //Директория создается автоматически, с новой папкой на каждый день string dir = Application.StartupPath +@"\"+ DateTime.Now.Day.ToString() + "_" + DateTime.Now.Month.ToString() + "_" + DateTime.Now.Year.ToString(); Directory.CreateDirectory(dir); //Генерация таблиц, описание ниже GenerateTableScript(myServer,dir); //Генерация процедур, описание ниже GenerateProceduresScript(myServer, dir); //Генерация представлений, описание ниже GenerateViewScript(myServer, dir); //Закрыть соединение myServer.ConnectionContext.Disconnect();
Генерация скриптов для таблиц
private static void GenerateTableScript(Server myServer, string path) < Directory.CreateDirectory(path + @"\Tables\"); string text = ""; string textWithDependencies = ""; //Создаем экземпляр класса, который будет генерировать скрипты Scripter scripter = new Scripter(myServer); //Создаем экземпляр класса базы данных, "ZZZ" - название базы данных Database myAdventureWorks = myServer.Databases["ZZZ"]; //Создаем экземпляр класса настроек генерации скриптов ScriptingOptions scriptOptions = new ScriptingOptions(); //Функциональность свойств у класса настроек генерации легко определяема //Не создавать скрипт с Drop scriptOptions.ScriptDrops = false; //Не включать скрипт с If Not Exists scriptOptions.IncludeIfNotExists = false; //Перебираем все таблицы foreach (Table myTable in myAdventureWorks.Tables) < //Получаем sql запрос на основание выбранных параметров StringCollection tableScripts = myTable.Script(scriptOptions); //Переменная для объединения строк string newSql = ""; //Объединяем строки foreach (string script in tableScripts) < newSql = newSql + script; text = text + script; >//Записываем в файл скрипт создания таблицы без зависимостей File.WriteAllText(path + @"\Tables\" + myTable.Name + ".sql", newSql); //Определяем новые параметры генерации scriptOptions.DriAllConstraints = true; scriptOptions.DriAllKeys = true; scriptOptions.DriDefaults = true; scriptOptions.DriForeignKeys = true; scriptOptions.DriIndexes = true; scriptOptions.DriNonClustered = true; scriptOptions.DriPrimaryKey = true; scriptOptions.DriUniqueKeys = true; tableScripts = myTable.Script(scriptOptions); newSql = ""; foreach (string script in tableScripts) < newSql = newSql + script; textWithDependencies = text + script; >//Записываем в файл скрипт создания таблицы с зависимостями File.WriteAllText(path + @"\Tables\" + myTable.Name + "_WithDependencies.sql", newSql); > //Записываем общие объединяющие файлы File.WriteAllText(path + @"\" + "AllTable_WithDependencies.sql", text); File.WriteAllText(path + @"\" + "AllTable.sql", text); >
Генерация скриптов для представлений
private static void GenerateViewScript(Server myServer, string path) < Directory.CreateDirectory(path + @"\View\"); string text = ""; Scripter scripter = new Scripter(myServer); Database myAdventureWorks = myServer.Databases["ZZZ"]; ScriptingOptions scriptOptions = new ScriptingOptions(); scriptOptions.ScriptDrops = false; scriptOptions.IncludeIfNotExists = false; foreach (Microsoft.SqlServer.Management.Smo.View myView in myAdventureWorks.Views) < StringCollection ProcedureScripts = myView.Script(scriptOptions); ProcedureScripts = myView.Script(); string newSql = ""; foreach (string script in ProcedureScripts) < newSql = newSql + script; text = text + script; >File.WriteAllText(path + @"\Views\" + myView.Name + ".sql", newSql); > File.WriteAllText(path + @"\" + "AllView.sql", text); >
Генерация скриптов для процедур
private static void GenerateProceduresScript(Server myServer, string path) < Directory.CreateDirectory(path + @"\Procedures\"); string text = ""; Scripter scripter = new Scripter(myServer); Database myAdventureWorks = myServer.Databases["ZZZ"]; ScriptingOptions scriptOptions = new ScriptingOptions(); scriptOptions.ScriptDrops = false; scriptOptions.IncludeIfNotExists = false; foreach (StoredProcedure myProcedure in myAdventureWorks.StoredProcedures) < StringCollection ProcedureScripts = myProcedure.Script(scriptOptions); ProcedureScripts = myProcedure.Script(); string newSql = ""; foreach (string script in ProcedureScripts) < newSql = newSql + script; text = text + script; >File.WriteAllText(path + @"\Procedures\" + myProcedure.Name + ".sql", newSql); > File.WriteAllText(path + @"\" + "AllProcedure.sql", text); >
Заключение
Описанная функциональность может быть полезна для логирования изменений в структуре баз данных, автоматической фильтрации выгружаемых объектов по названию. Например, префикс в названиях может указывать на отдельное направление в проекте. Общие и отдельные скрипты можно складывать в SVN. Можно писать автоматическое сравнение объектов базы и отсылку сообщений ответственному лицу по факту произошедших изменений.
Код можно посмотреть здесь.
Основой материала послужила статья: Generate Scripts for database objects with SMO for SQL Server
- Management.Smo
- генерация скриптов SQL
- MSSQL
О разработке ПО и эффективности
Методы и инструменты эффективной разработки приложений.
суббота, 16 ноября 2013 г.
SQL-скрипты для поиска данных
Иногда мы точно знаем что и где искать, иногда только приблизительно знаем что и лишь догадываемся где. Хочу поделиться несколькими скриптами под MS SQL Server для последнего случая.
Поиск объектов во всех базах данных сервера
У вас бывало, что нужно найти таблицу чтобы посмотреть данные или структуру, а вы не помните точно в какой БД она находится? У меня, периодически, такое случается. Пример — найти таблицы из проекта пятилетней давности, чтобы посмотреть как тогда решал текущую задачу.
К счастью, есть процедура sp_MSforeachdb, которая позволяет написать такой скрипт довольно компактно:
DECLARE @name AS SYSNAME,
@strSQL AS VARCHAR(MAX)
SET @name = 'Hierarchy'
SET @strSQL = '
IF EXISTS(SELECT * FROM . sysobjects WHERE name LIKE ''%'+@name+'%'')
BEGIN
SELECT ''?'' db, name FROM . sysobjects WHERE name LIKE ''%'+@name+'%''
END
'
CREATE TABLE #result(
db SYSNAME,
name SYSNAME,
PRIMARY KEY(db,name))
INSERT #result EXEC sp_MSforeachdb @strSQL
SELECT * FROM #result
DROP TABLE #result
Здесь всё достаточно просто:
- Задаём часть названия, по которому будем искать (в данном случае — Hierarchy).
- Собираем динамический SQL, который ищет по sysobjects (для некоторых старых версий MS SQL можно вместо VARCHAR(MAX) использовать VARCHAR(2000), например).
При этом символ «?» заменится на название БД. - С помощью конструкции INSERT . EXEC сохраняем все результаты во временную таблицу, чтобы отобразить, в итоге, единый результат.
Поиск подстроки в текстах хранимых процедур
Как вы знаете, тексты хранимых процедур, триггеров и представлений можно найти в таблице syscomments.
Чтобы наш предыдущий запрос позволил нам найти упоминание в syscomments некоторой подстроки, его можно переписать следующим образом:
SET @strSQL = '
SELECT DISTINCT ''?'' as db, o.name FROM [?].dbo.syscomments s
JOIN [?].dbo.sysobjects o ON o.id = s.id WHERE s.[text] LIKE ''%'+@name+'%'''
Обратите внимание на DISTINCT — может пригодиться, потому что иногда для одного объекта бывает несколько записей в syscomments.
Поиск подстроки во всех строковых полях всех таблиц
Такой скрипт здорово помогает спать спокойно после «чистки» базы перед отправкой клиенту. Естественно, этой областью его применение не ограничивается.
Для этого случая помощник в виде процедуры от MS не нашёлся, поэтому пришлось использовать курсоры:
declare @pattern as nvarchar(MAX)
set @pattern = N'%Test%'
set nocount on
declare @sql as nvarchar(MAX)
declare @table as sysname
declare tables cursor local static read_only for select name from sys.tables t where t.is_ms_shipped = 0
open tables
fetch next from tables into @table
create table #results(name sysname not null, value nvarchar(MAX) not null)
while @@FETCH_STATUS = 0
begin
set @sql = ''
select @sql = @sql + '
insert into #results select ''' + @table + '.' + name + ''' as name, [' + name + '] from [' + @table + '] where [' + name + '] like ''' + @pattern + ''''
from sys.columns c where c.object_id = OBJECT_ID(@table) and c.system_type_id in
(select system_type_id from sys.types where collation_name is not null)
exec(@sql)
fetch next from tables into @table
end
select * from #results
close tables
drop table #results
Помимо курсоров принципы те же. Есть пара нюансов:
- Ищем таблицы без флага is_ms_shipped, чтобы просматривать только таблицы, созданные на этапе разработки.
- Для отбора строковых столбцов вместо списка типов (который поддерживать утомительно) используется фильтр «collation_name is not null».
Резюме
Внимательный читатель наверняка догадался по оформлению, что последний пример написан не в то же время что и два первых. Если быть точнее, последний запрос я написал месяц назад. Это я к тому, что на основе подобного подхода вы можете сами писать полезные скрипты, решающие ваши специфические задачи.
Если такой формат понравится читателям, буду иногда выкладывать полезные скрипты из личной коллекции.
Если у вас есть замечания, пожелания или новые темы – пишите в комментариях, твиттер или на olegaxenow.reformal.ru. Постараюсь учесть.
Мастер формирования и публикации скриптов
С помощью мастера формирования и публикации скриптов можно создавать скрипты для переноса баз данных между экземплярами Компонент SQL Server Database Engine или База данных SQL Azure. Скрипты для базы данных вы можете создавать на экземпляре компонента ядра СУБД в локальной сети или из База данных SQL. Сформированные скрипты могут выполняться на другом экземпляре компонента ядра СУБД или База данных SQL. С помощью мастера также можно публиковать содержимое базы данных непосредственно в веб-службе, созданной с помощью проекта служб Database Publishing Services. Создать скрипты можно как для всей базы данных, так и ограничить их определенными данными или объектами.
Более подробный учебник по использованию мастера формирования и публикации скриптов см. на странице Учебник по использованию мастера создания скриптов.
Перед началом
Исходная и целевая базы данных могут располагаться на сервере служб База данных SQLили на экземпляре компонента Компонент Database Engine , на котором запущен SQL Server 2005 (9.x) или более поздняя версия.
Публикация в размещенной службе
Помимо создания скриптов, с помощью мастера формирования и публикации скриптов также можно публиковать базу данных в веб-службе размещения SQL Server определенного типа. Пакет SQL Server Hosting Toolkit предоставляет службы Database Publishing Services в виде проекта с общим источником на CodePlex. С помощью проекта служб Database Publishing Services поставщики услуг размещения могут создать набор веб-служб, упрощающий их клиентам развертывание баз данных в веб-службе. Дополнительные сведения о загрузке пакета SQL Server Hosting Toolkit см. на странице SQL Server Database Publishing Services.
Чтобы опубликовать базу данных в веб-службе размещения, выберите параметр Опубликовать на веб-службе на странице Задание параметров скрипта мастера.
Разрешения
Минимально необходимым разрешением для публикации базы данных является членство в предопределенной роли базы данных db_ddladmin в исходной базе данных. Минимально необходимым разрешением для публикации скриптов базы данных на экземпляре SQL Server у поставщика услуг размещения является членство в предопределенной роли базы данных db_ddladmin в базе данных-получателе.
Чтобы получить доступ к своим учетным записям на стороне поставщика услуг размещения для публикации с помощью мастера, пользователи также должны указать имя пользователя и пароль. Целевая база данных на стороне поставщика услуг размещения должна быть создана перед публикацией базы данных-источника. При публикации происходит перезапись объектов данной существующей базы данных.
Использование мастера формирования и публикации скриптов
Создание и публикация скрипта

- В обозревателе объектовразверните узел экземпляра, содержащего базу данных, для которой следует создать скрипт.
- Выберите пункт Задачи и щелкните Создать скрипты.
- Выполните шаги в диалоговых окнах мастера.
- Вводная страница
- Страница «Выбор объектов»
- Страница «Задание параметров скрипта»
- Страница «Дополнительные параметры скриптов»
- Страница «Сводка»
- Страница «Сохранение или публикация скриптов»
Вводная страница
Эта страница описывает шаги по созданию и публикации скрипта.
Больше не показывать эту страницу — пропустить эту страницу при следующем запуске мастера формирования и публикации скриптов.

Страница «Выбор объектов»
На этой странице можно выбрать объекты для включения в скрипт, формируемый данным мастером. На следующей странице мастера можно найти параметр, позволяющий сохранять данные скрипты в выбранном месте или использовать их для публикации объектов базы данных у поставщика услуг размещения. Для этого у поставщика должна быть установлена служба SQL Server Database Publishing Services.
Внести в скрипт всю базу данных и все объекты базы данных — установите параметр, чтобы создать скрипт для всех объектов базы данных и самой базы данных.

Выбрать отдельные объекты базы данных — установите параметр, чтобы ограничить создание скрипта лишь определенными объектами в выбранной базе данных.

- Объекты базы данных — выберите хотя бы один включаемый в скрипт объект.
- Выбрать все — устанавливает все доступные флажки.
- Отменить все — снимает все доступные флажки. Чтобы продолжить работу, должен быть выбран хотя бы один объект базы данных.
Страница «Задание параметров скрипта»
Эта страница позволит определить, должен мастер сохранять скрипты в выбранном месте или использовать их для публикации объектов базы данных для удаленного поставщика услуг размещения. Чтобы использовать функции публикации, необходимо иметь доступ к веб-службе, установленной с помощью веб-службы Database Publishing Services.
Параметры — если мастер должен сохранить скрипты в указанном расположении, выберите пункт Сохранить скрипты в заданном месте. Позднее вы можете выполнить скрипты для экземпляра компонента ядра СУБД или База данных SQL. Если мастер должен опубликовать объекты базы данных удаленно у поставщика услуг размещения, выберите пункт Опубликовать на веб-службе.
Сохранить скрипты в заданном месте — сохранение одного или нескольких файлов скриптов Transact-SQL в указанном местоположении.

- Save as notebook (Сохранить как записную книжку) — сохранение скрипта в одном или нескольких SQL-файлах. Нажмите кнопку обзора ( . ), чтобы задать имя и выбрать местоположение файла.
- Save as script file (Сохранить как файл скрипта) — сохранение скрипта в одном или нескольких SQL-файлах. Нажмите кнопку обзора ( . ), чтобы задать имя и выбрать местоположение файла. Установите флажок Перезаписать существующий файл , чтобы заменить существующий файл с тем же именем. Нажмите кнопку Single script file (Один файл скрипта) или One script file per object (Один файл скрипта на объект), чтобы определить, каким образом должны формироваться скрипты. Щелкните Текст в Юникоде или Текст ANSI, чтобы указать тип текста, который должен использоваться в скрипте.
- Сохранить в буфер обмена — сохранение скрипта Transact-SQL в буфере обмена.
- Открыть в новом окне запроса — сформировать скрипт в окне редактора запросов компонента Database Engine. Если не открыто ни одного окна редактора, в качестве назначения для скрипта открывается новое окно редактора.
- Дополнительно — показывает диалоговое окно Дополнительные параметры публикации , в котором можно выбрать дополнительные параметры публикации скриптов.
- Поставщик — выберите поставщика, указывающего сведения о соединении для веб-службы размещения, содержащей базу данных, в которой необходимо опубликовать выбранные объекты. Чтобы выбрать поставщика в диалоговом окне Управление поставщиками , должен присутствовать хотя бы один поставщик.
- Целевая база данных — выберите целевую базу данных, в которой необходимо опубликовать выбранные объекты. Сначала выберите поставщика, а потом целевую базу данных.
Страница «Дополнительные параметры скриптов»
На этой странице можно указать, каким образом мастер будет создавать скрипты. Доступны следующие параметры. Параметры выделены серым цветом, если они не поддерживаются версией SQL Server или База данных SQL , указанной параметром Тип компонента ядра СУБД.

Параметры — укажите дополнительные параметры, выбрав значение из списка, который находится справа от каждого из параметров.
Общие — следующие параметры применяются ко всему скрипту.
- Заполнение ANSI — включает в скрипт параметр ANSI PADDING ON . Значение по умолчанию равно True.
- Добавить к файлу — если выбрано значение True, то этот скрипт добавляется в конец существующего скрипта, выбранного на странице Задание параметров скрипта . Если значение равно False, то новый скрипт перезапишет предыдущий. По умолчанию False.
- Проверка существования объекта — если установлено значение true, добавляет проверку существования перед созданием инструкции CREATE для объектов SQL. Пример: таблицы, представления, функции или хранимые процедуры. Инструкция CREATE упаковывается в оператор IF. Если вы знаете, что целевой объект является чистым, то скрипт намного чище. Если вы НЕ предполагаете, что в целевом объекте существуют другие объекты, появится сообщение об ошибке. По умолчанию False.
- Продолжить выполнение скрипта при ошибке — значение Falseуказывает, что выполнение скрипта останавливается при возникновении ошибки. Если значение равно True, то выполнение скрипта продолжается. По умолчанию False.
- Преобразовать определяемые пользователем типы данных в базовые типы данных — если значение равно True, то определяемые пользователем типы данных (UDDT) преобразуются в базовые типы данных, которые использовались для их создания. Указывайте значение True в том случае, если в базе данных, в которой будет выполняться скрипт, отсутствуют определяемые пользователем типы данных. Если значение равно False, то используются определяемые пользователем типы данных. По умолчанию False.
- Сформировать скрипт для зависимых объектов — формируется скрипт для всех объектов, необходимых для выполнения скрипта для выбранного объекта. Значение по умолчанию равно True.
- Включить описательные заголовки — если значение равно True, то к скрипту добавляются описательные комментарии, разделяющие его на разделы для каждого объекта. По умолчанию False.
- Включить предложение IF NOT EXISTS — если значение равно True, то в скрипт включается инструкция проверки существования объекта в базе данных. Если объект существует, то попытка его создания не выполняется. По умолчанию False.
- Включить имена системных ограничений — если значение равно False, то значения по умолчанию для ограничений, которые были автоматически названы по имени исходной базы данных, автоматически переименовываются в соответствии с названием целевой. Если значение равно True, то ограничения имеют одно и то же имя в исходной и в целевой базах данных.
- Включить неподдерживаемые инструкции — если значение равно False, то скрипт не содержит инструкций для объектов, не поддерживаемых выбранной версией сервера или типом компонента Database Engine. Если значение равно True, то в скрипте содержатся неподдерживаемые объекты. В каждой инструкции для неподдерживаемого объекта присутствует комментарий о том, что инструкция должна быть изменена перед выполнением скрипта на указанной версии SQL Server или типе компонента Database Engine. По умолчанию False.
- Указывать схему в именах объектов — включает имя схемы в имя создаваемого объекта. Значение по умолчанию равно True.
- Привязка скрипта — создает скрипт для связывания объектов по умолчанию и объектов правил. По умолчанию False. Дополнительные сведения см. в статьях CREATE DEFAULT (Transact-SQL) и CREATE RULE (Transact-SQL).
- Внести в скрипт параметры сортировки — включает в скрипт сведения о параметрах сортировки. По умолчанию False. Дополнительные сведения см. в статье Collation and Unicode Support.
- Внести в скрипт значения по умолчанию — включает объекты «значения по умолчанию», определяющие значения по умолчанию для столбцов таблиц. Значение по умолчанию равно True. Дополнительные сведения см. в статье CREATE DEFAULT (Transact-SQL).
- Внести в скрипт удаление и создание — если выбран вариант Script CREATE, в скрипт включаются инструкции Transact-SQL создания объектов. Если выбрано Script DROP, то в скрипте Transact-SQL включаются инструкции по удалению объектов. Если выбран вариант Script DROP and CREATE, то для каждого объекта в скрипт включаются инструкции удаления объекта Transact-SQL, за которыми следуют инструкции создания объекта. Значение по умолчанию — Script CREATE.
- Внести в скрипт расширенные свойства — включает в скрипт расширенные свойства, если они имеются у объекта. Значение по умолчанию равно True.
- Тип скрипта компонента ядра СУБД — создает скрипт, который можно выполнить в выбранном типе База данных SQL или экземпляра компонента ядра СУБД SQL Server. Объекты, не поддерживаемые указанным типом, не включаются в скрипт. По умолчанию выбран тип исходного сервера.
- Скрипт для версии сервера — создает скрипт, который можно выполнить в выбранной версии SQL Server. В скриптах для более ранних версий нельзя использовать новые возможности текущей версии. По умолчанию выбрана версия исходного сервера.
- Внести в скрипт имена входа — если объект, включаемый в скрипт, является пользователем базы данных, этот параметр создает имена входа, от которых зависит пользователь. По умолчанию False.
- Внести в скрипт разрешения уровня объектов — включает скрипты, задающие разрешения для объектов в базе данных. По умолчанию False.
- Внести в скрипт статистику — если выбрано значение Внести в скрипт статистику, то в скрипт включается инструкция CREATE STATISTICS для повторного создания статистики по объекту. Если выбрано значение Статистика и гистограммы скрипта , то также будут созданы сведения о гистограмме. Значение по умолчанию Не вносить в скрипт статистику. Дополнительные сведения см. в разделе CREATE STATISTICS (Transact-SQL).
- Внести в скрипт USE DATABASE — добавляет к скрипту инструкцию USE DATABASE. В сценарий будет включена инструкция USE DATABASE , чтобы гарантировать создание объектов в нужной базе данных. Если скрипт будет выполняться в другой базе данных, выберите значение False , чтобы не включать инструкцию USE DATABASE в сскрипт. Значение по умолчанию равно True. Дополнительные сведения см. в разделе USE (Transact-SQL).
- Типы данных для внесения в скрипт — выбирает включаемое в скрипт содержимое: Только данные, Только схема или то и другое. Значение по умолчанию равно Только схема.
Параметры таблицы или представления — следующие параметры применяются только к скриптам для таблиц и представлений.
- Создать скрипт для отслеживания изменений — вносит в скрипт отслеживание изменений, если данная функция включена в исходной базе данных или в таблицах исходной базы данных. По умолчанию False. Дополнительные сведения см. в статье Об отслеживании изменений (SQL Server).
- Внести в скрипт проверочные ограничения — добавляет ограничения CHECK в скрипт. Значение по умолчанию равно True. ОграниченияCHECK требуют, чтобы данные, вводимые в таблицу, соответствовали некоторым указанным условиям. Дополнительные сведения см. в статье Ограничения уникальности и проверочные ограничения.
- Внести в скрипт параметры сжатия данных — включает параметры сжатия данных в скрипт, если они настроены в исходной базе данных или в таблицах исходной базы данных. Дополнительные сведения см. в разделе Data Compression. По умолчанию False.
- Внести в скрипт внешние ключи — добавляет к скрипту внешние ключи. Значение по умолчанию равно True. Внешние ключи задают связи между таблицами.
- Внести в скрипт полнотекстовые индексы — включает в скрипт создание полнотекстовых индексов. По умолчанию False.
- Внести в скрипт индексы — включает в скрипт создание индексов. Значение по умолчанию равно True. Индексы ускоряют поиск данных.
- Внести в скрипт первичные ключи — включает в скрипт создание первичных ключей в таблицах. Значение по умолчанию равно True. Первичные ключи однозначно определяют каждую строку в таблице.
- Внести в скрипт триггеры — включает в скрипт создание триггеров DML в таблицах. По умолчанию False. Триггер DML — это действие, которое выполняется при наступлении события языка обработки данных DML на сервере базы данных. Дополнительные сведения см. в разделе DML Triggers.
- Внести в скрипт уникальные ключи — включает в скрипт создание уникальных ключей в таблицах. Уникальные ключи препятствуют вводу повторяющихся данных. Значение по умолчанию равно True. Дополнительные сведения см. в статье Ограничения уникальности и проверочные ограничения.
Страница «Сводка»

На этой странице содержится сводка параметров, выбранных в данном мастере. Чтобы изменить параметр, нажмите кнопку Назад. Чтобы начать формирование сохраненных или опубликованных скриптов, нажмите кнопку Далее.
Просмотр выбранных параметров — отображает выбранные на всех страницах мастера варианты параметров. Разверните узел, чтобы просмотреть выбранные параметры для соответствующей страницы.
Страница «Сохранение или публикация скриптов»
Эта страница служит для наблюдения за процессом работы мастера.
Сведения — в столбце Действие отображается ход работы мастера. После создания скриптов мастер сохраняет их в файле или использует для публикации на веб-службе, в зависимости от выбранных ранее параметров. После выполнения всех шагов выберите значение в столбце Результат, чтобы просмотреть результат для соответствующего шага.
Сохранить отчет — выберите, чтобы сохранить результаты работы мастера в файле.
Отмена — нажмите кнопку, чтобы закрыть мастер до завершения обработки или в случае возникновения ошибки.
Готово — выберите, чтобы закрыть мастер после завершения обработки или возникновения ошибки.
Сохранение скриптов

Если все параметры верны, настройка завершится успешно.
Создание скриптов в Azure Synapse Analytics
Если синтаксис, полученный при использовании команды «Создать скрипт для. «, не выглядит как синтаксис Azure Synapse Analytics, или появляется сообщение об ошибке, параметрам формирования скрипта в среде SQL Server Management Studio необходимо присвоить значение Azure Synapse Analytics.
Выбор хранилища данных SQL в качестве параметров формирования скрипта по умолчанию
Для создания скриптов для работы с объектами с синтаксисом Azure Synapse Analytics , задайте параметр формирования скрипта по умолчанию Azure Synapse Analytics , как показано ниже:
- Выберите Инструменты, а затем Параметры.
- Выберите Обозреватель объектов SQL Server, а затем Скрипты.
- В разделе Параметры версий задайте для параметра Использовать параметры скриптов согласно источнику значение False.
- Задайте для параметра Скрипт для типа ядра СУБД значение Выпуск Базы данных SQL Microsoft Azure.
- Для выделенных пулов SQL в Azure Synapse Analytics задайте для параметра Скрипт для выпуска ядра СУБД значение Выпуск хранилища данных SQL Microsoft Azure.
Формирование скриптов для хранилища данных SQL, если оно не является параметром написания скриптов по умолчанию
Если в качестве параметра формирования скрипта по умолчанию выбрано Azure Synapse Analytics , как показано выше, эти инструкции можно игнорировать. Если же выбраны другие параметры формирования скрипта по умолчанию, может возникнуть ошибка. Чтобы избежать ошибок, выполните следующие действия по формированию и публикации скриптов для Azure Synapse Analytics:
- В разделе Базы данныхобозревателя объектов щелкните выделенный пул SQL правой кнопкой мыши.
- Выберите пункт Создание скриптов.
- Выберите объекты, которые нужно включить в скрипт.
- На странице Параметры формирования скриптов нажмите кнопку Дополнительно. В разделе Общие задайте следующие параметры:
- Скрипт для типа ядра СУБД: База данных SQL Microsoft Azure.
- Скрипт для выпуска ядра СУБД: Выпуск Хранилища данных SQL Microsoft Azure.
Параметры, заданные на шаге 4, не будут запомнены. Если вы хотите, чтобы эти параметры были запомнены, выполните инструкции, указанные в статье Выбор хранилища данных SQL в качестве параметров формирования скрипта по умолчанию.
См. также раздел
- Установка SMO
- Копирование баз данных на другие серверы
