localdb RESTORE SQL 在我的 Win 10 机器上运行,但不在我的 Azure 管道代理上运行

localdb RESTORE SQL 在我的 Win 10 机器上运行,但不在我的 Azure 管道代理上运行

我有一个 Azure 管道拒绝运行我的集成测试(嗯,在运行测试之前,它必须从 .bak 文件创建必要的数据库 - 这是失败的部分)

此 SQL 正在作为我的 MSTest 例程的一部分被调用ClassInitialize

IF DB_ID('saleslogix_full') IS NOT NULL
    BEGIN

      ALTER DATABASE [saleslogix_full] SET SINGLE_USER WITH
      ROLLBACK IMMEDIATE;

      DROP DATABASE [saleslogix_full];

    END

restore database saleslogix_full
from disk = 'C:\x\y\z\data-snapshots\saleslogix_full.bak' with Recovery,
move 'saleslogix_full' to 'C:\x\y\z\saleslogix_full.mdf',
move 'saleslogix_full_log' to 'C:\x\y\z\saleslogix_full_log.ldf'

上述代码是通过连接到服务器的“主”数据库来调用的。同样,“在我的计算机上运行”,运行的是 Visual Studio 2019。但是(localdb)\MSSQLLocal,在以下 Azure 代理上都不起作用:windows-2019vs2017-win2016


其他详细信息 - Azure 代理日志代码片段

A total of 6 test files matched the specified pattern.
  X SeededSuccessfully_SalesforceIntegration
  Error Message:
   Class Initialization method MyCorp.Data.ReplicationWorker.Tests.Test1.ClassInit threw exception. System.Data.SqlClient.SqlException: System.Data.SqlClient.SqlException: Cannot create more than one clustered index on table 'dbo.sysschemaarticles'. Drop the existing clustered index 'PK_dbo.sysschemaarticles' before creating another.
Database 'saleslogix_full' was restored, however an error was encountered while replication was being restored/removed. The database has been left offline. See the topic MSSQL_ENG003165 in SQL Server Books Online.
RESTORE DATABASE is terminating abnormally.
Processed 1120 pages for database 'saleslogix_full', file 'saleslogix_full' on file 1.
Processed 2 pages for database 'saleslogix_full', file 'saleslogix_full_log' on file 1..

现在,上述日志消息中隐藏的宝藏是: Cannot create more than one clustered index on table 'dbo.sysschemaarticles'. Drop the existing clustered index 'PK_dbo.sysschemaarticles' before creating another

在我深入研究如何做到这一点之前,有人能给我指出一个方向吗?为什么这在我的 Windows 10 机器上运行良好,但在我的 Azure 管道代理上却不运行?我的第一直觉是说这是“localdb”SQL 版本的差异

答案1

我最终try{...}catch{..}在负责轰炸 SQL 语句的 .NET 代码周围放置了一个。

catch 特定于System.Data.SqlClient.SqlException错误

在 catch 中,我执行了以下 SQL:

"ALTER DATABASE saleslogix_full SET ONLINE"

我的所有集成测试似乎都通过了数据库

相关内容