MSBuild ExtensionPack Sql2008.Database任务

时间:2011-09-05 14:04:57

标签: msbuild msbuild-task msbuildextensionpack

我正在尝试做一些SQL的东西(支持数据库,恢复数据库,运行一些脚本文件)作为MSBuild脚本的一部分。 MSBuild扩展包中的Sql2008.Database任务似乎是一种很简单的方法,但是我找不到指定服务器实例或用户名和密码的方法。我发现很难相信它仅限于您正在构建的计算机上的默认实例,并且希望在用户MSBuild运行时进行连接,但我无法找到其他方法。 This是我正在处理的文档。任何人都可以解释如何做到这一点,还是我需要看一个不同的方法?

3 个答案:

答案 0 :(得分:2)

您可以使用UserName和UserPassword属性:

<MSBuild.ExtensionPack.Sql2008.Database 
MachineName="$(SQLServer)" 
TaskAction="Backup" 
DatabaseItem="$(SQLDatabaseName)" 
DataFilePath="$(SQLBackupLocation)" 
UserName="$(SQLUserName)"
UserPassword="$(SQLPassword)" />

<MSBuild.ExtensionPack.Sql2008.Database MachineName="$(SQLServer)" TaskAction="Backup" DatabaseItem="$(SQLDatabaseName)" DataFilePath="$(SQLBackupLocation)" UserName="$(SQLUserName)" UserPassword="$(SQLPassword)" />

答案 1 :(得分:1)

我发现MSBuild.ExtensionPack.BaseTask类的属性为MachineName UserNameUserPasswordSQL2008.Database类继承自此类。我习惯于MSDN样式文档,其中继承的成员记录在派生类上,所以我不认为在那里寻找它们,尽管我应该有。对于他们来说,这似乎是一个奇怪的地方,因为它们在从MSBuild.ExtensionPack.BaseTask继承的许多其他类的上下文中毫无意义。

答案 2 :(得分:0)

该任务是否具有MachineName成员?认为那只是你需要的sql实例名称。

我使用任务MSBuild.ExtensionPack.SqlServer.SqlExecute和一个sql语句来做其他所有事情  e.g。

<MSBuild.ExtensionPack.SqlServer.SqlExecute TaskAction="ExecuteReader"
                                                Sql="RESTORE DATABASE $(DatabaseName) FROM  DISK = N'$(RestoreFileDestination)\Source\$(Branch)\Build\$(DatabaseFile)' WITH FILE = 1,MOVE N'Accelerate' TO N'$(dataDir)\$(DatabaseName)_1.LDF', MOVE N'Accelerate_log' TO N'$(logsDir)\$(DatabaseName)_2.LDF', NOUNLOAD, REPLACE, KEEP_CDC, STATS = 10"
                                                ConnectionString="Data Source=Localhost\SQLExpress;Initial Catalog=master;Integrated Security=True"
                                                CommandTimeout="660">

他们从未想过我似乎需要的所有选择......