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