【发布时间】:2016-06-27 17:20:15
【问题描述】:
我需要创建一个 cmd 文件来备份分析服务数据库。因为我的 SQL Server 2014 没有 ascmd.exe,我想我会使用 PowerShell Invoke-ASCMD,但我在将参数传递给 XMLA 文件时遇到问题。 XMLA 文件中无法识别 Dbname 和 Backupfile 参数,但是当我在它们的位置硬编码值时,脚本运行成功。
命令文件:
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-ASDatabasecmdlet?
标签: powershell sql-server-2014