Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
А знаете ли вы ? (третье
|
|||
|---|---|---|---|
|
#18+
... по крайней мере, на тему недокументированных функций) В прошлый раз я упомянул о том, что был найден ряд имен недокументированных функций для 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, достаточно интересная информация... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2002, 23:46 |
|
||
|
А знаете ли вы ? (третье
|
|||
|---|---|---|---|
|
#18+
Интересно, а почему недокументированные функции вообще существуют? В чем интерес производителя их не заявлять? Может они криво работают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2002, 09:49 |
|
||
|
А знаете ли вы ? (третье
|
|||
|---|---|---|---|
|
#18+
Информация - это объективная реальность. Одно то, что она есть уже о чём то говорит... Если есть не документированные возможности, значит они для чего - то и кому - тонужны. Поэтому, совершенно оправдано выдавать эту информацию для публикации, а уж как её применять или не применять, это должен решать для себя каждый, кто с этой информацией ознакомился. Что же касается опасности использования не документированных возможностей, это факт и его нельзя не учитывать. Опять же, если кто - то от Вас что - то прячет, значит у него на это были основания... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2002, 13:37 |
|
||
|
А знаете ли вы ? (третье
|
|||
|---|---|---|---|
|
#18+
По поводу второго АЗЛВ, он действительно был очень интересен... Заодно спрошу, что-нибудь по поводу использующих MSMQ процедур удалось выяснить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2002, 14:21 |
|
||
|
А знаете ли вы ? (третье
|
|||
|---|---|---|---|
|
#18+
2Almi Недокументированные функции существуют практически в любой более-менее сложной коммерческой системе. Их "невидимость" для большинства пользователей определяется соображениями разработчиков системы. Особенно этим "грешила" фирма Microsoft, в частности, полной описание WinAPI мировая общественность добивалась много лет, постоянно находя какие-то функции с загадочными наименованиями. Вообще эта тема пространная и на данном форуме, пожалуй, смысла не имеет. Но обычно ничего криминального в использовании таких функций нет, так как рано или поздно эти функции либо становятся общеизвестными и публикуемыми, либо, что значительно реже, исчезают в последующих версиях программных продуктов. Яркий пример: функция has_dbaccess существовала уже, по крайней мере, в SQL7, но в BOL официально появилась только в SQL2K. А ее полезность, IMHO, безусловна. 2Гладченко Насчет оснований иметь, но прятать, сразу вспоминается троянский конь, настоящий, а не вирус. Чем кончилась такая "недокументированность" для троянцев, полагаю, все помнят По поводу MSMQ, покопавшись в разных источниках, включая MSDN и прочая, выяснилось, что вещь действительно классная, но реально ее можно использовать в WIN2000, по крайней мере, в предыдущих весиях, если я правильно понял, в домене должен быть MSMQ-сервер, а на остальных MSMQ-клиент, а это объективное усложнение, так как пока еще хватает Win98 клиентов и WinNT4 серверов. Так как "лихой налет" не получился, то на данном этапе интерес к ней пропал и будет реанимирован не ранее через год. Как я и ожидал, на вопрос о процедурах ответ получен не был, на что, IMHO, есть несколько причин. Первая - многие, увидев тот же заголовок(АЗЛВ), наверняка сообщение пропустили, есть подозрение, что и Вы то же , не обратив на число откликов, коих было 0, во-вторых, вряд ли многие тщательно копались в системных процедурах, и в-третьих, возникло подозрение, что функции эти, в настоящей редакции, сильно "заточены" под задачи репликации. Тем не менее, вполне реально использовать MSMQ уже сейчас через вызовы sp_OA_*, если на хосте есть соотвествующие OLE-объекты. Можно найти много примеров их использования в VB... С уважением ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2002, 00:22 |
|
||
|
А знаете ли вы ? (третье
|
|||
|---|---|---|---|
|
#18+
Тема MSMQ меня интересует довольно давно, и мне кажется, что эти возможности используются ещё очень слабо. Вот выдержка из самого первого номера рассылки: Microsoft Message Queue Server - прекрасный инструмент для организации обмена данными в распределённых системах, когда время обмена не является решающим фактором. MSMQ использует очереди запросов, а прикладные программы, вызывая методы MSMQ, получают возможность помещать данные в эти очереди. В многопользовательских системах MSMQ может использоваться для организации асинхронных запросов к СУБД. Другим вариантом использования MSMQ является организация запросов к базам данных через сервер приложений. Причём, даже если Ваш SQL сервер и сервер приложений располагаются в сети по разные стороны от firewall, MSMQ предоставляет механизм организации работы пользователей через сервер приложений с базами данных SQL сервера. Использование MSMQ обеспечивает независимость пользователей от состояния сервера баз данных. Поскольку запросы ожидают обслуживания в не зависящей от СУБД очереди, даже перезагрузка сервера не помешает пользователю в получении результатов запроса. Использование в архитектуре MSMQ подобного DCOM механизма позволяет разработчикам создавать приложения, которые выполняется на клиентской системе, но и могут вызывать методы используемого объекта на других системах. MSMQ работает как шина запросов. Клиентское ПО выставляет запрос на эту шину, а имеющиеся СУБД слушают эту шину и обрабатывают свои задания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2002, 09:17 |
|
||
|
А знаете ли вы ? (третье
|
|||
|---|---|---|---|
|
#18+
Описание к упоминаемым Вами функциям надо искать в документации по 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, это же не значит автоматически, что в ней имплементированы ключи к тайнам бытия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2002, 13:44 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32022551&tid=1823960]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 289ms |
| total: | 455ms |

| 0 / 0 |
