Не може да се осъществи достъп до дублирана база данни на 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 Driver Manager] Името на източника на данни не е намерено и не е посочен драйвер по подразбиране

Дори се опитах да създам нов системен 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)


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

connection.Open ConnectionString, UserID, Password, Options

Така че изглежда, че предавате TestDB като низ за връзка. Обикновено се обаждам отворено, без да посочвам никакви аргументи. Вземете низ за връзка от connectionstrings точка 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