powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / А знаете ли вы ? (третье
7 сообщений из 7, страница 1 из 1
А знаете ли вы ? (третье
    #32022551
ChA+
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
... по крайней мере, на тему недокументированных функций)
В прошлый раз я упомянул о том, что был найден ряд имен недокументированных
функций для SQL2K, которые тот отказался признавать за свои. При более
тщательном изучении выяснилось, что некоторые из этих функций вызываются
с помощью "хитрого способа", как то {fn function1()}.
Далее идет список функций, которые таки заработали вполне адекватно:
-- Функции для работы с датой/временем(смысл очевиден)
select {fn curdate()} -- текущая дата to varchar
select {fn curtime()}
select {fn dayofyear(current_timestamp)}
select {fn dayname(current_timestamp)}
select {fn dayofmonth(current_timestamp)}
select {fn dayofweek(current_timestamp)}
select {fn monthname(current_timestamp)}
select {fn minute(current_timestamp)}
select {fn week(current_timestamp)}
select {fn quarter(current_timestamp)}
select {fn hour(current_timestamp)}
select {fn second(current_timestamp)}
/* Константы для timestamp* SQL_TSI_YEAR, SQL_TSI_QUARTER, SQL_TSI_MONTH, SQL_TSI_WEEK, SQL_TSI_DAY, SQL_TSI_HOUR, SQL_TSI_MINUTE, SQL_TSI_SECOND, SQL_TSI_FRAC_SECOND */
select {fn timestampadd(SQL_TSI_YEAR, 1, current_timestamp)}
select {fn timestampdiff(SQL_TSI_DAY, current_timestamp + 1, current_timestamp)}

-- Разные функции
select {fn intersectbitmaps(0x0E, 0x01)} -- bitmap AND
select {fn bit_length(5)} -- Длина аргумента в битах
select {fn octet_length(N'asd')} -- Длина аргумента в байтах
select {fn concat('a', 'b')} -- конкатенация строк
select {fn ifnull(null, 0)}
SELECT encrypt('абв abc') -- простая конвертация (параметр -> varchar -> nvarchar as varbinary)
SELECT encrypt_a('абв abc') /* более хитрая, decrypt явно сделать сложнее, но похоже ненамного, может кому-то не в "облом" Кстати, decrypt и decrypt_a тоже существуют, но вызвать их не удалось */
get_sid, pwdcompare и подобные не поминаю, о них не знает только ленивый.

В целом, ничего особо полезного, почти все можно можно получить комбинацией
документированных, или соотвествующими параметрами в них(datepart, например).
Скорее познавательно, чем полезно. Кстати, были "обнаружены" недокументированные
команды для DBCC, но, скорее всего, их полезность ненамного превышает полезность
найденных функций, из которых более-менее любопытной мне лично показалась GetDefault,
описанная в прошлый раз.

Благодарю за внимание

P.S. Есть еще несколько функций, суть которых, или тип параметров остался загадкой,
они приводятся ниже. Желающие могут поупражняться на досуге, буде таковой
наступит, и, в случае удачи, поделиться с остальными.
-- Совершенно непонятные функции
select {fn rangepartition(1, 2, 3, 4, 5)} /* сервер рубит коннект практически при любых значениях, хоть какая, а может и польза , кстати параметров может быть больше, чем пять */
select {fn likerangeinfo(1, 2)}
select {fn likerangeend(1, 2)}
SELECT {fn likerangestart(1, 2)} /* Название всех 3 звучит, но в качестве типа первого параметра должен быть void, просто песня */

-- Функции, явно для работы с потоками, у всех один параметр
select {fn gettext(1)}
select {fn getntext(1)}
select {fn getimage(1)}

Есть еще и {fn uniqfrombmk()}, смысл также покрыт мраком

Удачи !

P.P.S. Для Гладченко, сугубо, имеет ли смысл такая информация ?
Или каждый держит при себе то, что, случайно или целенаправленно
нарыл ? Если второе, то подобной инициативы я проявлять в дальнейшем
не буду, дабы не вызывать раздражения. Кстати, во втором АЗЛВ, была,
IMHO, достаточно интересная информация...
...
Рейтинг: 0 / 0
А знаете ли вы ? (третье
    #32022553
Almi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, а почему недокументированные функции вообще существуют?
В чем интерес производителя их не заявлять?
Может они криво работают?
...
Рейтинг: 0 / 0
А знаете ли вы ? (третье
    #32022565
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Информация - это объективная реальность. Одно то, что она есть уже о чём то говорит... Если есть не документированные возможности, значит они для чего - то и кому - тонужны. Поэтому, совершенно оправдано выдавать эту информацию для публикации, а уж как её применять или не применять, это должен решать для себя каждый, кто с этой информацией ознакомился.
Что же касается опасности использования не документированных возможностей, это факт и его нельзя не учитывать. Опять же, если кто - то от Вас что - то прячет, значит у него на это были основания...
...
Рейтинг: 0 / 0
А знаете ли вы ? (третье
    #32022566
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу второго АЗЛВ, он действительно был очень интересен...
Заодно спрошу, что-нибудь по поводу использующих MSMQ процедур удалось выяснить?
...
Рейтинг: 0 / 0
А знаете ли вы ? (третье
    #32022574
ChA+
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Almi
Недокументированные функции существуют практически в любой более-менее
сложной коммерческой системе. Их "невидимость" для большинства пользователей
определяется соображениями разработчиков системы. Особенно этим "грешила"
фирма Microsoft, в частности, полной описание WinAPI мировая общественность
добивалась много лет, постоянно находя какие-то функции с загадочными
наименованиями. Вообще эта тема пространная и на данном форуме, пожалуй,
смысла не имеет. Но обычно ничего криминального в использовании таких
функций нет, так как рано или поздно эти функции либо становятся общеизвестными
и публикуемыми, либо, что значительно реже, исчезают в последующих версиях
программных продуктов. Яркий пример: функция has_dbaccess существовала уже,
по крайней мере, в SQL7, но в BOL официально появилась только в SQL2K. А ее
полезность, IMHO, безусловна.

2Гладченко
Насчет оснований иметь, но прятать, сразу вспоминается троянский конь, настоящий,
а не вирус. Чем кончилась такая "недокументированность" для троянцев, полагаю, все
помнят
По поводу MSMQ, покопавшись в разных источниках, включая MSDN и прочая, выяснилось,
что вещь действительно классная, но реально ее можно использовать в WIN2000, по
крайней мере, в предыдущих весиях, если я правильно понял, в домене должен быть
MSMQ-сервер, а на остальных MSMQ-клиент, а это объективное усложнение, так как пока
еще хватает Win98 клиентов и WinNT4 серверов. Так как "лихой налет" не получился, то
на данном этапе интерес к ней пропал и будет реанимирован не ранее через год.
Как я и ожидал, на вопрос о процедурах ответ получен не был, на что, IMHO, есть
несколько причин. Первая - многие, увидев тот же заголовок(АЗЛВ), наверняка сообщение
пропустили, есть подозрение, что и Вы то же , не обратив на число откликов, коих было
0, во-вторых, вряд ли многие тщательно копались в системных процедурах, и в-третьих,
возникло подозрение, что функции эти, в настоящей редакции, сильно "заточены" под задачи
репликации.
Тем не менее, вполне реально использовать MSMQ уже сейчас через вызовы sp_OA_*, если на
хосте есть соотвествующие OLE-объекты. Можно найти много примеров их использования в VB...

С уважением
...
Рейтинг: 0 / 0
А знаете ли вы ? (третье
    #32022628
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема MSMQ меня интересует довольно давно, и мне кажется, что эти возможности используются ещё очень слабо. Вот выдержка из самого первого номера рассылки:

Microsoft Message Queue Server - прекрасный инструмент для организации обмена данными в распределённых системах, когда время обмена не является решающим фактором. MSMQ использует очереди запросов, а прикладные программы, вызывая методы MSMQ, получают возможность помещать данные в эти очереди.
В многопользовательских системах MSMQ может использоваться для организации асинхронных запросов к СУБД. Другим вариантом использования MSMQ является организация запросов к базам данных через сервер приложений. Причём, даже если Ваш SQL сервер и сервер приложений располагаются в сети по разные стороны от firewall, MSMQ предоставляет механизм организации работы пользователей через сервер приложений с базами данных SQL сервера. Использование MSMQ обеспечивает независимость пользователей от состояния сервера баз данных. Поскольку запросы ожидают обслуживания в не зависящей от СУБД очереди, даже перезагрузка сервера не помешает пользователю в получении результатов запроса. Использование в архитектуре MSMQ подобного DCOM механизма позволяет разработчикам создавать приложения, которые выполняется на клиентской системе, но и могут вызывать методы используемого объекта на других системах. MSMQ работает как шина запросов. Клиентское ПО выставляет запрос на эту шину, а имеющиеся СУБД слушают эту шину и обрабатывают свои задания.
...
Рейтинг: 0 / 0
А знаете ли вы ? (третье
    #32022674
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Описание к упоминаемым Вами функциям надо искать в документации по OLE DB/ODBC, о чем, кстати, сообщается в BOL (OLE DB and SQL Server -> Commands -> Command Syntax). В BOL они не документированы, потому что трудно себе представить, что кому-то из T-SQL скрипта придет в голову вызывать ODBC SQL. Единственый реальный пример их использования, с к-м доводилось столкнуться, - в Member Name / Key автоматически сгенеренного временного измерения, когда операционным источником является не SQL Server (напр., Oracle).
MSMQ-процедуры, по-видимому, обусловлены появлением в 2000-м Queued Updating Subscriber, который может создавать очереди на основе таблиц, а может пользоваться уже готовыми из MSMQ. Кстати, неверно утверждение, что "реально MSMQ можно использовать только на Win 2000". Просто в 2000-м он хранит информацию об очередях и маршрутизации в AD (по большому счету AD ему не нужна, если вы адресуете сообщение в априори заданную очередь), а под NT 4.0 (еще когда Message Queueing Service назывался соколом, а СОМ+ - гадюкой) - в БД SQL Server (6.5 и выше).
Я не понимаю раздутый ажиотаж вокруг этой тематики. Ну то есть на с.д. понятно, если какой-нибудь Бабаев напишет книжку типа "Недокументированные возм-ти SQL Server". Его задача - впарить свое псиво максимальному кол-ву чайников. Но вы-то профессионалы. Да, иногда в силу разного ряда обстоятельств не удается атрибутировать подсобную функциональность как private, protected или internal, это же не значит автоматически, что в ней имплементированы ключи к тайнам бытия.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / А знаете ли вы ? (третье
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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