Bonjour,
J'ai le message :Côté java je définis une transaction qui exécute une procédure stockée de restore de base de données :ALTER DATABASE n'est pas autorisée dans une transaction multi-instruction
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 DBTransaction trans = (DBTransaction)appModule.getTransaction(); CallableStatement callStmt = null; callStmt = trans.createCallableStatement( "EXEC MaProcédureStockéeRestore ?", DBTransaction.DEFAULT ); callStmt.setString( 1, MonParamètre ); callStmt.execute();
Côté base de données :
Comment pourrais-je contourner ce problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 CREATE PROCEDURE MaProcédureStockéeRestore @vSchema VARCHAR(30) AS BEGIN DECLARE @sqlStatement VARCHAR(512) SELECT @sqlStatement = 'ALTER DATABASE ' + @vSchema + ' SET SINGLE_USER WITH ROLLBACK IMMEDIATE' EXECUTE( @sqlStatement ) SELECT @sqlStatement = 'RESTORE DATABASE + @vSchema + ' FROM DISK = ''C:\path\NomFichier.bak''' EXECUTE( @sqlStatement ) SELECT @sqlStatement = 'ALTER DATABASE [' + @vSchema + '] SET MULTI_USER' EXECUTE( @sqlStatement ) END GO
Partager