L'errore 945 si verifica quando il database è contrassegnato come IsShutdown. Questo avviene quando non è possibile recuperare il database a causa di file mancanti o di altri errori delle risorse che, in genere, sono facilmente risolvibili.
Verificare innanzitutto che il database sia contrassegnato come IsShutdown utilizzando DATABASEPROPERTY.
Determinare quindi la causa dell'errore consultando il log degli errori ed eseguire l'azione appropriata secondo quanto indicato di seguito.
Rendere disponibili i file e attivare la modalità offline (OFFLINE) del database tramite ALTER DATABASE.
Attivare la modalità online (ONLINE) del database tramite ALTER DATABASE.
Verificare innanzitutto che il database sia contrassegnato come IsShutdown utilizzando DATABASEPROPERTY.
Determinare quindi la causa dell'errore consultando il log degli errori ed eseguire l'azione appropriata secondo quanto indicato di seguito.
In caso di mancanza di uno o più file di dati o di log:
Rendere disponibili i file e attivare la modalità offline (OFFLINE) del database tramite ALTER DATABASE.
Attivare la modalità online (ONLINE) del database tramite ALTER DATABASE.
In caso di mancanza di spazio nel log:
Utilizzare sp_add_log_file_recover_suspect_db() per aggiungere un altro file di log
Il database viene recuperato e portato online tramite questa procedura.
In caso di mancanza di spazio per i dati:
Utilizzare sp_add_data_file_recover_suspect_db() per aggiungere un altro file di log
Il database viene recuperato e portato online tramite questa procedura.
In caso di memoria insufficiente:
L'errore dovuto a memoria insufficiente può verificarsi quando viene eseguito il recupero contemporaneo di numerosi database. Ripetendo l'operazione, è possibile risolvere il problema:
Ripetere l'operazione eseguendo ALTER DATABASE per attivare la modalità offline (OFFLINE) del database.
Attivare la modalità online (ONLINE) del database tramite ALTER DATABASE.
Se la ripetizione dell'operazione non è sufficiente, è consigliabile liberare memoria.
Target | Microsoft.SQLServer.2008.DBEngine | ||
Category | EventCollection | ||
Enabled | True | ||
Event_ID | 945 | ||
Event Source | $Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$ | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
| ||
Event Log | Application | ||
Comment | Mom2008ID='{3BC2D536-13F6-4982-B717-0DCF03213119}';MOM2008GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74} |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ | DataSource | Microsoft.Windows.EventProvider | Microsoft.SQLServer.SQLDefaultAccount |
GenerateAlert | WriteAction | System.Health.GenerateAlert | Default |
<Rule ID="Microsoft.SQLServer.2008.Database_cannot_be_opened_due_to_inaccessible_files_or_insufficient_memory_or_disk_space._See_the_SQL_Server_errorlog_for_details_1_5_Rule" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2008ID='{3BC2D536-13F6-4982-B717-0DCF03213119}';MOM2008GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Windows!Microsoft.Windows.EventProvider" RunAs="SQL!Microsoft.SQLServer.SQLDefaultAccount">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>945</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2008.Database_cannot_be_opened_due_to_inaccessible_files_or_insufficient_memory_or_disk_space._See_the_SQL_Server_errorlog_for_details_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>