Я должен поддерживать и расширять старую унаследованную систему, которая содержит методы веб-сервиса и таблицы базы данных, которые больше не используются. Поскольку я не совсем уверен, что таблицы действительно избыточны, я боюсь их отбрасывать.
Есть ли другой способ достижения того же эффекта (таблицы больше не могут использоваться) без их удаления? Моя идея состояла в том, чтобы перенести их в другую схему (например, Deleted
) из текущего значения по умолчанию dbo
.
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'Deleted')
BEGIN
EXEC('CREATE SCHEMA Deleted')
END
ALTER SCHEMA Deleted TRANSFER dbo.TableName;
Есть ли другой вариант или есть какие-то недостатки в подходе схемы?
источник
Несколько других опций - просто переименовать таблицы, или, если они имеют кластерные индексы, вы можете отключить кластерный индекс.
источник
Удалите разрешения для таблицы из ролей, групп, учетных записей, которые могут ее использовать.
Если что-то взорвется, положите их обратно [быстро].
Подсказка: Использование сценария , чтобы сделать , чтобы эти изменения были бы очень, очень хорошая идея.
источник
Удаление разрешений, как правило, не сработает, потому что нельзя быть уверенным, что у кого-то нет прав. Возможно, через группу, роль или даже потому, что они сисадмины (хотя будем надеяться, что нет).
Для таблиц вы можете отключить их. И это быстрый процесс. Однако для их включения требуется перестроить их для большого стола, который может занять довольно много времени.
Лучше всего будет переместить объект в новую схему (как вы предложили) или переименовать объект. Обе эти операции являются быстрыми и легкими как для выполнения, так и для отмены. Разрешения также будут оставаться в силе в обоих направлениях.
Дополнительным шагом, который вы можете предпринять, является добавление «заметки TBD» в расширенные свойства объекта. Вы можете сделать заметки о том, когда вы внесли изменения, и / или любые заметки, которые могут у вас появиться, о том, почему вы чувствуете, что от них безопасно избавляться.
Все это говорит о том, что я буду запускать расширенный сеанс событий (или трассировку профилировщика) в течение нескольких дней, чтобы убедиться, что у вас есть все используемые объекты. Вы можете сильно ограничить сеанс только именем объекта и при касании, чтобы уменьшить накладные расходы. Также убедитесь, что вы проводите этот сеанс в течение нескольких дней по обе стороны от конца месяца и, возможно, даже до конца квартала, чтобы убедиться, что у вас есть все.
источник
Удалить разрешения, как предлагает Фил У.
Также удалите разрешения из любых хранимых процедур, которые используют таблицы. В SQL Server (я не знаю о других) разрешения связаны между вызывающим объектом (например, хранимой процедурой) и вызываемым объектом (например, таблицей).
источник