Se devuelve el error 945 cuando la base de datos se marca como IsShutdown. Esto ocurre cuando una base de datos no se puede recuperar porque faltan archivos o por otros errores de recursos que normalmente se pueden corregir con facilidad.
En primer lugar, compruebe que la base de datos se ha marcado como IsShutdown mediante DATABASEPROPERTY.
A continuación, determine la causa del error consultando el registro de errores y realice la acción como se indica más adelante.
Haga que los archivos estén disponibles y ponga la base de datos sin conexión (OFFLINE) mediante ALTER DATABASE.
Utilice ALTER DATABASE para poner la base de datos en conexión (ONLINE).
En primer lugar, compruebe que la base de datos se ha marcado como IsShutdown mediante DATABASEPROPERTY.
A continuación, determine la causa del error consultando el registro de errores y realice la acción como se indica más adelante.
Si faltan uno o más archivos de registro o de datos:
Haga que los archivos estén disponibles y ponga la base de datos sin conexión (OFFLINE) mediante ALTER DATABASE.
Utilice ALTER DATABASE para poner la base de datos en conexión (ONLINE).
Si no hay espacio de registro suficiente:
Use sp_add_log_file_recover_suspect_db() para agregar otro archivo de registro.
La base de datos se ha recuperado y se ha puesto en línea mediante este procedimiento.
Si el espacio de datos no es suficiente:
Use sp_add_data_file_recover_suspect_db() para agregar otro archivo de registro.
La base de datos se ha recuperado y se ha puesto en línea mediante este procedimiento.
Si no hay memoria suficiente:
El error de memoria insuficiente puede producirse cuando varias bases de datos se recuperan al mismo tiempo. Si se vuelve a intentar la operación, se podría solucionar el problema:
Intente de nuevo la operación usando ALTER DATABASE para poner la base de datos sin conexión (OFFLINE).
Utilice ALTER DATABASE para poner la base de datos en conexión (ONLINE).
Si volver a realizar la operación no soluciona el problema, considere la opción de liberar 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>