Forse ci siamo, come suggeritomi in altri forum, l'errore era proprio nella query!!!
Eliminando le opzioni REWIND, NOUNLOAD e soprattutto STATS = 10 perlomeno i backup vengono eseguiti tutti correttamente. La nuova funzione è quindi la seguente con l'opzione RETAINDAYS = 3 per mantenere i db del corrente anno 3 giorni sul nuovo server:
[php]
function backupDatabase($bkDBName, $bkPathFile, $bkSet, $Log){
sqlsrv_configure("WarningsReturnAsErrors", 0);
$dbSenzaParentesi = filtraParentesiDb($bkDBName);
$serverName = <nome_server>;
$connectionInfo = array("UID" => <user_name>, "PWD" => <password>, "Database" => $dbSenzaParentesi);
$connect = sqlsrv_connect($serverName, $connectionInfo) or trigger_error('Impossibile collegarsi al database '.$dbSenzaParentesi);
//$sql = "ALTER DATABASE ".$bkDBName." SET RECOVERY FULL";
echo "\n Backup del database ".$bkDBName." in corso \n";
$sql = "BACKUP DATABASE ".$bkDBName."
TO DISK = N'".$bkPathFile."'
WITH RETAINDAYS = 3, NOFORMAT, NOINIT, NAME = N'".$bkSet."', SKIP";
echo " Query sql per il backup del database ".$bkDBName." in corso \n";
$backup = sqlsrv_query($connect, $sql) or trigger_error("La query ha ritornato falso : ".erroriQuerySql2008($backup, $bkPathFile, "Errore durante il Backup del database: ", $bkDBName, $Log));
//sqlsrv_close($connect);
}
[/php]Resta il problema sul restore...
La funzione di restore non ha mai funzionato e a questo punto mi viene il dubbio che possa essere ancora qualche opzione del comando RESTORE che mi ha sempre dato noie in quanto non ha mai funzionato e quando dico mai intendo che nemmeno per i db piccoli funziona.
Cioè la chiamata della query non dà errori però se provo a visualizzare i db con Man Studio li vedo in costatnte ripristino e mi vengono creati dei file di checkRestore.
Effettivamente poi questo ripristino non va mai a buon fine nel senso che non viene mai completato.
Questa la funzione di restore:
[php]
//Funzione per il restore del database
function restoreDatabese($bkDBName, $bkNuovoPathFile, $Log){
sqlsrv_configure("WarningsReturnAsErrors", 0);
$dbSenzaParentesi = filtraParentesiDb('<nome_database_esistente>');
$serverName = "<nome_server>";
$connectionInfo = array("UID" => "<nome_user>", "PWD" => "<password>", "Database" => $dbSenzaParentesi);
$connect = sqlsrv_connect($serverName, $connectionInfo) or trigger_error('Impossibile collegarsi al database '.$dbSenzaParentesi);
echo "\n Restore del Backup del database ".$bkDBName." in corso sul nuovo server \n";
$sql = "RESTORE DATABASE ".$bkDBName."
FROM DISK = '".$bkNuovoPathFile."'
WITH REPLACE,
MOVE '".$bkDBName."_Data' TO '<percorso>".$bkDBName."_Data.MDF',
MOVE '".$bkDBName."_Log' TO '<percorso>".$bkDBName."_Log.LDF'";
echo "\n Query sql per il restore del database ".$bkDBName." in corso \n";
$restore = sqlsrv_query($connect, $sql) or trigger_error("La query ha ritornato falso : ".erroriQuerySql2008($restore, $bkNuovoPathFile, "Errore durante il Restore del database", $bkDBName, $Log));
//sqlsrv_close($connect);
}
[/php]Che errore può essere dato che se la stessa query eseguita sul Man Studio va a buon fine ?