Как восстановить базу данных MS SQL по запросу в Ant target - PullRequest
0 голосов
/ 12 марта 2019

У меня есть восстановленный пакетный файл:

SQLCMD -U sa -P password -S myhost -Q "ALTER DATABASE MyDB SET OFFLINE
WITH ROLLBACK IMMEDIATE; RESTORE DATABASE MyDB FROM DISK='C:\\Program
Files\\Microsoft SQL Server\\MSSQL12\\MSSQL\\Backup\\MyDB.bak' WITH
REPLACE; ALTER DATABASE MyDB SET ONLINE"

Мне удалось выполнить этот файл с помощью ant, build.xml, см. Ниже

<target name="revert_database" depends="setup_init" if="is.windows" >
        <exec taskname="windows_install_omnigen:exec" dir="${setup.engine.dir}" executable="cmd">
            <arg value="/C" />
                 <arg value="/C ${setup.engine.dir}\support\omnigen\shared\sql\restoredb.bat"/>
        </exec>
    </target>

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

<target name="revert_database" depends="setup_init" if="is.windows" >
        <exec taskname="windows_install_omnigen:exec" dir="${setup.engine.dir}" executable="cmd">
                 <arg value="/C SQLCMD -U sa -P password -S myhost -Q "ALTER DATABASE MyDB SET OFFLINE WITH ROLLBACK IMMEDIATE; RESTORE DATABASE MyDB FROM DISK='C:\\Program Files\\Microsoft SQL Server\\MSSQL12\\MSSQL\\Backup\\MyDB.bak' WITH REPLACE; ALTER DATABASE MyDB SET ONLINE" />
        </exec>
    </target>

Любой совет.Спасибо.

...