powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Динамические запросы или однотипные ХП
11 сообщений из 11, страница 1 из 1
Динамические запросы или однотипные ХП
    #32032108
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос скорее теоретический. Кто как поступает в аналогичном случае?

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

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

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

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

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

Под словами "Динамический запрос" я имел в виду одну ХП куда в качестве параметров передается имя таблицы и имя поля, а уже внутри этой ХП строится динамический запрос.
...
Рейтинг: 0 / 0
Динамические запросы или однотипные ХП
    #32032138
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какая разница - динамический запрос он везде динамический запрос.
...
Рейтинг: 0 / 0
Динамические запросы или однотипные ХП
    #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
Динамические запросы или однотипные ХП
    #32032246
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для того, чтобы исполнить процедуру MyProc, придется обладать разрешением SELECT на таблицу @MyTable.

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

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

CREATE PROCEDURE MyProc
AS
SELECT MyField FROM MyTable

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

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

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

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

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

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


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