powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как узнать текущий SERVERNAME?
17 сообщений из 17, страница 1 из 1
Как узнать текущий SERVERNAME?
    #36393429
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Столкнулся с такой проблемой. Как узнать текущий SERVERNAME через SQL?
Встроенная переменная SITENAME выдаёт только DBSERVERNAME, то есть основное имя сервера,
даже если соединение идет через один из алиасов, указанных через DBSERVERALIASES.
В опциях onstat-а и системных таблицах не нашел (может, плохо искал).

С уважением,
Виктор
...
Рейтинг: 0 / 0
Как узнать текущий SERVERNAME?
    #36394230
svat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
victor16,
м.б. подойдет поле os_nodename
в выводе команды
echo "select * from sysmachineinfo ;" | dbaccess sysmaster
?
...
Рейтинг: 0 / 0
Как узнать текущий SERVERNAME?
    #36394492
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
victor16Столкнулся с такой проблемой. Как узнать текущий SERVERNAME через SQL?
Встроенная переменная SITENAME выдаёт только DBSERVERNAME, то есть основное имя сервера,
даже если соединение идет через один из алиасов, указанных через DBSERVERALIASES.
В опциях onstat-а и системных таблицах не нашел (может, плохо искал).

Никогда такого не видел ранее, правда до 10 версии.
Зайдем с другой стороны, как часто учим новичков :) - А зачем это надо ? Может найдется альтернативный путь решения проблемы ?
...
Рейтинг: 0 / 0
Как узнать текущий SERVERNAME?
    #36394521
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Иногда бывает необходимо удаленно cгенерить и выполнить скрипт типа:
Код: plaintext
1.
2.
3.
4.
5.
SELECT "SELECT * FROM " || SITENAME || ":" || trim(odb_dbname) || trim(tabname) || ";"
FROM sysmaster:sysopendb, systables
WHERE odb_sessionid=dbinfo('sessionid') 
AND odb_iscurrent='Y'
AND tabtype = "T" AND tabid>= 99  AND <other_conditions>;
Конфигурационный параметр DBSERVERNAME настроен только на соединения, предназначенные для HDR, HDR работает только через внутренний сетевой интерфейс.
Все клиентские соединения идут через алиасы (DBSERVERALIASES), которые настроены на другую подсетку. Соответственно, после генерации скрипта его приходится обрабатывать через awk, чтобы скрипт был работоспособным. Честно говоря, надеялся, что это RTFM...

С уважением,
Виктор
...
Рейтинг: 0 / 0
Как узнать текущий SERVERNAME?
    #36394543
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
victor16Конфигурационный параметр DBSERVERNAME настроен только на соединения, предназначенные для HDR, HDR работает только через внутренний сетевой интерфейс.
Все клиентские соединения идут через алиасы (DBSERVERALIASES), которые настроены на другую подсетку.
Идеологически я бы сделал наоборот, т.е. служебные соединения определял бы через алиасы.
Но сейчас, конечно, гемороя при изменении не избежать.
Кстати, а синонимами на другой сервер воспользоваться в данном случае нельзя ?
...
Рейтинг: 0 / 0
Как узнать текущий SERVERNAME?
    #36394561
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, синонимы в данном случае бесполезны.
Ну что ж, если не RTFM, тогда лучше оставить все как есть.
...
Рейтинг: 0 / 0
Как узнать текущий SERVERNAME?
    #36394568
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
svat2victor16,
м.б. подойдет поле os_nodename
в выводе команды
echo "select * from sysmachineinfo ;" | dbaccess sysmaster
?
Нет, это аналогично dbinfo("dbhostname")
...
Рейтинг: 0 / 0
Как узнать текущий SERVERNAME?
    #36560474
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
похоже, в IBM-е признали ...

IC59361: DISTRIBUTED TRANSACTION COORDINATOR IS DBSERVERNAME, SHOULD BE ACTUAL CONNECTION

