Wenn ein Client eine Verbindung mit einer SQL Server-Instanz herstellt, ohne einen Datenbankkontext anzugeben, wird die für die Anmeldung definierte Standarddatenbank verwendet. Wenn diese Datenbank aus irgendeinem Grund nicht verfügbar ist, wird die oben angegebene Meldung angezeigt.
Hinweis: Wenn der Anmeldename Mitglied bei mindestens einer Windows-Gruppe ist, die auch für die Anmeldung innerhalb von SQL Server definiert ist, kann die Standarddatenbank für eine dieser Gruppen verwendet werden. Es kann nicht zuverlässig vorausgesagt werden, welche dieser Standarddatenbanken während eines Anmeldeversuchs ausgewählt wird. Es ist deshalb wichtig, die Gruppenmitgliedschaft für das Anmeldekonto und anschließend die Standarddatenbanken für alle Gruppen im Hinblick auf ihre vollständige Verfügbarkeit zu überprüfen.
Der Zugriff auf die Standarddatenbank muss möglich sein. Ansonsten sollte diese Datenbank nach Möglichkeit nicht verwendet werden. Diese Optionen umfassen Folgendes:
Weitere Informationen zu Standarddatenbanken finden Sie unter "sp_defaultdb" in der Onlinedokumentation sowie in den Microsoft Knowledge Base-Artikeln 307864 und 196076.
Ändern Sie die Verbindungszeichenfolge so, dass immer eine bestimmte Datenbank angegeben wird.
Stellen Sie sicher, dass die für jede Anmeldung definierte Standarddatenbank weiter vorhanden ist und auf sie zugegriffen werden kann. Überprüfen Sie das SQL Server-Fehlerprotokoll, um zu bestimmen, warum auf eine bestimmte Datenbank nicht zugegriffen werden kann.
Verwenden Sie ein Tool wie OSQL, um eine bestimmte Datenbank während der ersten Verbindung anzugeben. Führen Sie nach dem Herstellen der Verbindung sp_defaultdb aus, um die Standarddatenbank für Ihren Anmeldenamen in eine Datenbank zu ändern, auf die aktuell zugegriffen werden kann.
Melden Sie sich mit einem Konto an, das Mitglied der festen Serverrolle sysadmin oder securityadmin ist, und führen Sie sp_defaultdb aus, um die Standarddatenbank für die fehlgeschlagene Anmeldung in eine Datenbank zu ändern, auf die zugegriffen werden kann. Weitere Informationen zu Standarddatenbanken finden Sie unter "sp_defaultdb" in der Onlinedokumentation sowie in den Microsoft Knowledge Base-Artikeln 307864 und 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>