为了运行一些测试,我们的管道将一些SQL Server.mdf
文件挂载为localdb。
将管道从windows-2019切换到windows-2022后,我们要求DB的测试生成以下错误:
数据库'xxxxxxxxxxx'无法升级,原因是只读、包含只读文件或用户没有权限修改部分文件。处理步骤使数据库或文件可写,并重新运行恢复
.mdf
文件不是只读数据库,可以在本地挂载。
我已经尝试递归地关闭目录上的只读标志,以防2022版本的Windows使用不同的默认值设置构建目录,这没有帮助。对于为什么会发生这种情况/修复有什么建议吗?
Azure DevOps Pipeline通过服务帐户访问文件,我们应该检查服务帐户权限,并确保它有足够的权限。
如果您使用的是MS托管代理,它通过这个帐户test Build Service(Org name)
访问文件,我们需要打开项目设置->Repositories->选择repo并检查服务帐户test Build Service ({Org name})
权限,同时检查Pipeline-> settings
如果您正在使用自托管代理并访问本地文件,则应该检查文件权限。只要确保服务帐户对文件具有可写权限即可。
选择本地文件->Properties->Security,服务帐户名称应为Administrators(代理服务名称Administrators)或Users(代理服务名称授予正确权限的用户)。
请尝试将.mdf
的文件权限设置为BUILTINUsers
或服务帐户可写。