SQLServerException при попытке использовать Fitnesse и DbFit и SQL Server

Я новичок как в (Java) FitNesse, так и в SQL Server, я хочу, чтобы базовый тест SQL работал с DbFit,

У меня в корне следующее:

!path c:\fitnesse\lib\dbfit.jar
!path c:\fitnesse\lib\fitlibrary.jar
!path c:\fitnesse\lib\sqljdbc4.jar
|Import|
|dbfit.SqlServerTest|

У меня есть следующее в моем HelloWorldTest,

!contents -R2 -g -p -f -h

!|dbfit.SqlServerTest|

|Connect|LOCALSQLEXPRESS|sa|Password|somePassword:|

|eg.Division|
|numerator|denominator|quotient?|
|10       |2          |5        |
|12.6     |3          |4.2      |
|100      |4          |33       |  

Что я пробовал:

  • Я дважды проверил свое имя пользователя и пароль SQLExpress, и экземпляр SqlServer находится на локальном хосте. Я сомневаюсь, что это проблема с брандмауэром. (По общему признанию, мое понимание брандмауэра довольно слабое.)
  • Looking at Sql Server Configuration Manager (SSCM),
    • I see that "SQL Server (SQLEXPRESS) is running as Process with ID 2316,
    • Используя команду PowerShell «nestat -a -no | Select-String 2316», я вижу, что процесс на порту 55618.
  • Затем в SSCM я создаю псевдоним под названием «LOCALSQLEXPRESS» как в «Конфигурации SQL Native Client 11.0 (32bit)», так и в «Конфигурации SQL Native Client 11.0», поскольку я понятия не имею, что использует мой JDBC. (Очевидно, JDBC для SQL Server не поддерживает именованный экземпляр, я получил исключение, говорящее мне об этом, когда я пытался напрямую подключиться к \localhost\SQLEXPRESS). Я также включил «TCP/IP» и «Общая память» в «Протоколы». для SQLEXPRESS".

Я получаю следующую ошибку при запуске теста:

com.microsoft.sqlserver.jdbc.SQLServerException: Не удалось установить соединение TCP/IP с хостом LOCALSQLEXPRESS, порт 1433. Ошибка: "null. Проверьте свойства соединения. Убедитесь, что экземпляр SQL Server работает на хосте и принимает соединения TCP/IP через порт. Убедитесь, что соединения TCP с портом не блокируются брандмауэром".

(Обратите внимание на номер порта 1433, хотя мой псевдоним указывает на порт 55618.)

Это мой первый пост на StackOverflow, прошу извинить за глупость. Кто-нибудь может пролить свет?


person lingo_journey    schedule 06.11.2012    source источник
comment
Действительно ли этот SQL Server настроен на прием соединений TCP/IP и зафиксирован на порту 1433? По умолчанию TCP/IP отключен, а порт выбран случайным образом. Также LOCALSQLEXPRESS, вероятно, не является правильным именем хоста...   -  person Mark Rotteveel    schedule 07.11.2012
comment
@Mark прав в вопросе об имени хоста. Для установки по умолчанию вы можете использовать либо localhost\SQLEXPRESS, либо .\SQLEXPRESS.   -  person Michael Sorens    schedule 07.11.2012
comment
@MarkRotteveel и msorens Спасибо! Я отредактировал вопрос, чтобы уточнить поднятые вопросы. Любая другая идея?   -  person lingo_journey    schedule 08.11.2012
comment
JDBC поддерживает именованные экземпляры, но у вас должна быть запущена служба обозревателя SQL Server (и TCP/IP должен быть включен в конфигурации SQL Server). AFAIK обе эти вещи отключены по умолчанию   -  person Mark Rotteveel    schedule 08.11.2012
comment
@MarkRotteveel Еще раз спасибо! TCP/IP работает, но мой браузер SQL Server действительно не работает, как мне его запустить? В документации Microsoft Management Console мне говорят запустить ‹диск›\‹путь›\sqlbrowser.exe -c, но я не могу найти sqlbrowser.exe нигде в папке C:\Program Files\Microsoft SQL Server. Что вы думаете?   -  person lingo_journey    schedule 08.11.2012
comment
Перейдите в Диспетчер конфигурации SQL Server, Службы SQL Server и запустите службу обозревателя SQL Server. Кстати: я не думаю, что вы можете использовать псевдонимы с драйвером JDBC, поэтому вам нужно будет использовать localhost\NAMEDINSTANCE!   -  person Mark Rotteveel    schedule 08.11.2012
comment
@MarkRotteveel Большое спасибо! Я пробовал это перед своим последним комментарием, но заметил, что кнопка «Пуск» неактивна. Только что я попробовал еще раз, я щелкнул правой кнопкой мыши обозреватель SQL Server > Служба > Изменить режим запуска с отключенного на ручной, теперь я могу запустить его! Я счастлив сейчас :)   -  person lingo_journey    schedule 08.11.2012
comment
@MarkRotteveel Теперь у меня есть следующая трассировка стека, я кое-чему научился, но с точки зрения моей первоначальной проблемы я чувствую, что вернулся к исходной точке: java.lang.UnsupportedOperationException: Java SQL Server Driver does not work with instance names. Create an alias for your SQL Server Instance. at dbfit.environment.SqlServerEnvironment.getInstanceString(SqlServerEnvironment.java:26) at dbfit.environment.SqlServerEnvironment.getConnectionString(SqlServerEnvironment.java:41) at dbfit.environment.AbstractDbEnvironment.connect....   -  person lingo_journey    schedule 08.11.2012
comment
@Mark, может быть, я не правильно настроил свой псевдоним в начале?   -  person lingo_journey    schedule 08.11.2012
comment
Я не знаю dbfit, но мое первое предположение будет заключаться в том, что они говорят не об псевдонимах SQL Server, а о псевдонимах внутри dbfit.   -  person Mark Rotteveel    schedule 08.11.2012


Ответы (1)


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

Чтобы решить эту проблему, я переключился на строку подключения в качестве параметра для Connect:

1) удостоверился, что служба браузера SQL Server работает (как указано в комментариях выше)

2) изменил параметр Connect, как показано ниже:

!| Connect | jdbc:sqlserver://localhost\SQLEXPRESS;databaseName=DB_NAME;integratedSecurity=true |

Следующее также работало с использованием аутентификации SQL Server (что, вероятно, больше применимо к lingo_journey:

!| Connect | jdbc:sqlserver://localhost\SQLEXPRESS;databaseName=DB_NAME;user=user1;password=Welcome!|

Обратите внимание, что в некоторых примерах, которые я видел в Интернете, sqlserver: был исключен из строки подключения, что не сработало для меня.

person libran_6    schedule 10.12.2013