Разрешение УПРАВЛЕНИЯ должно быть дано на Хранимой процедуре в SQL Server 2005?

Попытайтесь изменить это (посмотрите на 1-й конвертирование):

...
AND CONVERT(VARCHAR(7), c.changedate, 120) IN
       (SELECT
            CASE 
                WHEN f.Quarter = 'Q1' THEN CONVERT(VARCHAR(4), YEAR(@f_yr) - 1) + '-' + f.FyMonthNumber
                WHEN f.Quarter = 'ALL' AND f.FyMonth IN ('OCT', 'NOV', 'DEC') THEN CONVERT(VARCHAR(4), YEAR(@f_yr) - 1, 112) + '-' + f.FyMonthNumber
                ELSE CONVERT(VARCHAR(4), YEAR(@f_yr), 112) + '-' + f.FyMonthNumber 
            END AS FY_MONTH
        FROM FyQm f
        WHERE f.Quarter = @qrt)
...

Вы конвертировали 112 (yyyymm) вместо 120 (yyyy-mm), и ваш внутренний выбор возвращает yyyy-mm

7
задан leftend 9 January 2009 в 18:05
поделиться

3 ответа

Если хранимая процедура была создана с помощью, ВЫПОЛНЯЮТ ВЫЗЫВАЮЩУЮ СТОРОНУ AS (которому я верю, значение по умолчанию), то у вызывающей стороны должны быть все полномочия, необходимые, чтобы сделать независимо от того, что хранимая процедура делает, кроме того, для ВЫПОЛНЕНИЯ на процедуре.

Из документации SQL Server для ВЫПОЛНЯЮТ AS:

ВЫЗЫВАЮЩАЯ СТОРОНА Указывает, что операторы в модуле выполняются в контексте вызывающей стороны модуля. У пользователя, выполняющего модуль, должны быть соответствующие полномочия не только на самом модуле, но также и на любых объектах базы данных, на которые ссылается модуль.

Обратите внимание, что из-за пути SQL Server обрабатывает проверки разрешения с помощью цепочек принадлежности, это не всегда строго верно, и я предполагаю, что предоставление УПРАВЛЕНИЯ на процедуре (который присуждает состояние владения получающему в дар) заставляет эти проверки разрешения быть обойденными.

Если Вы создаете процедуру с, ВЫПОЛНЯЮТ ВЛАДЕЛЬЦА AS, то Вы не должны должны быть давать любые разрешения вне, ВЫПОЛНЯЮТСЯ на процедуре.

5
ответ дан 7 December 2019 в 01:28
поделиться

Выполнитесь должно быть все, что необходимо.

Хранимая процедура получает доступ к таблице за пределами базы данных, в которой она расположена?

Если так, попытайтесь установить соответствующие полномочия пользователя на таблицах, которые хранимая процедура использует за пределами той же базы данных.

2
ответ дан 7 December 2019 в 01:28
поделиться

Если только необходимо смочь выполнить хранимую процедуру затем, очевидно, разрешение УПРАВЛЕНИЯ не является способом пойти. Да это работает, тот же способ, которым это работает, выполняя Ваш веб-сайт в соответствии с локальной системной учетной записью.

Если даритель ВЫПОЛНИТЬ разрешения является также владельцем таблиц, которые затронуты затем не должно быть никакой проблемы, выполняющей SP. Иначе необходимо дать явные разрешения или рассмотреть корректировку владения с ИЗМЕНИТЬ ОПЕРАТОРОМ АВТОРИЗАЦИИ.

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

2
ответ дан 7 December 2019 в 01:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: