我正在尝试将一些 SQL 的东西(备份数据库、恢复数据库、运行一些脚本文件)作为 MSBuild 脚本的一部分。MSBuild 扩展包中的 Sql2008.Database 任务似乎是一种很好的简单方法,但是我找不到指定服务器实例或用户名和密码的方法。我很难相信它仅限于您正在构建的机器上的默认实例,并且希望在用户 MSBuild 正在运行时进行连接,但我找不到其他方法。这是我正在使用的文档。任何人都可以解释如何做到这一点,或者我需要看看不同的方法吗?
问问题
1622 次
3 回答
2
您可以使用 UserName 和 UserPassword 属性:
<MSBuild.ExtensionPack.Sql2008.Database
MachineName="$(SQLServer)"
TaskAction="Backup"
DatabaseItem="$(SQLDatabaseName)"
DataFilePath="$(SQLBackupLocation)"
UserName="$(SQLUserName)"
UserPassword="$(SQLPassword)" />
于 2012-05-04T10:47:32.733 回答
1
我发现MSBuild.ExtensionPack.BaseTask
该类具有属性MachineName
UserName
和UserPassword
. SQL2008.Database
类继承自这个类。我习惯于 MSDN 样式的文档,其中继承的成员记录在派生类上,所以我没想到在那里寻找它们,尽管我应该有。尽管它们在许多其他继承自MSBuild.ExtensionPack.BaseTask
.
于 2011-09-06T11:52:54.027 回答
0
该任务没有 MachineName 成员吗?认为这只是您需要的 sql 实例名称。
我使用任务 MSBuild.ExtensionPack.SqlServer.SqlExecute 和 sql 语句来做其他所有事情,例如
<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">
他们永远不会想到我似乎需要的所有选择......
于 2011-09-05T14:40:15.833 回答