С уважением,
Виктор
...
Рейтинг: 0 / 0
Как узнать текущий SERVERNAME?
    #36560561
zaiets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
victor16Иногда бывает необходимо удаленно cгенерить и выполнить скрипт типа:
Код: plaintext
1.
2.
3.
4.
5.
SELECT "SELECT * FROM " || SITENAME || ":" || trim(odb_dbname) || trim(tabname) || ";"
FROM sysmaster:sysopendb, systables
WHERE odb_sessionid=dbinfo('sessionid') 
AND odb_iscurrent='Y'
AND tabtype = "T" AND tabid>= 99  AND <other_conditions>;
Конфигурационный параметр DBSERVERNAME настроен только на соединения, предназначенные для HDR, HDR работает только через внутренний сетевой интерфейс.
Все клиентские соединения идут через алиасы (DBSERVERALIASES), которые настроены на другую подсетку. Соответственно, после генерации скрипта его приходится обрабатывать через awk, чтобы скрипт был работоспособным. Честно говоря, надеялся, что это RTFM...

С уважением,
Виктор

Что вам мешает в клиентском окружении в sqlhosts прописать параметры конекта к серверу информикс таким образом, чтобы имя сервера информикс = DBSERVERNAME
Информикс не проверяет привязку имени сервера к порту, главное чтобы имя севера было перечислено в DBSERVERNAME или в DBSERVERALIASES ну и соответственно листенер висел для нужного порта.

На последних версиях не проверял, но на 9.40 было точно - для настройки репликакации HDR указываешь в sqlhosts имя сервера от фонаря но с правильными другими полями и все как-то работает.
...
Рейтинг: 0 / 0
Как узнать текущий SERVERNAME?
    #36560705
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работать оно, конечно, будет, но что-то мне подсказывает, что переменная SITENAME в селекте все равно будет указывать на параметр DBSERVERNAME из онконфига.

С уважением,
Виктор
...
Рейтинг: 0 / 0
Как узнать текущий SERVERNAME?
    #36560853
zaiets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Правильно, указывать будет на DBSERVENAME.

Никто не мешает использовать для соединения одно и тоже имя сервера информикс во всех подсетях.

То, что прописано на самом сервере - это лишь для конектов на самом сервере и запуска листенеров - снова же на сервере.

На клиенте можешь прописывать имя сервера любое в настройках, лишь бы оно было указано в DBSERVENAME и DBSERVERALIASES.

Если на всех клиентах имя сервера определять как DBSERVENAME а параметрі соединения как соответствующие серверам в DBSERVERALIASES на сервере, то подобній вопрос вообще не возник бі.
...
Рейтинг: 0 / 0
Как узнать текущий SERVERNAME?
    #36561571
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вы уверены, что это будет работать при доступе из разных сетевых интерфейсов?
...
Рейтинг: 0 / 0
Как узнать текущий SERVERNAME?
    #36561648
zaiets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если б не работало - не писал бы.
...
Рейтинг: 0 / 0
Как узнать текущий SERVERNAME?
    #36561650
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, вроде работает. Остается решить вопрос для локальных соединений.
...
Рейтинг: 0 / 0
Как узнать текущий SERVERNAME?
    #36561659
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Соединяется только по tcp-протоколу, по ssl - увы.
Но все равно, спасибо.
...
Рейтинг: 0 / 0
Как узнать текущий SERVERNAME?
    #36561662
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очевидно, что через Connection Manager тоже не будет работать.
...
Рейтинг: 0 / 0
Как узнать текущий SERVERNAME?
    #36561739
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Через SSL тоже заработало, правда, пришлось перегенерить сертификаты. С локальными соединениями тоже решилось через переменную окружения INFORMIXSQLHOSTS. Осталось только тоже самое сделать через Connection Manager.
По-любому, спасибо за решение.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как узнать текущий SERVERNAME?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]