2012-01-26 60 views
0

我想在远程数据库服务器上备份数据库,然后验证该备份文件。MSBuild扩展包:验证备份远程

备份工作得很好,但是当我尝试验证构建失败,出现错误的备份:

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来搜索远程服务器的备份文件?

回答

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"/>