it-swarm-eu.dev

SQL Server zobrazuje databázi v zotavení

Dnes, po výpadku napájení, jedna databáze (se zotavením: plná) zobrazuje v SSMS „In Recovery“. Tak:

myDatabase (v obnově) (stav databáze: obnovení, vypnutí)

Po dokončení se v „procesu obnovy“ v databázi zobrazí název myDatabase bez „(v obnově)“. Myslel jsem, že problém byl vyřešen, ale nebyl.

Když jsem spustil aplikaci, která používá tuto databázi, vedle názvu mé databáze se znovu objeví další text „(v obnově)“.

Čekal jsem, až skončí „proces obnovy“ a poté jsem databázi odpojil a přivedl ji zpět online.

Restartoval jsem server, restartoval počítač a po spuštění aplikace se znovu objevil další text. V protokolech serveru SQL se několikrát zobrazí zpráva „Spuštění databáze 'myDatabase'“. Zdá se, že databáze funguje, protože mohu vkládat data, ale stav ukazuje, že se něco stane.

Protokol serveru neukazuje nic zajímavého. Jedinou neobvyklou věcí je, že mám 30 položek „Spuštění databáze 'myDatabase'“.

Vím, že při spuštění serveru prochází každá databáze obnovou, než bude připravena k použití. Ale v mém případě je databáze online a poté ukazuje „myDatabase (In Recovery)“. Pokud ukončím aplikaci, databáze přejde na Status: Normal. To mě vede k šílenství.

Nainstaloval jsem dokonce novou instanci SQL Serveru a dal na ni starou databázi „myDatabase“. Problém stále přetrvává.

Když spustím tento dotaz:

SELECT databasepropertyex('nyDatabase', 'STATUS')

Ukazuje zotavení, online, podezřelého a zpět na online a poté se zotavuje a tak dále.

23
Andres

Komunitní wiki odpověď původně ponecháno jako úprava k otázce od autora:

Problém byl v tom, že byla nastavena vlastnost databáze AutoClose.

Řešením bylo nastavit AutoClose na false.

2
user126897

Nejsem si jistý, zda by to pomohlo vyřešit tento problém, ale můžete to zkusit.

Běh:

RESTORE DATABASE YourDatabase WITH RECOVERY

Podívejte se, zda výše uvedený způsobí obnovení databáze z režimu obnovy. Pokud tomu tak není, může být problémem něco jiného.

Můžete zkusit níže uvedený příkaz a zjistit, zda je databáze poškozená?

DBCC CHECKDB ('YourDBname') WITH NO_INFOMSGS, ALL_ERRORMSGS

Pokud zjistí poškození, možná budete chtít opravit databázi pomocí DBCC CHECKDB

16
RK Kuppala

Kdykoli přinesete databázi online, prochází procesem obnovy. Trochu mě ale zmátlo tvé formulace problému. Vidíte, že se databáze obnovuje kdykoli kromě doby, kdy je databáze uvedena do režimu offline (buď z původního výpadku napájení nebo tím, že jste ji uvedli do režimu offline a poté znovu online)? Pokud ano, databáze přechází do režimu offline z nějakého jiného důvodu. Nejlepší je zkontrolovat protokoly serveru SQL a zjistit, co se děje.

Měli byste také zkontrolovat v protokolu událostí systému Windows něco jako selhání disku. Databáze by neměla být spouštěna a obnovována během běžných operací.

6
Ben Thul