Impossible d'ouvrir la base de données par défaut de l'utilisateur. Échec de la connexion

Microsoft.SQLServer.2008.Cannot_open_user_default_database._Login_failed_1_5_Rule (Rule)

Knowledge Base article:

Résumé

Lorsqu'un client se connecte à une instance SQL Server sans indiquer de contexte de base de données, la base de données définie par défaut pour sa connexion est utilisée. Si cette base de données n'est pas disponible pour une raison quelconque, le message ci-dessus apparaît.

Remarque : si la connexion est membre d'un ou de plusieurs groupes Windows définis également comme connexions dans SQL Server, la base de données par défaut de l'un de ces groupes peut être utilisée. Il n'existe pas de méthode fiable pour prédire les bases de données par défaut qui seront choisies lors d'une tentative de connexion. Par conséquent, il est important de vérifier l'appartenance au groupe du compte de connexion et de vérifier la base de données par défaut définie pour tous les groupes afin de s'assurer qu'ils sont tous disponibles.

Solutions

Vous avez le choix entre rendre la base de données par défaut accessible ou éviter de l'utiliser. Parmi les options, citons :

Pour plus d'informations sur les bases de données par défaut, voir « sp_defaultdb » dans la documentation en ligne et les articles 307864 et 196076 (peuvent être en anglais) de la Base de connaissance Microsoft.

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID4064
Event Source$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
Impossible d'ouvrir la base de données par défaut de l'utilisateur. Échec de la connexion
{0}
Event LogApplication
CommentMom2008ID='{4FFA6A6A-3E49-468E-8C4A-DF5029908802}';MOM2008GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

ID Module Type TypeId RunAs 
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ DataSource Microsoft.Windows.EventProvider Microsoft.SQLServer.SQLDefaultAccount
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<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>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>