Я перешел с рабочего ноутбука на Windows 7 на рабочий ноутбук в Windows 10. Я успешно использовал SSMS2016 в Windows 7.
Эта же проблема была применена с использованием SSMS2012 или SSMS2016. Мой доступ к серверам с 10 окнами, использующими проверку подлинности Windows, остался прежним. Я могу проверить это с другого сервера. Однако 2 из 10 серверов не будут подключаться из моего ноутбука. Оба были ms sql server 9, но я мог подключиться к другим базам данных sql server 9.
Решение заключалось в том, чтобы добавить правило брандмауэра (используя брандмауэр Windows с повышенной безопасностью).
Создать Входящее правило для каждой SSMS, например, C: \ Program Files (x86) \ Microsoft SQL Server \ 130 \ Tools \ Binn \ ManagementStudio \ Ssms.exe
Я не эксперт по сети, поэтому я не включил подробности, но, надеюсь, он укажет вам в правильном направлении.
Ошибка msg (pre брандмауэр-правило) "При установлении соединения с SQL Server возникла связанная с сетью или конкретная ошибка экземпляра. сервер не найден или недоступен. Убедитесь, что имя экземпляра верное и что SQL Server настроен на разрешение удаленных подключений. (поставщик: сетевые интерфейсы SQL, ошибка: 26 - ошибка определения местоположения сервера / экземпляра) (.Net SqlClient Data Provider) "
Я вижу две потенциальные проблемы с тем, как вы читаете и используете пароль:
read
без , параметр -r
, он попытается интерпретировать последовательности escape (обратная косая черта), что может вызвать проблемы. Исправление этих потенциальных проблем дает этот фрагмент сценария:
read -rs -p "Password : " bindDNPass
ldapadd -H ldap://localhost -x -w "$bindDNPass" -D "dn=cn=Admin" -f /tmp/file.ldif
... Но, хотя вы должны сделать оба этих мода, чтобы сделать ваш скрипт более надежным, ни один из них не изменит, как он обрабатывает пароль $Something18$
. Фактически, когда я попробовал свой оригинальный фрагмент с этим паролем, он был правильно принят ldapadd
. Если у вашего фактического пароля есть другие специальные символы (или вы играли со значением IFS
), это может помочь; в противном случае происходит что-то еще.
Если ваш пароль по-прежнему не работает после этих исправлений, попробуйте поместить set -x
перед командой ldapadd
(и set +x
после), чтобы он печатал что на самом деле передается ldapadd
. Ну, он напечатает его в возможной запутанной форме: он выведет эквивалентную команду на то, что на самом деле выполняется, что означает, что при необходимости он добавит кавычки и / или экраны в параметр пароля так что вы можете запустить эту команду, и она сделает то же самое. Когда я попробовал это с помощью $Something18$
, он напечатал:
+ ldapadd -H ldap://localhost -x -w '$Something18$' -D dn=cn=Admin -f /tmp/file.ldif
... где одиночные кавычки означают, что то, что внутри них, передается напрямую, без синтаксического анализа. Он также мог напечатать любую из следующих эквивалентных команд:
+ ldapadd -H ldap://localhost -x -w \$Something18\$ -D dn=cn=Admin -f /tmp/file.ldif
+ ldapadd -H ldap://localhost -x -w "\$Something18\$" -D dn=cn=Admin -f /tmp/file.ldif
+ ldapadd -H ldap://localhost -x -w $'$Something18$' -D dn=cn=Admin -f /tmp/file.ldif
, поэтому вам нужно взять то, что он печатает, и выяснить, как это будет обрабатываться bash, чтобы выяснить, что на самом деле передается ldapadd
. Но, по крайней мере, это даст вам некоторую информацию о том, что на самом деле происходит.
О, и вы можете заметить, что аргумент DN не дублируется. Это потому, что в нем нет каких-либо специальных символов, поэтому двойные кавычки ничего не делают, поэтому они просто оставили их.
Поместите его в двойные кавычки и избегайте символа $
, чтобы избежать специальной интерпретации из shell
,
ldapadd -H ldap://localhost -x -w "\$Something18\$" -D "dn=cn=Admin" -f /tmp/file.ldif
(или) [ более рекомендуется ]
Включите его в одну кавычку, чтобы оболочка рассматривала его как литеральную строку без ее расширения,
ldapadd -H ldap://localhost -x -w '$Something18$' -D "dn=cn=Admin" -f /tmp/file.ldif
На странице man bash
,
Прикрепленные символы в двойных кавычках сохраняют буквальное значение всех символов в кавычках , за исключением $,, \, и, когда расширение истории включено,!. Символы $ и сохраняют свое особое значение в двойных кавычках. Обратная косая черта сохраняет свое особое значение только тогда, когда за ней следует один из следующих символов: $, `, ', \ или. Двойная кавычка может быть заключена в двойные кавычки, предшествуя ей обратным слэшем. Если включено, будет выполнено расширение истории если в двойных кавычках не будет выведена, а обратная косая черта, предшествующая символу!, не будет удалена.
blockquote>
$
отдельно. Выход из финального $
является необязательным, поскольку для запуска расширения параметра не существует следующего символа.
– chepner
21 January 2017 в 18:23