VSTS和LocalBD:无法更新数据库XXX,因为数据库是只读的

时间:2017-12-14 16:29:10

标签: continuous-integration azure-devops integration-testing localdb

我们正在使用VSTS,并且在连续构建过程中的集成测试运行期间我们开始收到错误。我们使用localdb来再次运行测试,将预定义的mdb文件复制到单元测试项目的输出文件夹中。

我们正在使用powershell脚本来确保localdb正在执行。 IT只有一条线:

SqlLocalDB.exe create "MSSQLLocalDB" -s

用于运行集成测试的连接字符串是动态构建的:

$" Data Source =(LocalDB)\ MSSQLLocalDB; AttachDbFilename = {Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly()。CodeBase).AbsolutePath)} \ db.mdf; Integrated Security = True; MultipleActiveResultSets =真&#34 ;;

我们最近唯一改变的是我们已经开始构建针对.NET 4.7.1,但我认为这不应该对这些问题产生任何影响......

我们为何开始收到这些错误的任何线索?

1 个答案:

答案 0 :(得分:1)

解决方案是确保要还原的.mdf位于Build Agent用户的temp目录中。

可以使用%TEMP%环境变量来检索临时目录位置。在c#

Environment.GetEnvironmentVariable("TEMP")

您可以使用sp_attach_db还原

EXEC sp_attach_db @dbname = N'YourDbName', @filename1 = 'TEMPFOLDER\YourDbName.mdf' 

上面一行中的TEMPFOLDER已被替换,但是您认为适合作为TEMP环境变量的值。