Per dovere di completezza e per essere corretti fino in fondo nell'uso della programmazione, al posto dei cicli if per trovare il nome del file logico, la cosa migliore da fare è sostituirli con la chiamata SQL RESTORE FILELISTONLY.
Quindi al posto di
[PHP] if(strpos($file, "_Data")){
$moveBkDBFile = $bkDBName."_Data";
$moveBkDBFileLog = $bkDBName."_Log";
}else if(strpos($file, "_data")){
$moveBkDBFile = $bkDBName."_data";
$moveBkDBFileLog = $bkDBName."_log";
}else{
$moveBkDBFile = $bkDBName;
$moveBkDBFileLog = $bkDBName."_log";
}
[/PHP]
è più corretto e soprattutto più sicuro (possono capitare errori di riferimenti tra i vari file) usare:
[PHP] $sql = "RESTORE FILELISTONLY
FROM DISK = '".$bkNuovoPathFile."'";
$restoreFileList = sqlsrv_query($connect, $sql) or trigger_error("La query RESTORE
FILELISTONLY ha ritornato falso : ".erroriQuerySql2008($restoreFileList, $bkNuovoPathFile,
"Errore durante la RESTORE FILELISTONLY: ", $bkDBName, $Log));
while($logicalName = sqlsrv_fetch_array($restoreFileList)){
if($logicalName['Type'] == 'D'){
$moveBkDBFile = $logicalName['LogicalName'];
}else if ($logicalName['Type'] == 'L'){
$moveBkDBFileLog = $logicalName['LogicalName'];
}
}
@sqlsrv_free_stmt($restoreFileList);
[/PHP]
e lasciare tutto il resto inalterato.