Резервное копирование и восстановление базы данных SQL Server из командной строки
Наиболее важной частью плана обслуживания SQL Server является регулярное резервное копирование баз данных. Чтобы сделать резервную копию базы данных, вы не можете просто скопировать соответствующие файлы MDF и LDF базы данных, поскольку SQL Server заблокировал их. Вместо этого вам нужно создать настоящий файл резервной копии через SQL Server.
Хотя это можно сделать путем разработки плана обслуживания внутри SQL Management Studio, в бесплатных выпусках SQL Server Express этот интерфейс не предлагается. Чтобы обойти это, вы можете легко сделать резервную копию ваших баз данных, выполнив команду ниже, войдя в систему как администратор Windows:
SqlCmd -E -S имя_сервера -Q «BACKUP DATABASE [Name_of_Database] TO DISK =" X: PathToBackupLocation [Name_of_Database] .bak "»
Приведенные ниже примеры помогут.
Экземпляр SQL Server по умолчанию:
SqlCmd -E -S MyServer -Q «РЕЗЕРВНАЯ БАЗА ДАННЫХ [MyDB] TO DISK =" D: BackupsMyDB.bak "»
Именованный экземпляр SQL Server:
SqlCmd -E -S MyServerMyInstance -Q «РЕЗЕРВНАЯ БАЗА ДАННЫХ [MyDB] НА ДИСК =« D: BackupsMyDB.bak »»
Выше создается полностью восстанавливаемая резервная копия «MyDB» в файл «D: BackupsMyDB.bak», который можно использовать для аварийного восстановления. Конечно, вы можете изменить расположение резервной копии и файл на все, что вам нужно, но убедитесь, что вы указали расположение папки, которая существует на локальном компьютере. Этот файл резервной копии может быть скопирован на ленточный накопитель или в другое внешнее хранилище.
Общий вопрос: «Можно ли создать файл резервной копии на подключенном диске или в папке UNC?», А быстрый ответ - «Нет». Причина в том, что служба Windows Server SQL работает как учетная запись пользователя, которая имеет доступ только к локальному компьютеру. Вы можете изменить учетную запись, под которой работает служба, но это крайне нежелательно из соображений безопасности..
Восстановление резервной копии базы данных из командной строки
Чтобы восстановить базу данных из файла резервной копии, просто используйте команду:
SqlCmd -E -S Имя_сервера -Q «ВОССТАНОВИТЬ БАЗУ ДАННЫХ [Name_of_Database] FROM DISK =" X: PathToBackupFile [File_Name] .bak "»
Например:
SqlCmd -E -S MyServer -Q «ВОССТАНОВИТЬ БАЗУ ДАННЫХ [MyDB] ИЗ DISK =" D: BackupsMyDB.bak "»
Приведенная выше команда восстановит резервную копию «MyDB» из данных, сохраненных в файле резервной копии «D: BackupsMyDB.bak». Любые изменения, внесенные в MyDB с момента создания файла резервной копии, будут потеряны.
При использовании вышеуказанной команды важно помнить, что она предназначена для использования на том же сервере SQL, на котором был создан соответствующий файл резервной копии. Файлы резервных копий SQL хранят «закулисную» информацию, которая контролирует, где и как копируются файлы данных в файле резервных копий. Если вы восстанавливаете резервную копию с другого сервера SQL, пути в файле резервной копии могут не совпадать с сервером, на который вы восстанавливаете, и это приведет к ошибке. Хотя это можно обойти, гораздо проще восстановить резервные копии, созданные на другом SQL Server, с помощью инструмента SQL Management Studio..
Примечание: приведенные выше команды будут работать на SQL 2005 и выше (любая редакция). Для SQL 2000 и более ранних версий замените 'SqlCmd' на 'oSql'.