localdb RESTORE SQL funciona en mi equipo Win 10, pero no en mi agente de canalización de Azure

localdb RESTORE SQL funciona en mi equipo Win 10, pero no en mi agente de canalización de Azure

Tengo una canalización de Azure que se niega a ejecutar mis pruebas de integración (bueno, antes de ejecutar las pruebas, debe crear las bases de datos necesarias a partir de archivos .bak, y esa es la parte que falla).

Este SQL se invoca como parte de mi ClassInitializerutina MSTest:

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'

Lo anterior se invoca conectándose a la base de datos 'maestra' del (localdb)\MSSQLLocalservidor. Nuevamente, "funciona en mi máquina" con Visual Studio 2019. Pero no funciona en ninguno de estos agentes de Azure: windows-2019yvs2017-win2016


Detalles adicionales: fragmento de registro del agente de 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..

Ahora la joya enterrada en el mensaje de registro anterior es: Cannot create more than one clustered index on table 'dbo.sysschemaarticles'. Drop the existing clustered index 'PK_dbo.sysschemaarticles' before creating another

Antes de profundizar en cómo hacer esto, ¿alguien puede indicarme una dirección?¿Por qué esto funciona en mi equipo de Windows 10 pero no en mi agente de canalización de Azure?Mi instinto inicial es decir que hay una diferencia en las ediciones SQL "localdb"

Respuesta1

Terminé poniendo un try{...}catch{..}código alrededor de mi .NET que era responsable del bombardeo de la declaración SQL.

El problema es específico de un System.Data.SqlClient.SqlExceptionerror.

Dentro del truco, ejecuto este SQL:

"ALTER DATABASE saleslogix_full SET ONLINE"

Y todas mis pruebas de integración parecen pasar con la base de datos.

información relacionada