2010-10-05 19 views
6

Tengo una base de datos de SQL Server 2005. Estoy registrando datos en una tabla. Quiero evitar que los datos de la tabla se vuelvan demasiado grandes.¿Cómo limitar el tamaño de una tabla?

¿Cómo puedo limitar el tamaño de la tabla a x número de filas y seguir registrando? Quiero que las filas más antiguas caigan.

Respuesta

8

Tienes que construir este proceso tú mismo. Es posible que desee buscar la creación de un trabajo de SQL Server que ejecute una instrucción SQL DELETE que se basa en los criterios que ha definido.

+1

Un trabajo es probablemente mejor que un desencadenante si no te importa que el total vaya un poco más. Simplemente configúralo para que se ejecute una vez por la noche o semanalmente o lo que sea. –

3

Este es un ejemplo en el que los desencadenadores podrían ser una buena idea en el servidor Sql. (Mi sensación personal es que los desencadenantes en SQL son como GOTO en el código.)

Simplemente escriba un desencadenador INSERTAR que, cuando se active, comprobará el número de filas en el archivo y ejecutará un DELETE según las reglas que especifique .

Aquí hay un enlace a trigger basics. Y another, esta vez con tapas de pantalla.

+1

Si la tabla en cuestión está cambiando a menudo, entonces esta no sería una buena idea. Por lo general, es mucho mejor programar los elementos de mantenimiento para los momentos en que el sistema tenga la menor cantidad de carga. – NotMe

+0

Si realiza esta ruta, debe evaluar el rendimiento. Con desencadenadores y grandes cantidades de datos, una instrucción INSERT tardará mucho más en completarse. Y debe anticipar fallas en el proceso de eliminación. Debe decidir si es importante suspender un inserto porque falló el desencadenador. – bobs

2

Coloque la tabla en su propio grupo de archivos. Limite el tamaño del grupo de archivos. Ver:

A continuación, agregue un trabajo que borra los registros antiguos de registro, pero esto suele ser más complicado de lo que parece. La forma más eficiente de usar una ventana deslizante: How to Implement an Automatic Sliding Window in a Partitioned Table. Si no es posible, la mejor alternativa es asegurarse de que la clave agrupada en la tabla sea la fecha, de modo que las eliminaciones puedan eliminar eficientemente las filas anteriores.

0

Si desea restringir el tamaño de una tabla para fines de registro, no aconsejaría pensar en resolver el problema limitando el número de registros almacenados en una tabla. En su lugar, tiene un proceso de archivado o purga para la tabla que almacena los registros, este proceso se puede configurar para purgar/archivar los registros ya sea una vez X cantidad de filas, o tal vez más tarde desee reconfigurarlo después de X cantidad de minutos/hrs/etc. Si le preocupa el espacio real, sería mejor analizar cuánto espacio están ocupando realmente sus registros. Una vez que tenga una idea de cuánto espacio físico tiene disponible para la base de datos, restrinja el crecimiento de los datos de SQL Server para asegurarse de que el archivo de datos en el que está almacenada la información de registro no supere sus expectativas.

Cuestiones relacionadas