首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yii备份/恢复MSSQL数据库

Yii备份/恢复MSSQL数据库
EN

Stack Overflow用户
提问于 2014-06-12 17:44:15
回答 1查看 1.1K关注 0票数 2

我有一个Yii控制台应用程序(使用Yiv1.1.14),我希望包含数据库备份和恢复命令功能。

对于备份功能,代码如下:

代码语言:javascript
复制
$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();

执行该命令,但从未创建备份。我不确定该命令在哪里出错,因为它使用执行得非常好。

对于还原功能,代码如下:

代码语言:javascript
复制
$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();

但是,数据库似乎已恢复,处于恢复状态( WITH RECOVERY应该处理该状态)。我尝试过切换RECOVERYREPLACE选项的不同变体,甚至将命令拆分成两个命令来执行,结果是相同的。同样,这些命令在中按预期运行。

值得注意的是,我还拥有一个删除数据库的命令:

代码语言:javascript
复制
$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();

drop数据库命令使用相同的连接、用户等完美地工作,这使我认为这可能不是权限问题。

我不知道从哪里出发,如果有任何建议,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-13 19:38:28

这不是Yii的问题,它实际上是PHP层中的一个已知问题,请参阅SQL Server: Database stuck in “Restoring” state with PHP

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24190722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档