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.
This bug has been fixed in the MDAC version 2.6 Service Pack 1.
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.
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.
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.
On the remote SQL Server, create a database named TEST. A database with this name should not exist on your local SQL Server.
Create a new Microsoft Visual Basic EXE project and paste the following code:
Sub ReproTestDim conn as ObjectDim rs as ObjectDim 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.CloseEnd Sub
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.