Я столкнулся с загвоздкой. Мне нужно указать номер порта для моей локальной установки SQL Server 2008 R2. До сих пор я пытался использовать SqlConnectionStringBuilder с источником данных, установленным как .\TESTSERVER, 1433
, который, согласно всей документации, должен подключать меня к серверу TESTSERVER через порт 1433 (по умолчанию ).
Строка подключения имеет вид:
{Data Source=".\TESTSERVER, 1433";Initial Catalog=AdventureWorks;User ID=testuser;Password=MYPASSWORDHERE}
Однако я получаю сообщение об ошибке, похожее на:
A network related or instance-specific error has occurred while establishing a connection SQL server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL server is configured to allow remote connections. (Provider: TCP provider, error:0 - no connection could be made because the target machine actively refused it.
После проверки строки подключения с помощью SqlConnectionStringBuilder.ToString()
получается почти так, как предлагает MSDN . По какой-то причине он заключает в двойные кавычки ТОЛЬКО источник данных и ничего больше. Однако это может быть просто отладчик, удаляющий внешние кавычки, поскольку он хранится в типе данных string
. Я также проверил, что SQL-сервер доступен без указания порта, и это так. Наконец, я убедился, что серверу разрешено принимать удаленные подключения. Учитывая, что этот экземпляр SQL Server установлен локально, с использованием порта по умолчанию, и на моем компьютере для разработки, я не мог представить, почему я получаю такую ошибку.
Это потому, что SqlConnectionStringBuilder переопределяет мой порт своим собственным портом? Нужно ли мне по какой-то причине открывать порты на моем брандмауэре? Зная, что это полностью локальная установка, проблем с брандмауэром быть не должно. Я бы предпочел не создавать строку подключения вручную. Не то, чтобы это сложно, это просто добавляет уровень сложности моему коду, которого я предпочел бы не иметь без необходимости.
Любая помощь будет оценена по достоинству. Спасибо!
РЕДАКТИРОВАТЬ:
После долгого изучения синтаксиса SqlConnectionStringBuilder выяснилось, что он обрабатывает недопустимые параметры, передавая их в строку подключения, заключенную в кавычки.Я предполагаю, что это связано с тем, что он разрывает строку соединения. Мой вопрос все еще остается:есть ли способ передать порт через SqlConnectionStringBuilder или мне придется его построить самому?