Tengo que mantener y ampliar un antiguo sistema heredado que contiene métodos de servicio web y tablas de bases de datos que ya no se usan. Como no estoy completamente seguro de que las tablas sean realmente redundantes, me temo que las descarte.
¿Hay alguna otra forma de lograr el mismo efecto (las tablas ya no se pueden usar) sin soltarlas? Mi idea era transferirlos a un esquema diferente (por ejemplo, Deleted
) de la actual por defecto, dbo
.
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'Deleted')
BEGIN
EXEC('CREATE SCHEMA Deleted')
END
ALTER SCHEMA Deleted TRANSFER dbo.TableName;
¿Hay alguna otra opción o hay algún inconveniente en el enfoque de esquema?
fuente
Un par de otras opciones son cambiar el nombre de las tablas o, si tienen índices agrupados, puede deshabilitar el índice agrupado.
fuente
Elimine los permisos de la tabla de Role (s) / Group (s) / Account (s) que [podría] estar usándolo.
Si algo explota, vuelva a colocarlo [rápidamente].
Sugerencia: Usar un script para hacer estos cambios sería una muy, muy buena idea.
fuente
Por lo general, eliminar permisos no va a funcionar porque no puedes estar SEGURO de que alguien no tiene permisos. Posiblemente a través de un grupo, rol o incluso porque son administradores de sistemas (aunque esperemos que no).
Para las tablas que puede desactivarlas. Y ese es un proceso rápido. Sin embargo, habilitarlos requiere que los reconstruya y para una tabla grande que podría llevarle bastante tiempo.
Su mejor opción será mover el objeto a un nuevo esquema (como sugirió) o renombrar el objeto. Ambas operaciones son rápidas y fáciles de hacer y deshacer. Los permisos también permanecerán en su lugar en ambas direcciones.
Un paso adicional que puede tomar es agregar una "nota TBD" en las propiedades extendidas del objeto. Puede anotar cuándo realizó el cambio y / o cualquier nota que pueda tener sobre por qué cree que es seguro deshacerse de él.
Dicho todo esto, ejecutaría una sesión de eventos extendida (o seguimiento del generador de perfiles) durante unos días para asegurarme de que tiene todos los objetos en uso. Puede limitar la sesión a solo el nombre del objeto y cuando se tocó para reducir la sobrecarga. También asegúrese de ejecutar esta sesión durante unos días a cada lado del final del mes y posiblemente incluso al final del trimestre para asegurarse de tener todo.
fuente
Elimine los permisos como sugiere Phil W.
También elimine los permisos de cualquier procedimiento almacenado que use las tablas. En SQL Server, los permisos (no sé de otros) se encadenan desde un objeto que llama (por ejemplo, el procedimiento almacenado) al objeto llamado (por ejemplo, una tabla).
fuente