我正在尝试从旧备份中备份和还原数据库。
我使用此SQL代码执行此操作:
a[a.apply(lambda x: b.str.contains(x).any())]
#0 a
#1 b
#dtype: object
我的PHP代码与Master DB的连接:
ALTER DATABASE [UKBYTEDB] SET RECOVERY FULL;
BACKUP DATABASE [UKBYTEDB] TO DISK = 'C:/xampp/htdocs/UKBYTEDB/dev/UKBYTEDB- 2017-02-20.Bak' WITH FORMAT, MEDIANAME = 'Z_SQLServerBackups', NAME = 'Full Backup of [UKBYTEDB] - 2017-02-20';
ALTER DATABASE UKBYTEDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
BACKUP LOG UKBYTEDB TO DISK = 'C:/xampp/htdocs/UKBYTEDB/dev/UKBYTEDB-LOG- 2017-02-20.Bak' WITH NORECOVERY
RESTORE DATABASE [UKBYTEDB] FROM DISK = 'C:/xampp/htdocs/UKBYTEDB/dev/UKBYTEDB-defualt.Bak' WITH RECOVERY;
然后我收到此错误:
$RUN = sqlsrv_query($masterDBlink,$RestoreDefualtDB);
if($RUN === false)
{
die(print_r(sqlsrv_errors()));
}
else
{
echo 'Done!';
}
答案 0 :(得分:0)
如果代码在Management Studio中运行且您的连接良好,我建议您在第一个语句之前输入NOCOUNT,看看它是否有效:
SET NOCOUNT ON
ALTER DATABASE [UKBYTEDB]...
答案 1 :(得分:0)
终于找到了让它发挥作用的东西:
在连接后立即添加此代码
sqlsrv_configure( "WarningsReturnAsErrors", 0 );
然后在备份和恢复查询后添加此内容
usleep(600);
set_time_limit(2000);
然后在代码末尾运行此查询
$sql = "USE [UKBYTEDB]";
$stmt = sqlsrv_query($masterDBlink, $sql);
答案 2 :(得分:0)
我有这个确切的问题 - 查询不是在PHP中工作,但查询在SQL Management Studio中有效。事实证明,我正在执行的存储过程中有几个PRINT语句,从调试中遗留下来。一旦我删除了这些陈述,它就有用了。