Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Динамические запросы или однотипные ХП / 11 сообщений из 11, страница 1 из 1
07.06.2002, 16:46:31
    #32032108
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические запросы или однотипные ХП
Вопрос скорее теоретический. Кто как поступает в аналогичном случае?

Итак мне необходимо организовать некую стандартную последовательность команд для разных таблиц. Отличия заключаются только в именах таблиц и полей.

Собственно вариантов решения 2:

1. Создание динамического запроса
2. Создание своей копии ХП для каждой таблицы

Пока что в моей базе и количество таблиц, и длина кода ХП невелики. Однако, в будущем, вполне возможно их увеличение.

У кого, какие соображения по этому поводу?
...
Рейтинг: 0 / 0
07.06.2002, 17:01:50
    #32032115
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические запросы или однотипные ХП
Я стороник 2-го метода, т.к. при динамическом запросе придется пользователям давать непосредственные права на объекты
...
Рейтинг: 0 / 0
07.06.2002, 17:47:55
    #32032131
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические запросы или однотипные ХП
Хочу уточнить.

Под словами "Динамический запрос" я имел в виду одну ХП куда в качестве параметров передается имя таблицы и имя поля, а уже внутри этой ХП строится динамический запрос.
...
Рейтинг: 0 / 0
07.06.2002, 18:41:50
    #32032138
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические запросы или однотипные ХП
А какая разница - динамический запрос он везде динамический запрос.
...
Рейтинг: 0 / 0
10.06.2002, 11:42:05
    #32032241
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические запросы или однотипные ХП
Тогда разъясните, при чем здесь "права на объекты"

Я ведь не предполагаю динамическое создание ХП. Логика в данном случае примерно следующая:

CREATE PROCEDURE MyProc
@MyTable VarChar(100), @MyField VarChar(100)
AS

DECLRAE @cStr VarChar(1000)
SET @cStr='SELECT '+@MyField+' FROM '+@MyTable

EXECUTE (@cStr)

Необходимость в подобных ХП возникла вследствии относительно большого количества таблиц (справочники) при работе с которыми требуется выполниение абсолютно одинаковых действий.

Суть вопроса сводится к тому, имеет ли смысл отсавить такую логику работы или для каждой таблицы справочника написать свою копию ХП (это не триггеры, это именно ХП)
...
Рейтинг: 0 / 0
10.06.2002, 12:12:00
    #32032246
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические запросы или однотипные ХП
Для того, чтобы исполнить процедуру MyProc, придется обладать разрешением SELECT на таблицу @MyTable.

Удачи
...
Рейтинг: 0 / 0
10.06.2002, 16:04:16
    #32032313
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические запросы или однотипные ХП
Не могли бы Вы уточнить.

А если я буду писать явно процедуру для таблицы MyTable

CREATE PROCEDURE MyProc
AS
SELECT MyField FROM MyTable

Ведь и в этом случае требуется разрешение на таблицу MyTable.

В чем тогда разница?
...
Рейтинг: 0 / 0
10.06.2002, 16:16:51
    #32032319
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические запросы или однотипные ХП
Для такой процедуры

CREATE PROCEDURE dbo.MyProc
AS
SELECT MyField FROM dbo.MyTable

пользователю не нужны права на MyTable, т.к. внутри процедуры обращение к объектам идет от имени владельца процедуры(в данном случае dbo), а не от имени пользователя. А вот в случае динамического запроса - как раз наоборот.

ЗЫ
Почитайте в BOL про ownership chains
...
Рейтинг: 0 / 0
10.06.2002, 16:28:14
    #32032328
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические запросы или однотипные ХП
2 ВладимирМ
в Вашем случае требуется разрешение на процедуру MyProc
...
Рейтинг: 0 / 0
10.06.2002, 18:14:29
    #32032347
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические запросы или однотипные ХП
Если я правильно понял, то проблема с правами доступа связана с EXECUT. Хотя верный себе MicroSoft никак об этом не написал в "ownership chains"

В моем случае, это не имеет значения, поскольку ХП - предназначены для специфической модификации таблиц. Т.е. если пользователь к ним обратился, значит он работает в режиме модификации таблиц, следовательно имеет все нужные права.
...
Рейтинг: 0 / 0
10.06.2002, 19:45:31
    #32032355
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические запросы или однотипные ХП
>Если я правильно понял, то проблема с правами доступа
>связана с 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. "

>значит он работает в режиме модификации таблиц,
>следовательно имеет все нужные права.

Единственный "минус" - пользователь может модифицировать таблицу и не прибегая к помощи вашей процедуры, а, например, явным запросом. В этом случае, если ваша процедура содержит какую-никакую логику модификации, то эта логика, конечно же не "сработает"
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Динамические запросы или однотипные ХП / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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