Вопросы-Ответы-Wiki
В:Как импортировать сохраненные SQL скрипты в базу данных?
О:
Существует два способа сохранить данные, которые были получены с помощью программы SQL Server Recovery Kit:
- Вы можете сохранить SQL скрипты на жесткий диск, они создадут объекты баз данных, например таблицы и поместить данные в эти таблицы.
- Вы также можете запустить скрипты в базах данных, определяемых пользователями, эти скрипты написаны на языке SQL.
Пожалуйста обратите внимание, что SQL скрипты различаются, несмотря на тот факт, что они основываются на тех же самых файлах базы данных. Это происходит из-за особенностей синтаксиса как в запросах, которые выполняются при прямом соединении с сервером с помощью ADO, так и в SQL запросах, выполняемых в среде Query Analyzer’а, которая поставляется вместе с MS SQL Server (использование «:», команды Go и т.д.). Первый способ более надежен, что же касается второго способа, он более удобен.
Конвертация данных в скрипты и сохранение их на диск
-
1. Отображение сохраненных данных
Если вы выбрали сохранение данных на диск, SQL Server Recovery Kit создаст подкаталог, включающий название исходного MDF файла, этот подкаталог создается в каталоге, указанном пользователем, все скрипты будут помещены туда. Все скрипты создаются в соответствии с правилом, названия состоят из слова и цифры. Слово означает роль скрипта, цифра указывает на его номер. Существует множество типов скриптов, например:
- Types*.sql – это скрипты, которые создают типы данных, определяемые пользователем.
- Tables*.sql – скрипты, которые создают таблицы.
- Indexes*.sql – скрипты, которые создают первичные ключи и индексы.
- ForeignKeys*.sql – скрипты, которые создают вторичные ключи.
- Procedure*.sql – скрипты, которые создают хранимые процедуры.
- Function*.sql – скрипты, которые создают функции, определяемые пользователями.
- View*.sql – скрипты, которые создают просмотры.
- Triggers*.sql – скрипты, которые создают триггеры.
- Data*.sql – скрипты, которые заполняют таблицы данными.
Порядковый номер скрипта не содержит никаких полезных данных, а также не указывает на последовательность выполнения скриптов или какую-либо другую информацию. Эти номера используются только для того, чтобы разделять данные и сохранять их во множество небольших документов, вместо одного большого файла. Пользователи могут определить максимальный размер файла с SQL скриптом. Кроме того, пользователям стоит обратить внимание на нумерацию Data файлов. Необходимо отметить, что каждый файл Data типа может включать данные только одной таблицы. Файлы с последовательными номерами содержат все данные для каждой из таблиц.
Внимание: Если в некоторых файлах отсутствуют номера, это означает, что некоторые таблицы не содержат никаких данных.
-
2. Последовательность исполнения скриптов
На этом рисунке вы можете видеть рекомендуемую последовательность исполнения:
Последовательность исполнения скриптов зависит от существующих ограничений для существующих данных и структур таблицы. Пожалуйста, обратите особое внимание на эти факторы:
- Пожалуйста, укажите соответствующий первичный ключ, если вы хотите создать вторичный. За счет этого, эти операции сохраняются в различные файлы, которые нужно запустить в этой последовательности.
- Перед созданием индексов и вторичных ключей программа заполняет таблицы. Это необходимо, так как проверка ссылочной целостности выполняется при заполнении таблицы, в которой определен вторичный ключ. Когда таблицы с вторичными ключами заполняются до таблиц с соответствующими первичными ключами, возникает ошибка. Помимо этого, данный способ обладает другой особенностью. Если восстановленная информация конфликтует с первичным ключом, уникальным индексом, и т.д., то в этом случае таблица в любом случае будет заполнена, но тогда ограничения не будут созданы (индекс, первичный ключ и т.д.). Если пользователям необходимо другое поведение, они могут сами выбрать последовательность запуска скриптов.
- Создание в базе данных таких объектов, как Procedures, Functions, Views, Triggers, отличается некоторыми трудностями потому, что эти объекты могут обладать запутанными и сложными зависимостями. Procedure может ссылаться на другие объекты Procedure, View может ссылаться на Function, а Trigger может ссылаться на все объекты. Поэтому программа не может помочь распутать этот клубок. Пользователям нужно вручную найти все зависимости и запустить SQL в нужной последовательности. Другая возможность состоит в запуске всех скриптов этой группы несколько раз, пока сообщения об ошибке не пропадут.
-
3. Файл Install.bat
Файл install.bat создается для того, чтобы обеспечить автоматическое выполнение всех скриптов. Этот файл исполняет все скрипты, которые были ранее сохранены с помощью этой программы. Последовательность исполнения скриптов будет такой же, как и при выполнении скриптов на базе данных. Этот пакетный файл требует наличия установленной утилиты isqlw, которая входит в состав клиентской части MS SQL Server. Пожалуйста укажите такие параметры, как Имя сервера, Имя базы данных, Имя пользователя, Пароль в командной строке. Например: install.bat SQLServer SQLDatabase SQLUser SQLUserPassword
Примечание:
- Параметры нужно указывать через пробел. Если какой-либо из параметров сам содержит пробел, вам нужно указать его в двойных кавычках.
- Нельзя менять местами параметры.
- Если же файл install.bat будет запущен без указания параметров, вы увидите небольшую инструкцию, как запускать этот файл.
-
4. InstallTrusted.bat
Если Вы используйте авторизацию в Microsoft SQL Server с помощью учетной записи Windows, то используйте файл InstallTrusted.bat. Файл InstallTrusted.bat имеет два параметра: Server name, Database name.
Пример использования: installtrusted.bat SQLServer SQLDatabase Подробные сведения об авторизации через учетную запись Windows тут: https://docs.microsoft.com/ru-ru/sql/relational-databases/security/authentication-access/principals-database-engine?view=sql-server-2017