|
|
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
Привет Всем! Имеется обыкновенная процедура. Внутри неё объявляется переменная, скажем так DECLARE @p1 varchar(10) SET @p1 = 'xxx' . . . Далее имеется 2-ая переменная, которой присваивается имя 1-ой переменной DECLARE @p2 varchar(10) SET @p2 = '@p1' . . . ВОПРОС Можно ли на основаниии переменной @p2 получить значение @p1 в 3-ю переменную ? PS SQL2000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2001, 14:01:36 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
Это типа сделать указатель, а потом его разыменовать ? )))) Люди, что ж вы с сиквелом-то пытаетесь делать ?!! Ну это же не сишник! Glory, это не к вам конкретно относится, это вообще крик души после регулярного чтения данного форума... А можно вопрос - для какой задачи понадобился такой вот изврат ? Нет, не так - такой ИЗВРАТ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2001, 15:01:10 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
Опишите задачу поподробнее, потому что желание очень странное, думается, что лучше сделать как-либо по другому. Напрямую сделать это нельзя, потому что sp_executesql и т.п. выполняются в своем контесте и не видят переменных объявленных у вас в коде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2001, 15:06:15 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
2 Andy: вообще-то можно передать в sp_executesql параметры, в том числе и переменные, объявленные во внешнем коде, например, declare @t int set @t = 123 exec sp_executesql N'select @t', N'@t int', @t = @t Можно их и выходными сделать, достаточно указать out при вызове sp_executesql. exec sp_executesql N'select @t', N'@t int out ', @t = @t out Правда, решению задачи Glory это не поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2001, 15:23:11 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
А задача в следующем Необходимо отслеживать запуски хранимых процедур с целью сбора стастики(в отдельную таблицу) о том, с какими параметрами они запускались. Можно конечно прописать все это непосредственно для каждой процедуры, но если девелопер поменяет что-то в параметрах, то .... Отсюда родилась идея каким-либо образом унифицировать это. Т.к. имя исполняемой процедуры известно, то не составляет труда получить из системных таблиц и список её парметров, а вот вычислить значения этих параметров .... Если я копаю не в том направлении и есть более легкие способы достичь нужного мне результата, то буду очень признателен за идеи и подсказки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2001, 07:05:06 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
Profiler не поможет ? Там есть возможность записи лога в таблицу. И если его настроить поточнее, то в логе будет не так много лишней информации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2001, 10:46:19 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
Попробовал Profiler 1. Все равно придется устраивать разбор строки запуска процедуры 2. Странно, но для Application под именем JSQL (это Java приложение соединяется через JDBC) событие SP:Starting наступает, а информации в TextData нет - т.е. не понятно даже какая процедурв запускается Так что роблема не в лишней информации, а как раз в её отсутствии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2001, 14:54:29 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
Как оформлен запуск: как CMD или RPC? Просто RPC-это для сервера отдельный класс событий. Раньше Вашу задачу рещить было бы достаточно просто. Но где, где теперь SRV_HANDLE() or SRV_PRE_HANDLE()??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2001, 17:02:42 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
Насколько я знаю, как CMD. Правда developer сказал, что этот "класс от 3-го производителя". Да и я ведь отслеживаю событие SP:Starting, в а не RPC:Starting. Кстати, вот в BOL нашел "srv_paramdata Returns the value of a remote stored procedure call parameter. Important This Open Data Services function or macro is only supported in Microsoft® SQL Server™ 2000 for backward compatibility. For more information about Open Data Services functions or macros supported for backward compatibility, see Open Data Services (Level 3). Syntax void * srv_paramdata ( SRV_PROC * srvproc, int n ); Arguments srvproc Is a pointer to the SRV_PROC structure that is the handle for a particular client connection (in this case, the handle that received the remote stored procedure call). The structure contains information the ODS Library uses to manage communication and data between the Open Data Services server application and the client. n Is the number of the parameter. The first parameter is number 1. Returns A pointer to the parameter value. If the nth parameter is NULL, there is no nth parameter, or there is no remote stored procedure, returns NULL. If the parameter value is a string, it might not be null-terminated. Use srv_paramlen to determine the length of the string. This function returns the following values, if the parameter is one of the SQL Server data types. Pointer data includes whether the pointer for the data type is valid (VP), NULL, or not applicable (N/A), and the contents of the data pointed to. " Это вообще к чему относится - надо что ли свою .dll(или еще чего нибудь подобное) создавть и регистрировать как extended stored procedure ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2001, 15:22:46 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
Это совсем из другой оперы - создание extended stored proc. В сиквеле поддерживается возможность подключения продедур, написанных на других языках (например, С). Ваяешь dll'ку, в ней пишешь функцию, в которой по определенным соглашениям работаешь с данными, экпортируешь эту функцию и юзаешь ее в сиквеле как обычную stored proc. Короче, к вашей проблеме это не имеет никакого отношения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2001, 15:39:30 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
Популярно: До 2000 был ODS, теперь это только Extended Proc's. При выполнении запроса к серверу обрабатываются либо событие Language, либо RPC. Раньше Вы могли "навесить" свой обработчик события, к-ый, например, мог вести журнал. Как он был бы оформлен: в виде XP или ЕХЕ - почти всё равно. Разбор события RPC гораздо проще, тем более, Вы видите, что работа с параметрами вынесена в отдельные функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2001, 17:02:00 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
Fompro, а Вы не подскажете, где в BOL почитать про свой обработчик события - как он пишется и куда его, собственно, цеплять ? Как это делается в dblibrary, я представляю. Но как такой обработчик повесить на сервер, чтобы он как профайлер ловил события ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2001, 06:22:49 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
Как пользоваться Profiler-ом достаточно подробно описано в книжке Мамаева. На стр.760 описано, как создать события, определяемые пользователем. Вкратце - делается это с помощью sp_generateevent [@eventid=] event_id, [, [ @userinfo=] 'user_info', [, [ @userdata=] userdata]. @eventid задается в пределах 82-91, что соответствует диапазону UserConfigurable 0-9. Два остальных параметра (nvarchar(12 и varbinary(8000) ) - произвольная информация для трассировки, выводимая в окне Profiler. Ловить эти события в Profiler нужно в категории UserConfigurable. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2001, 07:16:15 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
Ради бога извините, влепил постинг не в ту ветку... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2001, 07:17:25 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
Да нет же, оказывается, в ту... Мой постинг - ответ на вопрос GreenSunrise. Просто обсуждение уже зашло далеко от темы изначально заданного вопроса... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2001, 07:21:25 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
1. Повторюсь - OPENDS60.DLL, включённая в 2000-к эти возможности не поддкрживает. 2. BOL особенно-то не расписывает КАК надо делать, там указано ЧЕМ пользоваться. Лучше всего посмотреть примеры ODS: Procsrv & Gateway. BOL опять-таки 6.5 или 7.0 Посмотрите "Event Management" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2001, 18:33:48 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
To Glory : "... Необходимо отслеживать запуски хранимых процедур с целью сбора стастики(в отдельную таблицу) о том, с какими параметрами они запускались. Можно конечно прописать все это непосредственно для каждой процедуры, но если девелопер поменяет что-то в параметрах, то ...." Glory , napishite pls chto y vac polychilos" , y menia ta she problema ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2002, 23:38:37 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
Пришлось повторить в каждой процедуре блок записи в лог-таблицу и обязать программистов при исправлении процедуры исправлять и эту часть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2002, 10:07:43 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
a pochemy ne ispol"zovali srv_paramdata ili sp_trace_generateevent , sp_trace_create etd ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2002, 17:03:59 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
B зачем так насиловать SQL сервер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2002, 17:16:29 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
Решение в общем-то правильное. Но заставить программистов, что либо делать правильно, задача практически невыполнимая. :) Можно поступить так. Сделать процедуру, которая пробегает по syscomments и достаёт оттуда текст процедур. Далее она парсит процедуру на предмет комментариев с фиксированным текстом, например --begin audit --end audit Всё, что необходимо для аудита формируется на основании sysobjects и syscolumns и пихается между этими комментариями. Далее полученный текст запускается на исполнение через EXECUTE(). Лучше всего поставить эту процедуру в job и запускать где-то в районе 6:00, когда все программисты и пользователи уже спят. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2002, 18:49:26 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
2Nastasia a pochemy ne ispol"zovali srv_paramdata Потому-что решили использовать только T-SQL ili sp_trace_generateevent , sp_trace_create etd ? Получится то же самое, т.е. все равно в каждой процедуре нужно добавить вызов уже sp_trace_generateevent 2akuz Можно чуть попроще. Т.к. лог это две таблицы, первая с именем процедуры (и др.данными), а вторая - входные параметры с их значениями, то остается просто сравнить вызов процедуры с INFORMATION_SCHEMA.PARAMETERS на предмет различий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2002, 23:09:25 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
Glory, Вам конечно видней. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2002, 10:29:02 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
повесь тригер на sysobjects.... отслеживай создание процедур.... пересоздавай процки с имя_процедуры;2 создай свою с таким же именем и параметрами и в тексте вызывай имя;2..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2002, 10:43:56 |
|
||
|
Значение переменной по её имени ?
|
|||
|---|---|---|---|
|
#18+
yvashaemie Guru ! y menia poxoshaia problema , no problema v tom chto est' interaface gde vibitaytcia imena SP dlia audita ( nyshno polychit" table Audit s sp names and parameters (value called ) ne kak ne mogy razobratcia kak mne zapicivat' v Audit ne vce vizivaemie proceduri a tol'ko te chto zaprocil dlia audita user . P.S profiler reshili ne ispol'zovat' , xotia rabotaet xorosho :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 19:46:03 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3382&tid=1819012]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
84ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 424ms |

| 0 / 0 |
