понедельник, 2 апреля 2018 г.

Восстановление БД с изменением имени в MSSQL

Проблема
Необходимо скопировать и восстановить одну из БД на том же инстансе (экземпляре) SQL сервер.

У MSSQL  все базы данных имеют логическое имя и обычно состоят из 2 файлов (файла данных и файла лога), имеющие следующие имена:

logicalName_Data.mdf
и
logicalName_Log.ldf

Иногда возникают ситуации когда необходимо "скопировать" БД на этот же инстанс SQL-сервера, но с новым логическим именем т.к., например, копируемая БД используется одним или несколькими приложениями.

Решение
Я не нашел как решить эту проблему в SQL Management Studio без операций по переименовыванию исходной БД (одно из условий: БД используется одним из приложений, поэтому ее трогать нельзя). Решение довольно простое, но для этого еужно написать TSQL-инструкцию.

1. Вывод списка файлов бэкапа:
RESTORE FILELISTSTONLY FROM DISK = 'E:\backups\mydb.bak'

в моем случае я получил mydb] для Data-файла и mydb]_log для файла логов

2. теперь скопируем имена файлов из выведенной таблицы в слебующую инструкцию:

RESTORE DATABASE myNewDb FROM DISK = 'E:\backups\mydb.bak'
WITH
RECOVERY,
MOVE 'mydb]' TO 'E:\db\data\myNewDb.mdf',
MOVE 'mydb]_log' TO 'E:\db\logs\myNewDb.ldf'; 

База восстановлена с новым именем myNewDb.

Распространение Windows-приложений (Chocolatey)

Менеджеры пакетов для ОС Windows В большинстве дистрибутивов Linux есть свои менеджеры пакетов: в Ubuntu/Mint это apt и deb, в OpenSuse э...