|
|
|
Динамические запросы или однотипные ХП
|
|||
|---|---|---|---|
|
#18+
Вопрос скорее теоретический. Кто как поступает в аналогичном случае? Итак мне необходимо организовать некую стандартную последовательность команд для разных таблиц. Отличия заключаются только в именах таблиц и полей. Собственно вариантов решения 2: 1. Создание динамического запроса 2. Создание своей копии ХП для каждой таблицы Пока что в моей базе и количество таблиц, и длина кода ХП невелики. Однако, в будущем, вполне возможно их увеличение. У кого, какие соображения по этому поводу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2002, 16:46:31 |
|
||
|
Динамические запросы или однотипные ХП
|
|||
|---|---|---|---|
|
#18+
Я стороник 2-го метода, т.к. при динамическом запросе придется пользователям давать непосредственные права на объекты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2002, 17:01:50 |
|
||
|
Динамические запросы или однотипные ХП
|
|||
|---|---|---|---|
|
#18+
Хочу уточнить. Под словами "Динамический запрос" я имел в виду одну ХП куда в качестве параметров передается имя таблицы и имя поля, а уже внутри этой ХП строится динамический запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2002, 17:47:55 |
|
||
|
Динамические запросы или однотипные ХП
|
|||
|---|---|---|---|
|
#18+
А какая разница - динамический запрос он везде динамический запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2002, 18:41:50 |
|
||
|
Динамические запросы или однотипные ХП
|
|||
|---|---|---|---|
|
#18+
Тогда разъясните, при чем здесь "права на объекты" Я ведь не предполагаю динамическое создание ХП. Логика в данном случае примерно следующая: CREATE PROCEDURE MyProc @MyTable VarChar(100), @MyField VarChar(100) AS DECLRAE @cStr VarChar(1000) SET @cStr='SELECT '+@MyField+' FROM '+@MyTable EXECUTE (@cStr) Необходимость в подобных ХП возникла вследствии относительно большого количества таблиц (справочники) при работе с которыми требуется выполниение абсолютно одинаковых действий. Суть вопроса сводится к тому, имеет ли смысл отсавить такую логику работы или для каждой таблицы справочника написать свою копию ХП (это не триггеры, это именно ХП) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2002, 11:42:05 |
|
||
|
Динамические запросы или однотипные ХП
|
|||
|---|---|---|---|
|
#18+
Для того, чтобы исполнить процедуру MyProc, придется обладать разрешением SELECT на таблицу @MyTable. Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2002, 12:12:00 |
|
||
|
Динамические запросы или однотипные ХП
|
|||
|---|---|---|---|
|
#18+
Не могли бы Вы уточнить. А если я буду писать явно процедуру для таблицы MyTable CREATE PROCEDURE MyProc AS SELECT MyField FROM MyTable Ведь и в этом случае требуется разрешение на таблицу MyTable. В чем тогда разница? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2002, 16:04:16 |
|
||
|
Динамические запросы или однотипные ХП
|
|||
|---|---|---|---|
|
#18+
Для такой процедуры CREATE PROCEDURE dbo.MyProc AS SELECT MyField FROM dbo.MyTable пользователю не нужны права на MyTable, т.к. внутри процедуры обращение к объектам идет от имени владельца процедуры(в данном случае dbo), а не от имени пользователя. А вот в случае динамического запроса - как раз наоборот. ЗЫ Почитайте в BOL про ownership chains ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2002, 16:16:51 |
|
||
|
Динамические запросы или однотипные ХП
|
|||
|---|---|---|---|
|
#18+
2 ВладимирМ в Вашем случае требуется разрешение на процедуру MyProc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2002, 16:28:14 |
|
||
|
Динамические запросы или однотипные ХП
|
|||
|---|---|---|---|
|
#18+
Если я правильно понял, то проблема с правами доступа связана с EXECUT. Хотя верный себе MicroSoft никак об этом не написал в "ownership chains" В моем случае, это не имеет значения, поскольку ХП - предназначены для специфической модификации таблиц. Т.е. если пользователь к ним обратился, значит он работает в режиме модификации таблиц, следовательно имеет все нужные права. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2002, 18:14:29 |
|
||
|
Динамические запросы или однотипные ХП
|
|||
|---|---|---|---|
|
#18+
>Если я правильно понял, то проблема с правами доступа >связана с EXECUT. Хотя верный себе MicroSoft никак об этом >не написал в "ownership chains" Про это написано в BOL про формат EXECUTE "When a stored procedure is run that executes a string, permissions are checked in the context of the user who executes the procedure, not in the context of the user who created the procedure. " >значит он работает в режиме модификации таблиц, >следовательно имеет все нужные права. Единственный "минус" - пользователь может модифицировать таблицу и не прибегая к помощи вашей процедуры, а, например, явным запросом. В этом случае, если ваша процедура содержит какую-никакую логику модификации, то эта логика, конечно же не "сработает" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2002, 19:45:31 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3467&tid=1822418]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 331ms |

| 0 / 0 |
