2012-01-26 54 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"/>