我正在尝试做一些SQL的操作(返回数据库,还原数据库,运行一些脚本文件)作为MSBUILD脚本的一部分。来自MSBuild扩展包的SQL2008.DATABASE任务似乎是一种很好的简单方法,但是我找不到一种指定服务器实例或用户名和密码的方法。我发现很难相信它仅限于您要构建的机器上的默认实例,并且想在用户MSBUILD运行时连接,但我找不到方法可以做任何其他事情。 这个 是我正在工作的文档。谁能解释如何执行此操作,或者我需要研究其他方法?

有帮助吗?

解决方案 2

我发现 MSBuild.ExtensionPack.BaseTask 类具有属性 MachineName UserNameUserPassword. SQL2008.Database 类从此类继承。我已经习惯了MSDN样式文档,其中在派生类上记录了继承的成员,因此尽管我应该有,但我不认为在那里寻找它们。尽管对他们来说确实是一个奇怪的地方,因为他们在许多其他阶级的背景下毫无意义 MSBuild.ExtensionPack.BaseTask.

其他提示

您可以使用的用户名和UserPassword属性:

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

该任务是否具有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">

他们永远不会想到我似乎需要的所有选择。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top