MSBuild扩展包:验证备份远程

时间:2012-01-26 12:50:40

标签: sql-server msbuild msbuildextensionpack

我正在尝试备份远程数据库服务器上的数据库,然后验证该备份文件。

备份效果很好但是当我尝试验证备份时,构建失败并显示错误:

DataFilePath not found: c:\DatabaseBackups\MyDB.bak

我在本地计算机上使用以下xml构建文件:

<Project ToolsVersion="4.0" DefaultTargets="Default" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <TPath>C:\Program Files\MSBuild\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks</TPath>
        <SqlInstance>myremoteserver</SqlInstance>
        <ProductionBackup>c:\DatabaseBackups\MyDB.bak</ProductionBackup>
        <SqlUserName>user</SqlUserName>
        <SqlPassword>pass</SqlPassword>
        <DatabaseName>MyDB</DatabaseName>
    </PropertyGroup>
    <Import Project="$(TPath)"/>
    <Target Name="BackupDB">
        <!-- Backup a database -->
        <MSBuild.ExtensionPack.Sql2008.Database TaskAction="Backup" DatabaseItem="$(DatabaseName)" MachineName="$(SqlInstance)" UserName="$(SqlUserName)" UserPassword="$(SqlPassword)" DataFilePath="$(ProductionBackup)"/>
        <!-- Verify a database backup -->
        <MSBuild.ExtensionPack.Sql2008.Database TaskAction="VerifyBackup" MachineName="$(SqlInstance)" UserName="$(SqlUserName)" UserPassword="$(SqlPassword)" DataFilePath="$(ProductionBackup)"/>
    </Target>
</Project>

如果我在本地计算机上运行备份和验证但是在将MachineName更改为远程服务器时失败,则此构建文件可正常工作。 我相信在搜索备份文件时MS Build会在我的本地计算机上搜索,而不是在远程计算机上搜索。如何告诉MS Build在远程服务器上搜索备份文件?

1 个答案:

答案 0 :(得分:0)

只需将文件路径提供为unc路径即可。使目标与您的用户共享,它应该可以正常工作。 如果您有管理员权限:

<MSBuild.ExtensionPack.Sql2008.Database TaskAction="VerifyBackup" MachineName="$(SqlInstance)" UserName="$(SqlUserName)" UserPassword="$(SqlPassword)" DataFilePath="\\$(SQLInstance)\C$\DatabaseBackups\MyDB.bak"/>

否则将databaseBackups文件夹共享给您的用户:

<MSBuild.ExtensionPack.Sql2008.Database TaskAction="VerifyBackup" MachineName="$(SqlInstance)" UserName="$(SqlUserName)" UserPassword="$(SqlPassword)" DataFilePath="\\$(SQLInstance)\DatabaseBackups\MyDB.bak"/>