Bonjour,

J'ai le message :
ALTER DATABASE n'est pas autorisée dans une transaction multi-instruction
Côté java je définis une transaction qui exécute une procédure stockée de restore de base de données :
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 :
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
Comment pourrais-je contourner ce problème ?