Невозможно получить доступ к дублирующейся базе данных SQL Server на одном сервере

Я использую SQL Server Workgroup Edition на Windows Server 2003 R2.

Мои классические ASP-страницы обращаются к моей производственной базе данных с помощью системного DSN. Все рабочие здесь.

Код такой...

<%
dbName= "ProdDB"  
userID = "PublicUser"  
pwd = "PublicUserPW"

Set objConn = Server.createObject("ADODB.Connection")  
objConn.connectionString = "DSN=MySystemDSN"  
objConn.open dbName, userID, pwd  
%>  

Для разработки и тестирования я создал копию ProdDB в Enterprise Manager.

  • Резервное копирование ProdDB
  • Восстановление из набора резервных копий ProdDB в новую базу данных с именем TestDB

Насколько я понял, восстановленная база данных будет содержать точную копию данных, а также пользователей, роли и т. д. Сравнение обеих баз данных в Enterprise Manager, похоже, подтвердило это предположение.

Итак... Я предположил, что могу получить доступ к тестовой копии, используя те же учетные данные, и изменить только dbName, например...

<%
dbName= "TestDB"  
userID = "PublicUser"  
pwd = "PublicUserPW"

Set objConn = Server.createObject("ADODB.Connection")  
objConn.connectionString = "DSN=MySystemDSN"  
objConn.open dbName, userID, pwd  
%>  

Однако теперь моя страница возвращается

[Microsoft][Диспетчер драйверов ODBC] Не найдено имя источника данных и не указан драйвер по умолчанию

Я даже пытался создать новый системный DSN с базой данных по умолчанию, указывающей на TestDB. До сих пор нет радости.

Я уверен, что делаю что-то простое и глупое. Любая помощь с благодарностью.


person Rob Roy    schedule 26.09.2010    source источник
comment
Похоже, он не находит системный dsn с именем MySystemDsn. Откройте диспетчер ODBC в разделе «Инструменты администрирования». Проверьте вкладку с надписью System DSN.   -  person Andomar    schedule 26.09.2010
comment
Нет, определенно не то. Страницы, обращающиеся к базе данных ProdDB, работают нормально и используют один и тот же DSN.   -  person Rob Roy    schedule 26.09.2010
comment
Единственное, что изменилось в коде, это dbName.   -  person Rob Roy    schedule 26.09.2010


Ответы (1)


В документации для метода open говорится, что он объявлен:

connection.Open ConnectionString, UserID, Password, Options

Итак, похоже, что вы передаете TestDB в качестве строки подключения. Обычно я вызываю open без указания каких-либо аргументов. Возьмите строку подключения из connectionstrings dot com и:

objConn.ConnectionString = "Data Source=localhost;Initial Catalog=testdb;" & _
    "User Id=myUsername;Password=myPassword;"
objConn.Open
person Andomar    schedule 26.09.2010
comment
Спасибо, Андомар, возможно, вы что-то здесь поняли. Оказывается, есть еще один системный DSN с тем же именем, что и у Prod DB, поэтому соединение, вероятно, работало через этот DSN (то есть тот, который называется ProdDB), а не тот, который, как я думал, использовался (т. е. MySystemDSN вообще не использовался). ) - person Rob Roy; 26.09.2010