round redondear quitar hacia entero ejemplos decimales coincidencias buscar arriba abajo sql-server database shrink msde2000

redondear - ¿Cómo reduzco mi base de datos de SQL Server?



sql redondear hacia arriba (15)

Aquí hay otra solución: use el asistente de publicación de bases de datos para exportar su esquema, seguridad y datos a scripts sql. A continuación, puede desconectar su DB actual y volver a crearla con los scripts.

Suena un poco tonto, pero hay un par de ventajas. Primero, no hay posibilidad de perder datos. Su db original (¡siempre que no elimine su base de datos cuando la deje caer!) Es segura, la nueva base de datos será lo más pequeña posible y tendrá dos instantáneas diferentes de su base de datos actual, una lista para rodar, uno minificado: puede elegir hacer una copia de seguridad.

Tengo una base de datos de casi 1.9 Gb de base de datos en tamaño, y MSDE2000 no permite DBs que superen los 2.0 Gb

Necesito reducir este DB (y muchos otros como este en varias ubicaciones de clientes).

He encontrado y eliminado muchos cientos de miles de registros que se consideran innecesarios: estos registros representan un gran porcentaje de algunas de las tablas principales (más grandes) de la Base de datos. Por lo tanto, es razonable suponer que se debe poder recuperar mucho espacio.

Así que ahora necesito reducir el DB para dar cuenta de los registros que faltan.

  • DBCC ShrinkDatabase(''MyDB'') ...... Sin efecto.
  • He intentado con las diversas instalaciones de reducción proporcionadas en MSSMS ... Todavía no hay ningún efecto.
  • He hecho una copia de seguridad de la base de datos y la restauré ... Todavía no hay efecto.

Aún 1.9Gb

¿Por qué?

Cualquiera que sea el procedimiento que encuentre finalmente, debe poder volver a reproducirse en una máquina cliente con acceso a nada más que OSql o similar.


Esto puede parecer extraño, pero me funcionó y he escrito un programa de C # para automatizar esto.

Paso 1: Truncar el registro de transacciones (Haga una copia de seguridad solo del registro de transacciones, activando la opción para eliminar transacciones inactivas)

Paso 2: ejecute una reducción de la base de datos, moviendo todas las páginas al inicio de los archivos

Paso 3: trunca nuevamente el registro de transacciones, ya que el paso 2 agrega entradas de registro

Paso 4: ejecutar una contracción de la base de nuevo.

Mi código eliminado, que usa la biblioteca SQL DMO, es el siguiente:

SQLDatabase.TransactionLog.Truncate(); SQLDatabase.Shrink(5, SQLDMO.SQLDMO_SHRINK_TYPE.SQLDMOShrink_NoTruncate); SQLDatabase.TransactionLog.Truncate(); SQLDatabase.Shrink(5, SQLDMO.SQLDMO_SHRINK_TYPE.SQLDMOShrink_Default);


También debe modificar el tamaño mínimo de los datos y archivos de registro. DBCC SHRINKDATABASE reducirá los datos dentro de los archivos que ya ha asignado. Para reducir un archivo a un tamaño más pequeño que su tamaño mínimo, utilice DBCC SHRINKFILE y especifique el nuevo tamaño.


También necesitará reducir los archivos de datos individuales.

Sin embargo, no es una buena idea reducir las bases de datos. Por ejemplo, mira aquí


Borre los datos, asegúrese de que el modelo de recuperación sea simple, luego skrink (la base de datos de contracción o la contracción de archivos funciona). Si el archivo de datos aún es demasiado grande, Y utiliza montones para almacenar datos, es decir, no hay índice agrupado en tablas grandes, entonces puede tener este problema con respecto a eliminar datos de montones: http://support.microsoft.com / kb / 913399


"Por lo tanto, es razonable suponer que se debe poder recuperar mucho espacio".

