Cuando un cliente conecta con una instancia de SQL Server sin especificar un contexto de base de datos, se utiliza la base de datos predeterminada definida para su inicio de sesión. Si esa base de datos no está disponible por algún motivo, aparece el mensaje anterior.
Nota: si el inicio de sesión es miembro de uno o más grupos de Windows también definidos como inicios de sesión en SQL Server, puede que se utilice la base de datos predeterminada de alguno de esos grupos. No hay ninguna forma confiable de predecir cuál de las bases de datos predeterminadas se elegirá durante un intento de inicio de sesión. Por tanto, es importante comprobar la pertenencia a grupos en la cuenta de inicio de sesión y, a continuación, comprobar el conjunto de bases de datos predeterminadas para todos los grupos con el fin de ver si están todas disponibles.
Debe asegurarse de que la base de datos predeterminada esté disponible o evitar usar esa base de datos concreta. Existen varias opciones:
Para obtener más información sobre las bases de datos predeterminadas, vea "sp_defaultdb" en los Libros en pantalla y los artículos de Microsoft Knowledge Base 307864 y 196076.
Cambie la cadena de conexión para que siempre se especifique una base de datos concreta.
Compruebe que la base de datos predeterminada definida para cada inicio de sesión exista y se pueda tener acceso a ella. Revise el registro de errores de SQL Server para intentar determinar por qué no se puede obtener acceso a una base de datos concreta.
Utilice una herramienta como OSQL para especificar una base de datos concreta durante la conexión inicial. Una vez conectado, ejecute sp_defaultdb para cambiar la base de datos predeterminada para su inicio de sesión por otra base de datos a la que se pueda tener acceso.
Inicie la sesión con una cuenta que sea miembro de los roles fijos del servidor sysadmin o securityadmin y ejecute sp_defaultdb para cambiar la base de datos predeterminada del inicio de sesión con error por otra base de datos a la que se pueda obtener acceso. Para obtener más información sobre las bases de datos predeterminadas, vea "sp_defaultdb" en los Libros en pantalla y los artículos de Microsoft Knowledge Base 307864 y 196076.
Target | Microsoft.SQLServer.2005.DBEngine | ||
Category | EventCollection | ||
Enabled | True | ||
Event_ID | 4064 | ||
Event Source | $Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$ | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
| ||
Event Log | Application | ||
Comment | Mom2005ID='{4FFA6A6A-3E49-468E-8C4A-DF5029908802}';MOM2005GroupID={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.2005.Cannot_open_user_default_database._Login_failed_1_5_Rule" Target="SQL2005Core!Microsoft.SQLServer.2005.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2005ID='{4FFA6A6A-3E49-468E-8C4A-DF5029908802}';MOM2005GroupID={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>4064</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2005.Cannot_open_user_default_database._Login_failed_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>