Cuando un cliente se conecta a una instancia de SQL Server sin especificar un contexto de base de datos, se usa 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 use 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, después, 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 existe y que se puede tener acceso a ella. Consulte el registro de errores de SQL Server para averiguar por qué no se puede obtener acceso a una base de datos concreta.
Use 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 tener acceso. Para obtener más información sobre las bases de datos predeterminadas, consulte "sp_defaultdb" en los Libros en pantalla y los artículos de Microsoft Knowledge Base 307864 y 196076.
Nombre | Descripción | Valor predeterminado |
Habilitado | Habilita o deshabilita el flujo de trabajo. | Sí |
Prioridad | Define la prioridad de la alerta. | 1 |
Gravedad | Define la gravedad de la alerta. | 2 |
Target | Microsoft.SQLServer.2008.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 | Mom2008ID='{4FFA6A6A-3E49-468E-8C4A-DF5029908802}';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.Cannot_open_user_default_database._Login_failed_1_5_Rule" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2008ID='{4FFA6A6A-3E49-468E-8C4A-DF5029908802}';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>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.2008.Cannot_open_user_default_database._Login_failed_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>