Disculpas si entendí mal la pregunta, pero ¿está seguro de que es la base de datos y no los archivos de registro los que están utilizando todo el espacio? Compruebe para ver en qué modelo de recuperación se encuentra la base de datos. Es probable que esté completo, lo que significa que el archivo de registro nunca se trunca. Si no necesita un registro completo de cada transacción, debería poder cambiar a Simple, lo que truncará los registros. Puede reducir la base de datos durante el proceso. Suponiendo que las cosas vayan bien, el proceso se ve así:

  1. Respalda la base de datos!
  2. Cambiar a Simple Recovery
  3. Reducir db (haga clic derecho en db, elija todas las tareas> reducir db -> establecer en 10% de espacio libre)
  4. Verifique que el espacio haya sido recuperado, si no es posible que tenga que hacer una copia de seguridad completa

Si eso no funciona (o recibe un mensaje que dice "archivo de registro está lleno" cuando intenta cambiar los modos de recuperación), intente esto:

  1. Apoyo
  2. Mata todas las conexiones a la base de datos
  3. Separar db (clic con el botón derecho> Separar o clic con el botón derecho> Todas las tareas> Separar)
  4. Eliminar el archivo de registro (ldf)
  5. Vuelva a conectar el DB
  6. Cambiar el modo de recuperación

etc.


Deberías usar:

dbcc shrinkdatabase (MyDB)

Reducirá el archivo de registro (mantenga abierto un explorador de Windows y véalo suceder).


ALTER DATABASE MyDatabase SET RECOVERY SIMPLE GO DBCC SHRINKFILE (MyDatabase_Log, 5) GO ALTER DATABASE MyDatabase SET RECOVERY FULL GO


Recientemente hice esto. Estaba tratando de hacer una versión compacta de mi base de datos para probar en el camino, pero no pude hacer que se encogiera, sin importar cuántas filas borrara. Eventualmente, después de muchos otros comandos en este hilo, descubrí que mis índices agrupados no se reconstruían después de eliminar las filas. Reconstruir mis índices lo hizo para que pudiera contraerse correctamente.


DBCC SHRINKDATABASE funciona para mí, pero esta es su sintaxis completa:

DBCC SHRINKDATABASE ( database_name, [target_percent], [truncate] )

donde target_percent es el porcentaje deseado de espacio libre que queda en el archivo de base de datos después de que la base de datos se ha reducido.

Y el parámetro truncate puede ser:

NOTRUNCATE

Hace que el espacio de archivos liberado se conserve en los archivos de la base de datos. Si no se especifica, el espacio de archivos liberados se libera en el sistema operativo.

TRUNCATEONLY

Provoca que el espacio no utilizado en los archivos de datos se libere en el sistema operativo y reduce el archivo a la última extensión asignada, reduciendo el tamaño del archivo sin mover ningún dato. No se realiza ningún intento para reubicar filas en páginas no asignadas. target_percent se ignora cuando se usa TRUNCATEONLY.

... y sí no, uno tiene razón, la reducción de la base de datos no es una buena práctica porque, por ejemplo:

reducir los archivos de datos son excelentes maneras de introducir una fragmentación lógica significativa, ya que mueve las páginas desde el final del rango asignado de un archivo de base de datos a algún lugar en la parte frontal del archivo ...

reducir la base de datos puede tener muchas consecuencias en la base de datos, el servidor ... ¡piense mucho antes de hacerlo!

en la web hay muchos blogs y artículos al respecto.


Me encontré con esta publicación a pesar de que necesitaba SHRINKFILE en la versión de MSSQL 2012, que es un poco más complicado desde las versiones de 2000 o 2005. Después de leer todos los riesgos y problemas relacionados con este problema, terminé las pruebas. Para resumir, los mejores resultados que obtuve fueron al usar el MS SQL Server Management Studio .

Right-Click the DB -> TASKS -> SHRINK -> FILES -> select the LOG file


