首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Invoke-ASCMD -将值传递到XMLA文件不起作用

Invoke-ASCMD -将值传递到XMLA文件不起作用
EN

Stack Overflow用户
提问于 2016-06-27 07:02:01
回答 1查看 1K关注 0票数 0

我需要创建一个cmd文件来备份Analysis Service数据库。因为我的SQL Server2014没有ascmd.exe,所以我想我应该使用PowerShell Invoke-ASCMD,但是我在向XMLA文件传递参数时遇到了问题。Dbname和Backupfile参数在XMLA文件中不被识别,但是当我在它们的位置硬编码值时,脚本成功运行。

命令文件:

代码语言:javascript
复制
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代码):

代码语言:javascript
复制
<Backup xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
    <Object>
        <DatabaseID>$dbname</DatabaseID>
    </Object>
    <File>$backupfile</File>
    <AllowOverwrite>false</AllowOverwrite>
</Backup>
EN

回答 1

Stack Overflow用户

发布于 2016-06-27 17:20:15

%DBNAME%$dbname是完全不同的变量。它们不会神奇地拥有相同的值,仅仅因为它们具有相同的名称。此外,PowerShell不会自动扩展XML文件中的变量名(请参阅question you posted on the Technet forums的答案)。

您需要使用想要使用的值动态创建XML文件,才能使其正常工作。例如,像这样:

代码语言:javascript
复制
$dbname     = 'ANALYSIS_DB'
$xmlfile    = 'E:\cube_backup.xmla'
$server     = 'ServerName\ServerInstance'
$backupfile = "G:\Cube_BackupFolder\${dbname}_cube_$(Get-Date -Format 'yyyyMMdd_HHmmss').abf"

$xml = @"
<Backup xmlns='http://schemas.microsoft.com/analysisservices/2003/engine'>
    <Object>
        <DatabaseID>$dbname</DatabaseID>
    </Object>
    <File>$backupfile</File>
    <AllowOverwrite>false</AllowOverwrite>
</Backup>
"@

Invoke-ASCmd -InputFile $xmlfile -Server $server
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38043978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档