Свойства TCP/IP (вкладка «IP-адреса»)
Изменения вступят в силу после перезапуска SQL Server. Сведения о запуске и остановке службы обозревателя SQL см. в разделе Запуск и остановка службы обозревателя SQL Server.
Статические и Динамические порты
Динамические порты
При запуске, когда экземпляр SQL Server настроен для прослушивания динамических портов, он проверяет наличие в операционной системе доступного порта и открывает для него конечную точку. Входящие соединения должны указывать этот номер порта. Так как номер порта может меняться при каждом запуске SQL Server, в состав SQL Server входит служба обозревателя SQL Server, которая обеспечивает наблюдение за портами для контроля портов и направляет входящие соединения на текущий порт этого экземпляра. Использование динамических портов усложняет соединение SQL Server через брандмауэр, т. к. при перезапуске SQL Server номер порта может измениться и параметры брандмауэра потребуется изменить. Чтобы предотвратить проблемы при соединении через брандмауэр, настройте SQL Server для использования статического порта.
Параметры
Активно
Указывает на то, что IP-адрес активен на компьютере. Недоступно для параметра Все IP.
Enabled
Если для свойства Прослушивать все в диалоговом окне Свойства TCP/IP (вкладка «Протокол») установлено значение Нет, это свойство указывает на то, что SQL Server прослушивает IP-адрес. Если для свойства Прослушивать все в диалоговом окне Свойства TCP/IP (вкладка «Протокол») установлено значение Да, это свойство не учитывается. Недоступно для параметра Все IP.
IP-адрес;
Позволяет просматривать или изменять IP-адрес, используемый этим соединением. Показывает используемый компьютером IP-адрес и петлевой IP-адрес, 127.0.0.1. Недоступно для параметра Все IP. IP-адрес может иметь формат IPv4 или IPv6.
Все IP
Пусто, если динамические порты не включены. Для использования динамических портов присвойте параметру значение 0.
Для параметра Все IP отображается номер используемого динамического порта.
Динамические TCP-порты
Позволяет просматривать или изменять порт, прослушиваемый SQL Server. По умолчанию экземпляр SQL Server по умолчанию прослушивает порт 1433.
Ядро СУБД может прослушивать несколько портов на одном IP-адресе. Порты в списке разделяются запятыми в следующем формате: 1433,1500,1501. Длина этого поля ограничена 2047 символами.
Добавление или удаление IP-адресов
Диспетчер конфигурации SQL Server отображает IP-адреса, которые были доступны во время установки SQL Server. Доступные IP-адреса могут измениться при добавлении или удалении сетевых адаптеров, после истечения срока действия динамически назначаемых IP-адресов, при перестройке сетевой структуры или при изменении физического местоположения компьютера, например в случае, когда переносной компьютер подключается к сети в другом здании. Для изменения IP-адреса необходимо изменить поле IP-адрес и перезапустить SQL Server.
Дополнительные разделы электронной документации
Изучите статьи MSDN Настройка сервера для прослушивания указанного TCP-порта (диспетчер конфигурации SQL Server) и Настройка компонента Database Engine на прослушивание нескольких портов TCP.
Указание сетевого адреса сервера (зеркальное отображение базы данных)
При настройке сеанса зеркального отображения базы данных для каждого экземпляра сервера необходим сетевой адрес. Он должен однозначно определять экземпляр по адресу и номеру порта, который прослушивается данным экземпляром.
Определение порта в сетевом адресе сервера возможно при наличии конечной точки зеркального отображения базы данных в экземпляре сервера. Дополнительные сведения см. в разделе Создание конечной точки зеркального отображения базы данных с проверкой подлинности Windows (Transact-SQL).
Синтаксис сетевого адреса сервера
Сетевой адрес сервера имеет следующий синтаксис:
TCP :// :
— строка, однозначно определяющая целевой компьютер. Обычно сетевой адрес представляет собой системное имя (если компьютеры входят в один домен), полное доменное имя или IP-адрес.
Если компьютеры входят в один домен, можно указать имя компьютера (например SYSTEM46 ).
При указании полного доменного имени гарантируется правильная работа. Это локально определенная строка адреса, которая имеет различную форму в разных местах. Часто, но не всегда полное доменное имя представляет собой составное имя, состоящее из имени компьютера и нескольких компонентов доменов, разделенных точками, в следующем виде:
имя_компьютера . компонент_домена[. . компонент_домена]
Содержание и количество доменных сегментов определяется компанией или организацией. Полное доменное имя сервера можно узнать у системного администратора.
Дополнительные сведения об определении полного доменного имени см. в подразделе «Определение полного доменного имени» далее в этом разделе.
— порт, используемый конечной точкой зеркального отображения экземпляра сервера-участника. Сведения об определении конечной точки см. в разделе Создание конечной точки зеркального отображения базы данных с проверкой подлинности Windows (Transact-SQL).
Конечная точка зеркального отображения базы данных может использовать любой доступный порт. Номер каждого порта в компьютерной системе должен быть связан только с одной конечной точкой, а каждая конечная точка должна быть связана только с одним экземпляром сервера; таким образом, разные экземпляры сервера на одном и том же сервере прослушивают различные конечные точки через различные порты. Поэтому порт, указанный в сетевом адресе сервера при настройке сеанса зеркального отображения базы данных, будет всегда направлять сеанс к экземпляру сервера, конечная точка которого связана с этим портом.
Чтобы определить, какой порт в текущий момент связан с конечной точкой зеркального отображения базы данных экземпляра сервера, воспользуйтесь следующей инструкцией Transact-SQL :
Примеры
A. Использование имени системы
Б. Использование полного доменного имени
В. Использование IPv4
Г. Использование IPv6
Определение полного доменного имени
Чтобы определить полное доменное имя системы, введите следующую команду в командной строке Windows:
IPCONFIG /ALL
Чтобы сформировать полное доменное имя, следует сцепить значения и следующим образом:
Например, следующая конфигурация IP:
соответствует следующему полному доменному имени:
Примеры
Есть ли запрос в SQL Server 2005, который я могу использовать для получения IP-адреса или имени сервера?
ОТВЕТЫ
Ответ 1
Код здесь даст вам IP-адрес;
Это будет работать для удаленного запроса клиента на SQL 2008 и новее.
Если вы используете Разрешения для общей памяти, то выполнение выше на самом сервере даст вам
Ответ 2
Вы можете получить имя [hostname]\[instancename]:
Чтобы получить только имя хоста, если у вас есть имя хоста\формат имени экземпляра:
В качестве альтернативы, как @GilM указал:
Вы можете получить фактический IP-адрес, используя это:
Ответ 3
На сервере может быть несколько IP-адресов, которые он прослушивает. Если ваше соединение имеет разрешение сервера просмотра VIEW SERVER STATE, вы можете запустить этот запрос, чтобы получить адрес, который вы подключили к SQL Server:
Это решение не требует, чтобы вы выгружались в ОС через xp_cmdshell, что является методом, который должен быть отключен (или, по крайней мере, строго защищен) на рабочем сервере. Это может потребовать, чтобы вы предоставили статус просмотра VIEW SERVER соответствующему логину, но это гораздо меньший риск для безопасности, чем запуск xp_cmdshell.
Предпочтительная технология, упомянутая GilM для имени сервера:
Ответ 4
Ответ 5
Большинство решений для получения IP-адреса через t-sql попадают в эти два лагеря:
Запустите ipconfig.exe через xp_cmdshell и проанализируйте вывод
Запрос DMV sys.dm_exec_connections
Я не поклонник варианта №1. Включение xp_cmdshell имеет недостатки безопасности, и в этом случае много разбора. Это громоздко. Вариант № 2 элегантен. И это чистое решение t-sql, которое я почти всегда предпочитаю. Вот два примера запросов для опции № 2:
Иногда ни один из вышеперечисленных запросов не работает. Запрос №1 возвращает NULL, если вы подключены к общей памяти (зарегистрировались и запускали SSMS на хосте SQL). Запрос №2 может ничего не возвращать, если нет соединений с использованием протокола без общей памяти. Вероятно, этот сценарий связан с новым экземпляром SQL. Решение? Настройте соединение через TCP/IP. Для этого создайте новое соединение в SSMS и используйте префикс «tcp:» с именем сервера. Затем повторно запустите любой запрос, и вы получите IP-адрес.
Ответ 6
Ответ 7
Более простой способ получить имя машины без имени \InstanceName:
Ответ 8
вы можете использовать запрос командной строки и выполнить в mssql:
Ответ 9
— Попробуйте этот script, он работает для моих нужд. Переформатировать его.
Ответ 10
Я знаю, что это старый пост, но, возможно, это решение может быть полезно, когда вы хотите получить IP-адрес и TCP-порт из соединения с общей памятью (например, из script в SSMS локально на сервере). Ключ состоит в том, чтобы открыть дополнительное соединение с вашим SQL Server с помощью OPENROWSET, в котором вы указываете «tcp:» в своей строке подключения. Остальная часть кода просто создает динамический SQL, чтобы обойти ограничение OPENROWSET, неспособное принимать переменные в качестве параметров.
Is there a query in SQL Server 2005 I can use to get the server’s IP or name?
12 Answers 12
The code here Will give you the IP Address;
This will work for a remote client request to SQL 2008 and newer.
If you have Shared Memory connections allowed, then running above on the server itself will give you
‘client_net_address’ is the address of the computer that the request originated from, whereas ‘local_net_address’ would be the SQL server (thus NULL over Shared Memory connections), and the address you would give to someone if they can’t use the server’s NetBios name or FQDN for some reason.
I advice strongly against using this answer. Enabling the shell out is a very bad idea on a production SQL Server.
You can get the[hostname]\[instancename] by:
To get only the hostname when you have hostname\instance name format:
Alternatively as @GilM pointed out:
You can get the actual IP address using this:
The server might have multiple IP addresses that it is listening on. If your connection has the VIEW SERVER STATE server permission granted to it, you can run this query to get the address you have connected to SQL Server:
This solution does not require you to shell out to the OS via xp_cmdshell, which is a technique that should be disabled (or at least strictly secured) on a production server. It may require you to grant VIEW SERVER STATE to the appropriate login, but that is a far smaller security risk than running xp_cmdshell.
The technique mentioned by GilM for the server name is the preferred one:
Most solutions for getting the IP address via t-sql fall into these two camps:
Run ipconfig.exe via xp_cmdshell and parse the output
Query DMV sys.dm_exec_connections
I’m not a fan of option #1. Enabling xp_cmdshell has security drawbacks, and there’s lots of parsing involved anyway. That’s cumbersome. Option #2 is elegant. And it’s a pure t-sql solution, which I almost always prefer. Here are two sample queries for option #2:
Sometimes, neither of the above queries works, though. Query #1 returns NULL if you’re connected over Shared Memory (logged in and running SSMS on the SQL host). Query #2 may return nothing if there are no connections using a non-Shared Memory protocol. This scenario is likely when connected to a newly installed SQL instance. The solution? Force a connection over TCP/IP. To do this, create a new connection in SSMS and use the «tcp:» prefix with the server name. Then re-run either query and you’ll get the IP address.
Программирование на C, C# и Java
Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode
Как узнать имя сервера Microsoft SQL Server
Для выполнения запросов к локальной базе данных Microsoft SQL Server из программы необходимо знать имя экземпляра сервера. Из статьи вы узнаете, как его получить.
Способ первый. Самый надежный
В Microsoft SQL Server предусмотрен специальный SQL запрос, возвращающий имя экземпляра сервера:
Выполнив данный запрос, например, в SQL Server Management Studio, вы получите имя вашего экземпляра сервера.
В данном случае было возвращено имя установленного экземпляра Microsoft SQL Server равное: SQLEXPRESS.
Способ второй
Другим способом получения имени SQL-сервера является поиск записи службы SQL Server.
Запустите классическое приложение Windows “Службы” на вашем компьютере и найдите в списке служб объект SQL Server.
В скобках будет указано имя экземпляра.
В этом же меню можно остановить, запустить и перезапустить экземпляр установленного Microsoft SQL Server.
Стоит отметить, что второй способ получения имени сервера – менее достоверен. В скобках не всегда указано истинное имя сервера, пригодное для обращения к нему при подключении. Поэтому при наличии возможности лучше всего использовать первый способ получения имени с помощью SQL-запроса.