No estoy seguro de qué tan práctico sería esto, y dependiendo del tamaño de la base de datos, el número de tablas y otras complejidades, pero I:

  1. desfragmentar el disco físico
  2. crear una nueva base de datos de acuerdo a mis requerimientos, espacio, porcentaje de crecimiento, etc.
  3. use la tarea simple ssms para importar todas las tablas del antiguo db al nuevo db
  4. escriba los índices de todas las tablas en la base de datos anterior y luego vuelva a crear los índices en la nueva base de datos. expandir según sea necesario para claves extranjeras, etc.
  5. cambie el nombre de las bases de datos según sea necesario, confirme el éxito, elimine las antiguas

Esta es una vieja pregunta, pero me acabo de ocurrir.

La respuesta realmente corta y correcta ya está dada y tiene la mayoría de los votos. Así es como se reduce el registro de transacciones, y ese fue probablemente el problema de los PO. Y cuando el registro de transacciones ha crecido fuera de control, a menudo es necesario reducirlo, pero se debe tener cuidado para evitar que las situaciones futuras de un registro crezcan fuera de control. Esta pregunta en dba.se explica eso. Básicamente: no permita que sea tan grande en primer lugar a través del modelo de recuperación adecuado, el mantenimiento del registro de transacciones, la gestión de transacciones, etc.

Pero la pregunta más importante en mi mente al leer esta pregunta sobre la reducción del archivo de datos (o incluso el archivo de registro) es ¿por qué? y qué cosas malas suceden cuando lo intentas? Parece que se realizaron operaciones de reducción. Ahora, en este caso, tiene sentido en cierto sentido, porque las ediciones MSDE / Express están limitadas al tamaño máximo de la base de datos. Pero la respuesta correcta puede ser buscar la versión correcta para sus necesidades. Y si tropieza con esta pregunta que busca reducir su base de datos de producción y esta no es la razón, ¿debería preguntarse por qué? pregunta.

No quiero que alguien que busque en la web "cómo reducir una base de datos" se encuentre con esto y piense que es algo bueno o aceptable.

Shrinking Data Files es una tarea especial que debe reservarse para ocasiones especiales. Considere que cuando reduce una base de datos, está fragmentando efectivamente sus índices. Tenga en cuenta que cuando reduce una base de datos, está eliminando el espacio libre en el que una base de datos puede volver a crecer algún día, desperdiciando su tiempo e incurriendo en el rendimiento de una operación de reducción solo para ver que la base de datos vuelva a crecer.

Escribí sobre este concepto en varias publicaciones de blog sobre bases de datos reducidas. Primero se le viene a la mente el llamado " No tocar ese botón de contracción ". Hablo sobre estos conceptos descritos aquí, pero también sobre el concepto de "Tamaño correcto" de su base de datos. Es mucho mejor decidir cuál debe ser el tamaño de su base de datos, planificar el crecimiento futuro y asignarlo a esa cantidad. Con Inicialización instantánea de archivos disponible en SQL Server 2005 y más allá para archivos de datos, el costo de crecimiento es menor, pero aún prefiero tener una aplicación inicial adecuada, y estoy mucho menos asustado de espacio en blanco en una base de datos que estoy de encogiéndose en general sin pensar primero. :)


Respuesta tardía pero podría ser útil para otra persona

Si ni DBCC ShrinkDatabase / ShrinkFile o SSMS (Tasks / Shrink / Database) no ayudan, hay herramientas de Quest y ApexSQL que pueden hacer el trabajo, e incluso programar reducciones periódicas si lo necesita.

He usado este último en versión de prueba para hacer esto hace algún tiempo, siguiendo una breve descripción al final de este artículo:

https://solutioncenter.apexsql.com/sql-server-database-shrink-how-and-when-to-schedule-and-perform-shrinking-of-database-files/

Todo lo que necesita hacer es instalar ApexSQL Backup, haga clic en el botón "Reducir base de datos" en la cinta principal, seleccione la base de datos en la ventana emergente y haga clic en "Finalizar".


Creo que puede eliminar todo su registro con el cambio de recuperación completa a simple. Haga clic derecho en su Base de datos y seleccione Properties y seleccione Options y cambie

  • Recovery mode a Simple
  • Containment type a None