Error message when you connect to an instance of SQL Server: "Cannot open user default database" (307864)
The information in this article applies to:
- Microsoft SQL Server 2005 Standard Edition
- Microsoft SQL Server 2005 Enterprise Edition
- Microsoft SQL Server 2005 Developer Edition
- Microsoft SQL Server 2005 Workgroup
- Microsoft SQL Server 2005 Express Edition
- Microsoft SQL Server 2000 (all editions)
- Microsoft SQL Server 7.0
This article was previously published under Q307864 SYMPTOMS
Each user has a default database. When you connect to computer that is running Microsoft SQL Server, and you do not specify a login database, the default database is used. However, if the default database is unavailable at the time of the connection, you may not be able to connect. Instead, you receive error message 4062 or error message 4064. The text of the error messages is as follows:
Cannot open user default database
CAUSE
The user default database is unavailable at the time of connection. It is possible that the database:
- Is in suspect mode.
- No longer exists.
- Is in single user mode and the only available connection is already being used by someone else or by something else.
- Has been detached.
- Has been set to the RESTRICTED_USER state.
- Is offline.
- Is set to emergency status.
- Does not have the login account mapped to a user or the user has been denied access.
Additionally, the login account may be a member of multiple groups and the default database for one of those groups is unavailable at the time of connection. WORKAROUNDTo work around this behavior, specify a valid, available database in the connection string.
To avoid the error when the user's default database is unavailable, log on as a user who can modify logins. Then, change the user's default database to a database that is currently available for a connection. SQL Server 2005You can use the sqlcmd utility to change the default database in SQL Server 2005. To do this, follow these steps: - Click Start, click Run, type cmd, and then press ENTER.
- Use one of the following methods, depending on the kind of authentication that the SQL Server login uses:
- If the SQL Server login uses Microsoft Windows authentication to connect to the instance, type the following at the command prompt, and then press ENTER:
sqlcmd -E -S InstanceName -d master - If the SQL Server login uses SQL Server authentication to connect to the instance, type the following at the command prompt, and then press ENTER:
sqlcmd -S InstanceName -d master -U SQLLogin -P Password Note InstanceName is a placeholder for the name of the SQL Server 2005 instance to which you are connecting. SQLLogin is a placeholder for the SQL Server login whose default database has been dropped. Password is a placeholder for the SQL Server login password. - At the sqlcmd prompt, type the following, and then press ENTER:
ALTER LOGIN SQLLogin WITH DEFAULT_DATABASE = AvailDBName Note AvailDBName is a placeholder for the name of the existing database that can be accessed by the SQL Server login in the instance. - At the sqlcmd prompt, type GO, and then press ENTER.
SQL Server 2000 and SQL Server 7.0You can use the osql utility to change the default database in SQL Server 2000 and in SQL Server 7.0. To do this, follow these steps: - At a command prompt, type the following and then press ENTER:
- At the osql prompt, type the following and then press ENTER:
1>sp_defaultdb 'user's_login', 'master'
- At the second prompt, type the following and then press ENTER:
STATUS
This behavior is by design.
Modification Type: | Major | Last Reviewed: | 4/4/2006 |
---|
Keywords: | kbprb KB307864 |
---|
|