Подключение к именованному экземпляру SQL Server 2008 из классического ASP - PullRequest
4 голосов
/ 05 августа 2010

Мое приложение ASP без проблем подключается к сетевому серверу, на котором установлен SQL Server 2000.Старый работающий код:

myConn.Open ("Driver={SQL Server};
              Server=myNetwrkServer;
              Database=myDB;
              UID=myID;PWD=myPWD;Trusted_Connection=NO;")

Экземпляр SQL Server 2008 был установлен на том же сетевом сервере.Новый код не работает:

myConn.Open ("Driver={SQL Server Native Client 10.0};
                      Server=myNetwrkServer\SQLServ2008;
                      Database=myDB;
                      UID=myID;PWD=myPWD;Trusted_Connection="NO";)

Пожалуйста, помогите!

Ответы [ 7 ]

10 голосов
/ 11 мая 2011

Именованные экземпляры требуют, чтобы Служба браузера SQL Server была включена и запущена.Если эта служба не запущена на вашем компьютере myNetwrkServer, то подключение из сети не будет выполнено, поскольку они не смогут разрешить имя экземпляра в фактический порт прослушивания.

Вторая проблема заключается в том, что вы измениливодитель до {SQL Server Native Client 10.0}.Для этого необходимо установить собственный драйвер SQL Server 2008 на свой компьютер ASP.Нет смысла менять драйвер, вам следует оставить драйвер на старом {SQL Server} и позволить OleDB разрешить для вас драйвер подключения низкого уровня.Указывая не только собственный драйвер, но даже номер версии, вы диктуете стек низкоуровневого подключения, и даже если он будет работать, он сломается при обновлении до SQL Server 2008 R2.Просто оставьте это в общем {SQL Server} и позвольте менеджеру драйверов выяснить детали.

И, наконец, вам нужно убедиться, что логин / пароль определены на новом сервере.

Как правило, «новый код не работает» никогда не следует указывать в запросе о помощи.Всегда ставьте как , это не работает.Вы получаете исключение или ошибку?Какое исключение, какое сообщение?Попытка помочь вам не должна быть загадочным романом.

8 голосов
/ 05 августа 2010

У вас есть несовпадающие кавычки в конце строки.

должно выглядеть так

myConn.Open ("Driver={SQL Server Native Client 10.0};
                      Server=myNetwrkServer\SQLServ2008;
                      Database=myDB;
                      UID=myID;PWD=myPWD;Trusted_Connection=NO;")
2 голосов
/ 05 августа 2010
Trusted_Connection="NO";)

Похоже, что окружение значения двойными кавычками приведет к отклонению.

Вместо:

("Driver={SQL Server Native Client 10.0};Server=myNetwrkServer\SQLServ2008;Database=myDB;UID=myID;PWD=myPWD;Trusted_Connection="NO";)

Похоже, вы должны иметь:

("Driver={SQL Server Native Client 10.0};Server=myNetwrkServer\SQLServ2008;Database=myDB;UID=myID;PWD=myPWD;Trusted_Connection=NO;")
1 голос
/ 14 мая 2011

Это контрольный список, который я проверяю, когда не удается установить соединение с новым SQL Server из какого-либо сетевого приложения (некоторые пункты уже были упомянуты):

  1. Проверьте, имеет ли SQL Server Аутентификация SQL и Windows включена (по умолчанию устанавливается только аутентификация Windows)
  2. Проверьте, включена ли служба браузера SQL Server и работает (опция установки по умолчанию не активирована)
  3. Проверьте, включены ли соединения TCP / IP для вашего экземпляра SQL Server (обычно по умолчанию отключено)
  4. Проверьте, разрешает ли брандмауэр сервера разрешать соединения с SQL Server и браузером SQL Server (недавно это часто является проблемой)
  5. Проверьте, если пользователь базы данных , определенный в вашей базе данных, также существует на новом сервере SQL Server с такими же учетными данными для входа в систему
  6. Проверьте, является ли пользователь базы данных имеет в соответствии права доступа к вашей базе данных, если вы переместили свою базу данных с другого сервера на новый
  7. И, наконец, что не менее важно, проверьте конфигурацию базы данных приложения если он действительно делает то, что вы ожидаете (это, вероятно, должно идти первым)
1 голос
/ 05 августа 2010

Как уже говорили другие, цитаты не совпадают. Но вам не нужен бит доверенного соединения. Вы либо используете UID= и PWD=, либо Trusted_Connection=yes. Вам не нужны все атрибуты одновременно.

Это должно работать нормально:

myConn.Open ("Driver=SQLNCLI10; 
              Server=myNetwrkServer\SQLServ2008; 
              Database=myDB; 
              UID=myID;
              PWD=myPWD;") 
1 голос
/ 05 августа 2010

Похоже, ваш Trusted_Connection параметр неправильно завершает строку подключения.

Рассмотрите возможность полного удаления Trusted_Connection или убедитесь, что вы не ставите NO в кавычки.

myConn.Open ("Driver={SQL Server Native Client 10.0};Server=myNetwrkServer\SQLServ2008;
                Database=myDB;UID=myID;PWD=myPWD;Trusted_Connection=NO;")
0 голосов
/ 12 мая 2011

В дополнение к тому, что сказали Eton B и Ремус Русану, вы должны также проверить, включен ли протокол Named Pipes на SQL Server. Для проверки (на сервере):

  1. (Программы в меню Пуск)
  2. (Microsoft SQL Server 2008 / Microsoft SQL Server 2008 R2)
  3. Диспетчер конфигурации SQL Server
  4. Развернуть конфигурацию сети SQL Server
  5. (Выбрать протоколы для). В этом списке перечислены протоколы и указаны ли они.

Если Именованные каналы не включены, щелкните правой кнопкой мыши, Свойства, измените Enabled на Yes.

Другим вариантом является принудительное использование tcp (очевидно, используйте шаги, описанные выше, чтобы убедиться, что tcp включен). Вы можете принудительно установить tcp, изменив строку подключения так, чтобы в качестве префикса имени сервера вы использовали tcp::

myConn.Open ("Driver={SQL Server};
              Server=tcp:myNetwrkServer;
              Database=myDB;
              UID=myID;PWD=myPWD;Trusted_Connection=NO;")

Если вы используете tcp, обратите внимание, что по умолчанию ваше приложение будет обращаться к базе данных через порт 1433, что означает, что порт должен быть открыт на сервере, если на этом сервере запущен брандмауэр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...