Если вы предоставите им права администратора (общие), то вы не сможете их остановить. Тем не менее, есть несколько отличных инструментов, таких как RedGate SQL Compare, которые позволяют сравнивать 2 схемы базы данных (например, снимок того, чем он должен быть, с тем, что есть сейчас), и он мгновенно сообщит вам, есть ли какие-либо изменения, и что они.
Если вы знаете, что пользователь собирается добавить свои собственные вещи, скажите им некоторые основные правила, например, если они собираются добавить таблицы, добавьте некоторый префикс к имени таблицы, который будет определять его как свое. То же самое работает с сохраненными процессами ... если они добавляют новые, добавьте их с каким-то префиксом для их обозначения.
Если вы хотите дать им возможность изменять функциональность ваших хранимых процедур или добавлять столбцы к вашим таблицам, то вам нужно сделать предварительный дизайн. Вы можете взять каждую из ваших таблиц, например TableA, и добавить дочернюю таблицу TableA_User с отношением один к одному. Эта таблица содержит любые пользовательские данные, к которым вы можете предоставить им доступ, связанные с этой основной таблицей. Вы также можете дать им заранее определенные хуки для изменения функциональности вашей бизнес-логики. Например, каждый раз, когда вы добавляете новую строку типа «такой-то», вы можете вызывать заглушку хранимой процедуры, которая передает данные новой строки, и они могут изменять ее перед сохранением в базе данных. Очевидно, это быстро усложняется.
Лучший способ справиться с этим - оставаться отзывчивым с вашим клиентом. Если они хотят изменений, внедрите их быстро и получите за это деньги.