数据库一直显示为正在还原(restoring)状态--处理

备份一数据库:完整备份、差异备份、事务日志备份--测试
进行还原时,提示还原成功,可是数据库一直显示为正在还原(restoring)状态。
可以从通过“select * from sysdatabases”查到数据库名,但是无法操作。


若确认还原完毕,可以用以下代码解决:

restore database YourDB with recovery  
--切换至正常状态
--RESTORE DATABASE 成功处理了 0 页,花费 1.337 秒(0.000 MB/秒)。

--至此可以成功查询数据!------------------------------------------------------------------或者还原时选择第一项即可使数据还原结束后处于正常可用状态!即在界面--默认行为是:
 回滚未提交的事务,使数据库处于可以使用的状态。无法还原其他事务日志。(RESTORE WITH RECOVERY)



在 SQL Server 中,当数据库正在进行还原操作时,会将该数据库状态设置为“正在还原”。如果您需要在 C++ 中访问 SQL Server 数据库并查看数据库状态,可以使用 SQL Server Management Objects (SMO)。以下是一个简单的示例代码,可以获取数据库状态: ```c++ #include <iostream> #include <windows.h> #include <sql.h> #include <sqlext.h> #include <sqltypes.h> #include <comdef.h> #include <atlbase.h> #include <atlconv.h> #include <atlstr.h> #include <msxml6.h> #include <comutil.h> #include <vector> #include "sqloledb.h" #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") using namespace std; int main() { HRESULT hr = CoInitialize(NULL); if(FAILED(hr)) { cout<<"CoInitialize Failed!"<<endl; return 0; } try { _ConnectionPtr pConn("ADODB.Connection"); pConn->ConnectionString = "Provider=SQLOLEDB;Data Source=YourServerName;Initial Catalog=YourDatabaseName;UID=YourUserName;PWD=YourPassword;"; pConn->CursorLocation = adUseClient; pConn->Open("", "", "", adConnectUnspecified); _RecordsetPtr pRst("ADODB.Recordset"); CString strSql = "SELECT state_desc FROM sys.databases WHERE name = 'YourDatabaseName'"; pRst->Open(strSql, pConn.GetInterfacePtr(), adOpenStatic, adLockReadOnly, adCmdText); if(pRst->adoEOF) { cout<<"No records found!"<<endl; } else { cout<<"Database state: "<<(LPCSTR)(_bstr_t)pRst->Fields->GetItem("state_desc")->Value<<endl; } pRst->Close(); pConn->Close(); } catch(_com_error& e) { cout<<"Error: "<<(LPCSTR)e.Description()<<endl; } CoUninitialize(); return 0; } ``` 您需要将上述代码中的“YourServerName”、“YourDatabaseName”、“YourUserName”和“YourPassword”替换为实际的值。此代码将打开一个与 SQL Server 数据库的连接,并检索指定数据库状态。如果该数据库正在进行还原操作,则会显示RESTORING”状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值