Мне нужно создать cmd-файл для резервного копирования базы данных Analysis Services. Поскольку у моего SQL Server 2014 нет ascmd.exe, я думал, что буду использовать PowerShell Invoke-ASCMD
, но у меня возникают проблемы с передачей параметров в файл XMLA. Параметры Dbname и Backupfile не распознаются в файле XMLA, но когда я фиксирую значения на месте, сценарий выполняется успешно.Invoke-ASCMD - передача значений в файл XMLA не работает
Командный файл:
set DBNAME=ANALYSIS_DB
set SCRIPTPATH=E:\cube_backup.xmla
set SRC=ServerName\ServerInstance
set BACKUPPATH=G:\Cube_BackupFolder\
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c%%a%%b)
for /F "tokens=1-3 delims=:. " %%A in ('time/T') do (set var=%%A%%B%%C%)
set BACKUPFILE="%BACKUPPATH%\%DBNAME%_cube_%mydate%_%var%.abf"
powershell.exe -command Invoke-ASCmd -InputFile %SCRIPTPATH% -server %SRC%
SCRIPTPATH (XMLA код):
<Backup xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>$dbname</DatabaseID>
</Object>
<File>$backupfile</File>
<AllowOverwrite>false</AllowOverwrite>
</Backup>
Почему вы не делаете это полностью в PowerShell вместо вызова PowerShell из пакетного файла? –
Другое дело, если вы в 2014 году, почему бы вам просто не использовать командлет '' Backup-ASDatabase' (https://msdn.microsoft.com/en-us/library/hh479574.aspx)? –