Я пытаюсь найти список всех серверов sql в сети, используя osql -L
в командной строке. Эта команда работает, только если на компьютере, над которым я работаю, установлен SQLServer. Есть ли способ запустить эту команду, если SQLServer не установлен на этом конкретном компьютере, но установлен где-то в сети?
Спасибо!
РЕДАКТИРОВАТЬ: я пишу программу на java, поэтому простые перечисления, которые вы можете выполнять в .NET framework, мне не подходят.
Если вы ищете программу командной строки, которую можно запустить и получить обратно, посмотрите на Командную строку SQLPing3. Я знаю, что там написано, что это альфа-версия, но все работает нормально. Он будет использовать все известные методы для обнаружения SQL-сервера, который выходит за рамки osql -L (который просто выполняет широковещательную рассылку udp / 1434).
Командная строка SQLPing3 (и другие бесплатные инструменты от SQLSecurity.com)
Согласно документации утилиты, она должна отображать как локальные, так и сетевые серверы. Проблема может заключаться в том, что служба браузера SQL не запущена, и эта служба используется для получения списка всех серверов SQL в сети.
Служба браузера SQL: http://msdn.microsoft.com/en-us/library/ms181087.aspx
посмотрите на эту ссылку
http://www.sqldbatips.com/showarticle.asp?ID=45
Эта ссылка показывает, как сделать это с помощью кода через .Net framework, если вы ищете способ с другим языком программирования или платформой, скажите
Вы можете скачать SQLCMD отдельно с сайта компании microsofts:
Утилита запросов командной строки Microsoft SQL Server 2005
Замените вызов osql на sqlcmd. Аргументы и выходные данные командной строки одинаковы для ваших целей.
Прежде чем полагаться на объекты SMO, чтобы вернуть вам список доступных экземпляров SQL в сети, вы должны прочитать это о SqlDataSourceEnumerator. Он может возвращать неполные или непоследовательные результаты.