Выполнение хранимых процедур в другом контексте базы данных?

Из-за ограничений безопасности каждый клиент должен хранить свои данные в своей собственной базе данных. Иногда клиентам требуются настройки, требующие изменения определенных хранимых процедур в их области, иногда значительно. Это создает кошмар для поддержки хранимых процедур во всех базах данных. Похоже, это частая проблема. Существуют ли какие-либо общепринятые стандарты для обработки подобных ситуаций?

Некоторые подходы, которые я рассмотрел:

Центральная база данных, содержащая «стандартные» хранимые процедуры. Процесс сначала проверяет наличие хранимой процедуры в клиентской базе данных, если она не существует, выполняется из «стандартной» базы данных. Проблема: я не могу понять, как выполнить хранимую процедуру из одной базы данных и использовать ее для ссылок на таблицы в другой базе данных без создания динамического SQL. Мне это кажется оптимальным решением, поскольку необходимо поддерживать единую хранимую процедуру, настройки очевидны. Я просто не могу понять, как заставить его работать, если вообще можно. Он всегда выполняется в контексте базы данных, содержащей SP.

Любые настройки необходимо внести в копию стандартной хранимой процедуры с суффиксом _Custom.Все вызовы хранимых процедур сначала проверяют, существует ли _Custom SP, вызывая пользовательский вместо стандартного при обнаружении. Настройки более очевидны, однако каждый вызов SQL должен начинаться с другого вызова SQL для проверки имени SP. Также,любые изменения в «стандартных» хранимых процедурах по-прежнему необходимо реплицировать в сотнях баз данных.

Удалить все хранимые процедуры. Вместо этого храните их в виде операторов T-SQL либо в файлах, либо где-нибудь в таблице. Необходимо создать совершенно новую систему управления для доступа, тестирования и обновления кода T-SQL (в настоящее время для этого используется Management Studio).

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

5
задан Brandon 5 October 2011 в 21:33
поделиться