2009-12-07 1 views
1

У меня есть сценарий VB, который подключается к локальной базе данных SQL для извлечения значения. Тот же самый скрипт работает примерно на 100 серверах, но некоторые из серверов производят эту ошибку:[DBNETLIB] [ConnectionOpen (PreLoginHandshake()).] Общая сетевая ошибка - подключение к базе данных SQL в скрипте VB

[DBNETLIB] [ConnectionOpen (PreLoginHandshake()).] Общая сетевая ошибка. Проверьте сеть документации

Вот код, который работает:

Function GetPrimaryServerID 
On Error Resume Next 
Set objConnection = CreateObject("ADODB.Connection") 
Set objRecordSet = CreateObject("ADODB.Recordset") 
objConnection.Open "Provider=SQLOLEDB;Data Source=127.0.0.1;Initial Catalog=xxx;User ID=xxx;Password=xxx" 
sqlquery = "SELECT ServerID FROM tblSettings" 
objRecordSet.Open sqlquery,objConnection 
objRecordSet.MoveFirst 
GetPrimaryServerID = objRecordSet("ServerID") 
objRecordSet.Close 
objConnection.Close 
End Function 

ошибка происходит на 5-й линии при попытке открыть строку подключения. Я в замешательстве, почему этот скрипт работает почти на всех серверах и не работает только на несколько. База данных, к которой они подключаются, идентична на каждом сервере с точки зрения структуры, а только данные, которые изменяются.

ответ

2

Исправлена ​​ошибка: Открылся диспетчер конфигурации SQL Server и перешел на протоколы для MSSQLSERVER -> TCP/IP. На вкладке «IP-адреса» я заметил, что IP2 с адресом 127.0.0.1 был активен, но не включен.Изменен для включения и перезапуска служб SQL. Мой VB-скрипт теперь успешно открывает соединение с 127.0.0.1.

0

Это не ошибка базы данных, а клиентские средства или конфигурации ошибок

отказавшего сервера, вероятно:

  • имеют различный уровень либо SQL Server установки/включает в себя пакет обновления)
  • настроены только для проверки подлинности Windows
  • имеют более старый MDAC (связанный с пакетом SQL, пакет обновления ОС и т. д.)

Редактировать:

SQL Server SSL Encryption, server side, is described here. И в KB 316898 слишком

  • «на стороне сервера» требуется только сертификат сервера и все соединения зашифрованы
  • «на стороне клиента» требует клиентских сертификатов и не является обязательным, и только для этого клиента

Некоторые клиентские библиотеки (в частности, MS JDBC) не поддерживают это.

Если я угадал, вы будете иметь клиент или сервер SSL набор шифрования на основе сервера (ваш скрипт, действующий в качестве клиента)

+0

Все серверы Windows 2003 R2 x64 SP2. Все серверы используют SQL Server 9.0.3042 64 бит. Это включает в себя следующие и неудачные серверы. Я дважды проверял отказоустойчивые серверы, чтобы убедиться. Я не уверен, как проверить версию MDAC. Я только что заметил, что на неудачных серверах при открытии SQL Server Management Studio я не могу подключиться к 127.0.0.1, мне нужно подключиться к имени сервера. Однако на каждом другом сервере я могу подключиться к 127.0.0.1. – VBscripter

+0

Это ошибка при попытке подключиться к 127.0.0.1 на серверах с отказами через Management Studio: соединение было успешно установлено с сервером, но затем произошла ошибка во время установления связи перед входом в систему. При подключении к SQL Server 2005 этот сбой может быть вызван тем, что при стандартных настройках SQL Server не разрешает удаленные подключения. (поставщик: поставщик Named Pipes, ошибка: 0 - на другом конце канала нет процесса.) (Microsoft SQL Server, ошибка: 233) – VBscripter

+0

@VBScripter: можете ли вы выполнить ping 127.0.0.1? эти серверы настроены для активации? – gbn

0

Это может если база данных не настроена на прослушивание трафика TCP/IP. Ошибка «Named Pipes Provider, ошибка: 0 - никакой процесс не находится на другом конце канала». точек в этом направлении.

Вы можете проверить, что с:

telnet 127.0.0.1 1433 

Для настройки, где прослушивает сервер, используйте `SQL Network Utility Server,» для SQL Server 2000, или "Наземная SQL Server Configuration Area" для SQL Server 2005 и выше .

+0

ok Я проверил telnet-тест и не смог подключиться к порту 1433. Серверы используют SQL Server 2005, я открыл конфигурацию поверхности SQL Server, но можете ли вы сообщить, куда я иду, чтобы настроить, где сервер слушает? – VBscripter

+0

@VBScripter: нажмите «Конфигурация поверхности для служб и подключений», затем «MSSQLSERVER' ->« Database Engine »->« Удаленные подключения »и убедитесь, что выбрана одна из опций с TCP/IP – Andomar

+0

« local и удаленные соединения "и" Использование TCP/IP и именованных каналов ", но я до сих пор не могу подключиться к 127.0.0.1 через студию управления или telnet до 127.0.0.1 на порту 1433. – VBscripter

-1
  1. Попробуйте отключить WPF, и это должно решить проблему (Панель управления -> Брандмауэр Windows).

  2. Если нет, то вы можете также остановить службу межсетевого экрана (от Services.msc -> Windows, персональный брандмауэр)

+0

Это поможет вашему ответу, чтобы объяснить, почему вы считаете, что брандмауэр Windows может быть виноват здесь. – Aiken

 Смежные вопросы

  • Нет связанных вопросов^_^