ASP SQL-соединение отказано, необходимые порты открыты - PullRequest
0 голосов
/ 05 ноября 2010

Я пытаюсь разработать соединение ASP SQL с сервером MSSQL 2005. SQL-сервер является вспомогательным сервером позади нашего основного сервера домена, поэтому для WAN> LAN настроен порт перенаправления на порт 1433, чтобы трафик мог получить доступ ко второму серверу.

Я выполнил тест telnet на своем конце, чтобы проверить, правильно ли работает переадресация порта, и он сообщает, что в соединении отказано. Когда я запускаю скрипт, я получаю следующий результат:

Поставщик Microsoft OLE DB для SQL Server, ошибка '80004005'

[DBNETLIB] [ConnectionOpen (Connect ()).] SQL Server не существует или доступ запрещен.

Код выглядит следующим образом:

<%
Dim cn
Dim rs
Dim SQL

SQL = "SELECT count(*) FROM master"

'create an instance of the ADO cn and rs objects
Set cn = Server.CreateObject("adodb.connection")
Set rs = Server.CreateObject("adodb.recordset")

'open the cn to the database
cn.Open "Provider=SQLOLEDB;Data Source=###.###.###.###,1433;Network Library=DBMSSOCN;Initial Catalog=blah;User ID=blah;Password=blah"
'Open the rs object executing the SQL statement and return records
rs.Open SQL,cn,adOpenKeyset,adLockOptimistic

'first of all determine whether there are any records
If rs.EOF Then
Response.Write("No records returned.")
Else
'if there are records then loop through the fields
Do While NOT rs.Eof   
Response.write rs("count")
Response.write "<br>"   
rs.MoveNext    
Loop
End If

'close the cn and rs objects to free up resources
rs.Close
Set rs=nothing
cn.Close
Set cn=nothing
%>

Спасибо

Ответы [ 4 ]

1 голос
/ 05 ноября 2010

Кроме того, установите флажок Настройка контактной зоны в меню «Пуск» в «Microsoft SQL Server 2005» / «Инструменты настройки», чтобы убедиться, что TCP включен .Я думаю, что по умолчанию включены только именованные каналы.

Межсетевые экраны

Первое, что может блокировать соединение с SQL Server, - это межсетевой экран.Если у вас есть какие-либо брандмауэры, убедитесь, что они настроены на подключение к SQL Server.TCP-порт по умолчанию, используемый SQL Server, - 1433. Брандмауэры включают McAfee, Norton, брандмауэр Windows, который поставляется с Windows XP SP2, и брандмауэр подключения к Интернету (ICF), который поставляется с Windows 2000.

Проверка службы

Прежде чем вы сможете подключиться к SQL Server 2005, вам необходимо убедиться, что SQL Server работает.По умолчанию выпуск SQL Server Express устанавливается как именованный экземпляр (SQLEXPRESS).Это означает, что вам нужно получить к нему доступ с помощью (local) \ SQLEXPRESS с локальной машины.SQLEXPRESS без префикса работать не будет.Вы также можете использовать IP-адрес 127.0.0.1 на локальном компьютере, чтобы избежать проблем, связанных с DNS.

Чтобы убедиться, что служба работает, введите sqlcmd –S (local) \ SQLEXPRESS в командной строке.Если вы видите «1>», это означает, что вам удалось подключиться.Для выхода из программы sqlcmd введите команду exit.

Протоколы подключения

SQL Server 2005 поддерживает ряд протоколов для подключения клиентских приложений к серверу базы данных.Это протоколы TCP, Named Pipes (NP), Shared Memory (SM), VIA и HTTP.В SQL Server Express поддерживаются только TCP, NP и SM.

По умолчанию только SM доступен для SQL Server Express на локальном компьютере.Это означает, что соединения с удаленного компьютера с SQL Server Express будут прерываться, если не включены TCP и / или NP.Если вы хотите использовать TCP и NP, вы должны явно включить их.Используйте диспетчер конфигурации SQL Server, чтобы явно включить TCP и NP для сервера и клиента.После включения TCP и NP необходимо запустить службу обозревателя SQL (см. Раздел «Обозреватель SQL» ниже).

Если вы подключаетесь удаленно, вам необходимо заменить «(локальный)» на IP-адрес сервера.Вы также можете использовать имя сервера вместо IP-адреса, если DNS может разрешить имя.

Если вы подключаетесь через определенный IP-адрес, убедитесь, что вы включили соединение для него.В диспетчере конфигурации SQL разверните узел конфигурации сети SQL Server 2005, затем выберите Свойства TCP / IP на панели справа.Перейдите на вкладку «IP-адреса» и измените «Включено» на «Да» для определенного IP-адреса.

Диспетчер конфигурации SQL Server

Диспетчер конфигурации SQL Server в SQL Server 2005 и SQL ServerExpress заменяет клиентскую сетевую утилиту и серверную сетевую утилиту.Он позволяет настраивать протоколы, которые прослушивает SQL Server, а также протоколы, которые может использовать приложение ADO.NET 2.0.Однако для настройки клиентского протокола для приложений, которые используют ADO вместо ADO.NET 2.0, вам все равно нужно использовать Client Network Utility.Client Network Utility поставляется с ADO и является частью Windows 2000, Windows XP и Windows 2003.

Для удаленного подключения к SQL Server Express убедитесь, что сервер может прослушивать TCP-подключения.В диспетчере конфигурации SQL Server разверните «Конфигурация сети SQL Server 2005» и перейдите к «Протоколы для SQL Server Express», затем включите TCP.Вам нужно перезапустить сервер, чтобы изменения вступили в силу.

Если вы используете менеджер баз данных Teratrax, вы можете настроить клиентские протоколы, нажав кнопку «Утилита клиентской сети» в диалоговом окне подключения.Убедитесь, что вы соответствуете требованиям операционной системы для Teratrax Database Manager (Windows 2000, Windows XP или Windows 2003).

Браузер SQL Server

Браузер SQL - это новая служба в SQL Server 2005, которая используется для определения портов, которые прослушивают именованные экземпляры.Протокол SM не использует этот сервис.Эта служба отключена в SQL Server Express по умолчанию.Это означает, что пользователь должен будет запустить эту службу, чтобы удаленный доступ мог работать.Вы можете запустить службу браузера SQL из диспетчера служб или набрав «NET START SQLBROWSER» в командной строке.

Браузер SQL прослушивает порт UDP 1434. Однако версии SQL Server 2000, предшествующие SP3, содержат порт удержанияUDP 1434 может привести к сбою разрешения имен в браузере SQL, так как они могут отказаться от порта.Обходной путь - обновить все экземпляры SQL Server 2000 / MSDE на компьютере до SP3 или выше.

0 голосов
/ 05 ноября 2010

Я выполнил тест telnet на своем конце, чтобы проверить, правильно ли работает переадресация порта, и он сообщает, что в соединении отказано.

Тогда выполняется одно из следующих действий:

  • переадресация портов не работает
  • брандмауэр хоста SQL блокирует порт (1433)
  • нет процесса, прослушивающего 1433 на цели:
    • SQL-сервер остановлен или
    • SQL не настроен на использование TCP или
    • Хост SQL имеет несколько IP-адресов, а SQL TCP непрослушивание входящего IP-адреса от сервера пересылки или
    • SQL-сервер прослушивает порт не по умолчанию
0 голосов
/ 05 ноября 2010

Вы также можете убедиться, что экземпляр сервера sql разрешает удаленные подключения

0 голосов
/ 05 ноября 2010

Это происходит, когда служба SQL Server не запущена на удаленном компьютере

...