Language selection | Nyelvválsztás eSpirit – IT Solutions
Blog

SQL Server – AUTO_CLOSE

BLOG

A mai nap a következőbe szaladtam bele:

Egy service alkalmazás folyamatosan használja az adatbázisát, semmi extra. Egyszercsak percenként a következő hibaüzenetet dobja:
  • “Database ‘*****_DB’ is being recovered. Waiting until recovery is finished”
Mindezt akkor, amikor managemetn studio-ból próbálok lekérdezni. De nem mindig, minden második futtatásra.
Nézem az alkalmazás logot:
  • System.Data.SqlClient.SqlException: Cannot open database “*****_DB” requested by the login. The login failed.
Gondoltam, lejárt a service user jelszava. De nem.
Nézem az SQL szerver logot:
  • Login failed for user ‘*****\******User’. Reason: Failed to open the explicitly specified database ‘*****_DB’. [CLIENT: ]
  • Starting up database ‘*****_DB’
És ez percenként. Mivan? Mi az hogy percenként “Starting up database”? Nézegetem a státuszát az adatbázisnak, szinte 10 másodpercenként változik “Normal” és “Recovering” módok között. Ez sok jót nem jelent. Nem tudtam hova tenni, sok utánaolvasás után ez a bejegyzés felsorolja, mit kell átnézni.
Itt jön képbe az AUTO_CLOSE property, ami az SQL SERVER EXPRESS EDITION estetében default ON-ra van állítva!!!!
Magyarul ha az utolsó user is kijelentkezik, akkor szépen leállítja a db-t és elkezd recover-elni. Hogy miért, nem tudom, ahogy azt sem hogy eddig ez miért nem volt probléma. Valamitől meghülyült, és a kelleténél többször hitte azt hogy utolsó user kijelentkezett aki használta, és ez lett.
Megoldás:
Át kell állítani OFF-ra, és működni fog. Nem triviális a db paraméterek lekérdezése, de itt egy bejegyzés rámutat, hogy hogyan kell. Aztán ha meggyőződtünk róla hogy át kell állítani, akkor ilyesmit kell futtatni:

USE master; GO ALTER DATABASE *****_DB SET AUTO_CLOSE OFF; GO

Címke: , , ,
Szerző: Sámoly Gábor

Hozzászólások lezárva.