FIX: "Cannot Open Database Requested" Error Connecting to Remote SQL Server (283860)



The information in this article applies to:

  • Microsoft Data Access Components 2.6
  • Microsoft SQL Server, Standard Edition 7.0

This article was previously published under Q283860

SYMPTOMS

With the Microsoft OLE DB provider for SQL Server (SQLOLEDB), if you try to access a database on a remote SQL Server that doesn't exist on a local SQL Server, the following error may occur:
Cannot open database requested in login 'database name'. Login fails
This error has been reported when the local computer has Microsoft Data Access Components (MDAC) 2.6, SQL Server 7.0, and Microsoft Windows NT 4.0 Service Pack 6, and the remote computer has SQL Server 7.0. This error does not occur with MDAC 2.6 against a remote SQL Server 2000 server. It also does not occur if the local computer is not running SQL Server.

RESOLUTION

This bug has been fixed in the MDAC version 2.6 Service Pack 1.

WORKAROUND

To work around this error, you can use the SQL Server Client Network utility (Cliconfg.exe) to set up an alias that uses TCP/IP instead of Named Pipes to connect to the server.

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Microsoft Data Access Components 2.6 Service Pack 1.

MORE INFORMATION

Steps to Reproduce Behavior

NOTE: To reproduce the problem, you will need a local computer with Windows NT 4.0, MDAC 2.6, and SQL Server 7.0, and you will also need a remote SQL Server 7.0.
  1. On the remote SQL Server, create a database named TEST. A database with this name should not exist on your local SQL Server.
  2. Create a new Microsoft Visual Basic EXE project and paste the following code:
    Sub ReproTest
    Dim conn as Object
    Dim rs as Object
    Dim sql as String
      sql = "select db_name(dbid) from master..sysprocesses where " & _
            "spid = @@spid"
      set conn = CreateObject("adodb.connection")
      conn.Provider = "SQLOLEDB"
      conn.Properties("Prompt").Value = adPromptAlways
      conn.Open
      set rs = conn.Execute( sql )
      MsgBox "Current database is " & rs.Fields(0).Value
      rs.Close
      conn.Close
    End Sub
    					
  3. Run the code and when prompted, specify the remote server name, user ID, and password. Click Options and select the TEST database on the remote server.

Modification Type:MajorLast Reviewed:4/7/2006
Keywords:kbQFE KBHotfixServer kbBug kbfix kbMDAC260sp1Fix kbProvider KB283860