2014-06-12 3 views
1

J'ai une application de console Yii (en utilisant Yii v1.1.14) et je veux inclure la sauvegarde de base de données et la fonctionnalité de commande de restauration.Yii sauvegarde/restauration base de données MSSQL

Pour la fonctionnalité de sauvegarde, le code est le suivant:

$backupDir = "C:\\mssql_backup\\backup.bak"; 

// Grab the db name from the config values 
$dbName = $this->dbConfig['dbMainDatabaseName']; 

$cmd = "USE [master] BACKUP DATABASE [$dbName] TO DISK = '$backupDir' WITH FORMAT"; 

$this->mssql->createCommand($cmd)->execute(); 

La commande exécute mais la sauvegarde est jamais créé. Je ne suis pas sûr où la commande est erronée car il s'exécute parfaitement bien à l'aide de SQL Server Management Studio.

Pour restaurer la fonctionnalité, le code est le suivant:

$backupDir = "C:\\mssql_backup\\backup.bak"; 

// Grab the db name from the config values 
$dbName = $this->dbConfig['dbMainDatabaseName']; 

$singleUserCmd = "USE [master] ALTER DATABASE [$dbName] SET single_user WITH ROLLBACK IMMEDIATE"; 
$restoreCmd = "USE [master] RESTORE DATABASE [$dbName] FROM DISK ='$backupDir' WITH REPLACE, RECOVERY"; 

$this->mssql->createCommand($singleUserCmd)->execute(); 
$this->mssql->createCommand($restoreCmd)->execute(); 

La base de données semble être restauré cependant, coincé dans l'état de récupération (dont le WITH RECOVERY est censé gérer). J'ai essayé différentes variantes de commutation RECOVERY et REPLACE options et même diviser les commandes en 2 commandes à exécuter et le même résultat est vu. Encore une fois, les commandes s'exécutent comme prévu dans SQL Server Management Studio.

Il pourrait être intéressant de noter que j'ai aussi une commande pour déposer une base de données:

$singleUserCmd = "USE [master] ALTER DATABASE [$name] SET single_user WITH ROLLBACK IMMEDIATE"; 
$dropCmd = "USE [master] DROP DATABASE [$name]"; 

$this->mssql->createCommand($singleUserCmd)->execute(); 
$this->mssql->createCommand($dropCmd)->execute(); 

Les travaux de commande de base de données de chute en utilisant parfaitement la même connexion, utilisateur, etc., qui me fait penser qu'il est sans doute pas un problème d'autorisations.

Je ne sais pas où aller à partir d'ici et toutes les suggestions seraient grandement appréciées.

Répondre

Questions connexes