У меня странная проблема, когда я пытаюсь подключиться к SQL Server 2008, работающему на втором компьютере (обе машины с 64-разрядной версией Win7), либо через источники данных в Visual Studio, либо через саму консоль управления SQL.
Время ожидания истекает при первой попытке подключения. Вторая попытка работает нормально.
Я могу получить доступ к общим ресурсам на втором компьютере без каких-либо затруднений, похоже, это первый раз, когда я пытаюсь подключиться к SQL для каждого экземпляра приложения. То есть, если я открою два экземпляра Visual Studio, оба потерпят неудачу при первой попытке подключения, но будут успешными при второй. Мне нужно подключаться дважды для каждого экземпляра (независимо от последовательности сбоя / успеха в любом другом приложении).
Я надеюсь, что в этом есть смысл.
Любой совет?
Думаю, я нашел решение, по крайней мере, в моем случае оно работает. Я использую имя экземпляра, и это автоматически подразумевает динамический порт для службы сервера sql. Я изменил настройки с динамического на порт исправления, а затем открыл брандмауэр на этом порту.
Диспетчер конфигурации SQL Server -> Сетевая конфигурация SQL Server -> Протоколы для «InstanceName» -> TCP / IP -> Свойства -> IP-адреса -> IP All ->
Здесь вы видите два варианта:
Сценарий, используемый для облегчения вашей задачи по открытию портов, которые я загрузил с MS, и я воспроизводю его здесь (комментарии на немецком языке, но они должны быть очевидны):
@echo ========= Ports des SQL-Servers ===================
@echo Aktivieren von Port 1433 für die SQLServer-Standardinstanz
netsh firewall set portopening TCP 1433 "SQLServer"
@echo Aktivieren von Port 1434 für dedizierte Administratorverbindungen
netsh firewall set portopening TCP 1434 "SQL-Administratorverbindung"
@echo Aktivieren von Port 4022 für den konventionellen SQL Server-Service Broker
netsh firewall set portopening TCP 4022 "SQL-Service Broker"
@echo Aktivieren von Port 135 für Transact-SQL-Debugger/RPC
netsh firewall set portopening TCP 135 "SQL-Debugger/RPC"
@echo ========= Ports für Analysedienste ==============
@echo Aktivieren von Port 2383 für die SSAS-Standardinstanz
netsh firewall set portopening TCP 2383 "Analysedienste"
@echo Aktivieren von Port 2382 für den SQL Server-Browserdienst
netsh firewall set portopening TCP 2382 "SQL-Browser"
@echo ========= Verschiedene Anwendungen ==============
@echo Aktivieren von Port 80 für HTTP
netsh firewall set portopening TCP 80 "HTTP"
@echo Aktivieren von Port 443 für SSL
netsh firewall set portopening TCP 443 "SSL"
@echo Aktivieren des Ports für die Schaltfläche 'Durchsuchen' des SQL Server-Browserdiensts
netsh firewall set portopening UDP 1434 "SQL-Browser"
@echo Zulassen von Multicast-/Broadcastantwort auf UDP (Aufzählung der Browserdienste OK)
netsh firewall set multicastbroadcastresponse ENABLE
Я предполагаю, что у вас есть AUTO_CLOSE Включен для базы данных. Это означает, что база данных должна раскручиваться при подключении, что и вызывает начальный тайм-аут.
Во-вторых, это может быть связано с разрешением имени хоста. Таким образом, требуется слишком много времени, чтобы разрешить имя хоста в первый раз (возможно, посредством широковещательной передачи?), Но затем оно кэшируется при последующих попытках подключения. Что вы используете для разрешения хоста? это в DNS? Попробуйте изменить строку подключения на формат IP и порта. т.е. 192.168.100.100,1433
Вы также можете попробовать запустить ipconfig /flushdns
после успешной попытки подключения и посмотрите, получите ли вы такое же поведение. Хитрый обходной путь - поместить поиск в файл HOSTS, но вы должны исправить это должным образом.
Похоже на дальний выстрел в темноте с повязкой на глаза, но это может помочь. На форумах разработчиков Microsoft SQL есть старая ветка, описывающая, похоже, ту же проблему, а также возможное решение. Его сервер работает под управлением Windows Server 2008, но может иметь отношение и к вашей настройке Win7.
Нить:
Из темы:
Да, я исправил эту проблему.
Мой сервер Windows 2008 был настроен на отклонение привязок SASL LDAP (см. Предупреждение 2886).
Поскольку я настроил свой сервер так, чтобы не отклонять такие привязки, соединения sql server 2008 работают правильно.
Вы можете посмотреть в Microsoft KB 935834 информацию об изменении настроек подписи LDAP (не могу ссылаться на него, так как я новый пользователь).
Надеюсь, поможет!
Отключите брандмауэр. Тестовая сеть (пинг). Обнюхивать сетевой трафик на сервер sql (используйте WireShark)
Можете ли вы попробовать запустить SQL Profiler перед первым подключением к VS или SSMS и посмотреть, что происходит на SQL Server?
Кроме того, проверяли ли вы журналы событий, чтобы узнать, не регистрируется ли что-нибудь?