我用SQL Server 2008 R2
和SSAS。
我在SSAS中有一些维度数据库。
我需要每天创建一个工作,以从SSAS的所有数据库进行备份。
我该怎么办?
因此,有几种方法:
1 /使用Analysis Services命令作为步骤创建一个SQL作业,每个DB使用类似于以下代码的代码:
<Backup xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>DBName</DatabaseID>
</Object>
<File>\\server\share\folder\backupFile.abf</File>
<AllowOverwrite>true</AllowOverwrite>
</Backup>
这很容易,而且很容易,如果您只有几个SSAS数据库,并且您不会定期删除或添加更多数据库,则维护起来相对容易
2 /创建一个SSAS链接服务器,然后在作业步骤中使用常规SQL语句来传递命令(为您提供了更多的灵活性,因为您可以使用变量来修改文件名等内容):
DECLARE @XMLA NVARCHAR(1000) ,
@timeStamp NVARCHAR(35);
SET @timeStamp = CONVERT(NVARCHAR, GETDATE(), 112) + '_'
+ REPLACE(CONVERT(VARCHAR(8), GETDATE(), 108), ':', '');
SET @XMLA = N'<Backup xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>dbName</DatabaseID>
</Object>
<File>\\server\share\folder\dbName_'
+ @timeStamp + '.abf</File>
<AllowOverwrite>true</AllowOverwrite>
<ApplyCompression>false</ApplyCompression>
</Backup>';
EXEC (@XMLA) AT [SSAS_LinkedServer]
编辑:您还可以使用此方法执行的操作是使用以下方法轻松地从Analysis Server获取SSAS数据库的列表:
SELECT [catalog_name] FROM OPENQUERY([SSAS_LinkedServer],'select [catalog_name] from $system.dbschema_catalogs')
然后,您可以仅在此列表上移动,通过链接服务器为列表中的每个DB执行SSAS命令,因此,这意味着如果添加新的SSAS数据库,则无需手动维护作业。
3 /使用powershell,下面的方法在2008 R2上不起作用,但是可以修改为直接使用SMO,而不是它们在SQL Server 2012中提供的不错的提供程序(这是我们使用的方法,下面是示例从我的脚本):
import-module sqlps -disablenamechecking
$server = "SERVER\INSTANCE"
$backupPath = "\\backup-server\share\SSAS\$server\"
#Get a list of the SSAS databases on the server
$ssasDBs = dir SQLSERVER:\SQLAS\$server\databases
#Backup each SSAS database on the server
foreach ($db in $ssasDBs)
{
$extension = Get-Date -UFormat "_%Y_%m_%d_%A_%H%M%S.abf"
$backupFile = $backupPath+$db+$extension
try
{
$db.Backup($backupFile)
}
catch
{
Write-Warning "Backup of $db Failed!!!"
}
}
此方法的优点是,如果添加新的SSAS数据库,则无需更改作业,该脚本将自动对其进行备份,而无需进行任何更改。
我确定还有其他方法可以实现此目的,但是这是我用来管理SSAS备份的3种方法,我通常觉得SSAS的管理方面有些痛苦,因为它似乎有点不足,但这也许就是我。但是,SQL 2012中的新powershell位使其变得更加容易。
希望这至少对您可以做什么有帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句