{"id":2058,"date":"2020-07-07T22:52:20","date_gmt":"2020-07-07T22:52:20","guid":{"rendered":"http:\/\/manualsqlserver.com\/?p=2058"},"modified":"2020-07-17T15:40:25","modified_gmt":"2020-07-17T15:40:25","slug":"comandos-dbcc-categoria-mantenimiento","status":"publish","type":"post","link":"https:\/\/manualsqlserver.com\/?p=2058","title":{"rendered":"Comandos DBCC Categor\u00eda Mantenimiento"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"200\" height=\"245\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/07\/ManualSQLServer_DBCC_Mantenimiento___D.png\" alt=\"\" class=\"wp-image-2059\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Comandos DBCC categor\u00eda Mantenimiento<\/h1>\n\n\n\n<p>Los comandos DBCC de la categor\u00eda Mantenimiento permiten realizar tareas de mantenimiento en las bases de datos, los \u00edndices o los grupos de archivos.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Los comandos DBCC de mantenimiento son los siguientes:<\/p>\n\n\n\n<p><strong>DBCC CLEANTABLE<br>DBCC INDEXDEFRAG<br>DBCC DBREINDEX<br>DBCC SHRINKDATABASE<br>DBCC DROPCLEANBUFFERS<br>DBCC SHRINKFILE<br>DBCC FREEPROCCACHE<br>DBCC UPDATEUSAGE<\/strong><\/p>\n\n\n\n<script async=\"\" src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-2636008503986218\" data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p>En las l\u00edneas siguientes se explican los comandos DBCC de la categor\u00eda mantenimiento<\/p>\n\n\n\n<p style=\"font-size:28px\"><strong>DBCC CLEANTABLE<\/strong><\/p>\n\n\n\n<p>Recupera el espacio de las columnas de longitud variable eliminadas en tablas o vistas indizadas<\/p>\n\n\n\n<p>Sintaxis<br>DBCC CLEANTABLE<br>( { BaseDatos }<br>, { NombreTabla | NombreVista }<br>[ , Tama\u00f1oBatch ]<br>) [ WITH NO_INFOMSGS ]<\/p>\n\n\n\n<p>Donde:<br>BaseDatos: es el nombre de la base de datos<br>NombreTabla: Nombre de la tabla<br>NombreVista: Nombre de la vista<br>Tama\u00f1oBatch: Es el n\u00famero de filas procesadas por transacci\u00f3n.<br>Si no se especifica, o si se especifica 0, la declaraci\u00f3n procesa toda la tabla en una transacci\u00f3n.<br>WITH NO_INFOMSGS suprime los mensajes<br>Importante:<br>DBCC CLEANTABLE reclama espacio despu\u00e9s de que se descarta una columna de longitud variable.<br>Una columna de longitud variable puede ser uno de los siguientes tipos de datos:<br>varchar, nvarchar, varchar (max), nvarchar (max), varbinary, varbinary (max), text, ntext,<br>image, sql_variant y xml.<br>Use DBCC CleanTable cuando ha realizado eliminaci\u00f3n de varias columnas de longitud variable<br>de una tabla, no debe usar este comando el planes de mantenimiento.<\/p>\n\n\n\n<p style=\"font-size:24px\"><strong>Ejemplos<\/strong><\/p>\n\n\n\n<p>Use Northwind<br>go<br>Recuperar el espacio de las columnas eliminadas de Customers<br>dbcc cleanTable (Northwind, Customers)<br>go<br><strong>Resultado<br>Ejecuci\u00f3n de DBCC completada. Si hay mensajes de error, consulte al administrador del sistema.<\/strong><\/p>\n\n\n\n<p><strong>Crear una tabla, insertar registros, eliminar un campo y luego recuperar el espacio.<\/strong><br>Create table Prueba<br>(PruebaCodigo nchar(4), PruebaDescripcion nvarchar(100), PruebaElimina nvarchar(200))<br>go<br>Insert into Prueba values (&#8216;8525&#8242;,&#8217;Primer registro&#8217;, &#8216;Datos del primero a eliminar&#8217;),<br>(&#8216;8152&#8242;,&#8217;Segundo registro&#8217;, &#8216;Desaparecer\u00e1 en el DBCC CleanTable&#8217;),<br>(&#8216;3652&#8242;,&#8217;Tercer registro&#8217;, &#8216;No se puede recuperar&#8217;),<br>(&#8216;1598&#8242;,&#8217;Cuarto registro&#8217;, &#8216;Otro dato eliminado&#8217;),<br>(&#8216;7521&#8242;,&#8217;Quinto registro&#8217;, &#8216;No se puede recuperar&#8217;)<br>go<\/p>\n\n\n\n<p>&#8212; Eliminar la columna PruebaElimina<br>Alter table Prueba drop column PruebaElimina<br>go<br>&#8212; Recuperar el espacio de la columna eliminada<br><strong>dbcc CleanTable (Northwind, Prueba)<br>go<\/strong><\/p>\n\n\n\n<p style=\"font-size:28px\"><strong>DBCC INDEXDEFRAG<\/strong><\/p>\n\n\n\n<p>Desfragmenta un indexado en una tabla o vista.<br>De preferencia use Alter index<br>Sintaxis<br>DBCC INDEXDEFRAG<br>( { BaseDatos }, { NombreTabla | NombreVista }<br>[ , { indice } [ , { particion | 0 } ] ]<br>) [ WITH NO_INFOMSGS ]<br>Donde:<br>BaseDatos: es el nombre de la base de datos<br>NombreTabla: Nombre de la tabla<br>NombreVista: Nombre de la vista<br>indice: Nombre del \u00edndice<br>particion: N\u00ba de partici\u00f3n del \u00edndice<br>WITH NO_INFOMSGS suprime los mensajes<br>Importante<br>DBCC INDEXDEFRAG desfragmenta el nivel de hoja de un \u00edndice para que el orden f\u00edsico de las p\u00e1ginas coincida con el orden l\u00f3gico de izquierda a derecha de los nodos de hoja, lo que mejora el rendimiento del escaneo de \u00edndice.<\/p>\n\n\n\n<p style=\"font-size:24px\"><strong>Ejemplos<\/strong><\/p>\n\n\n\n<p>Usando Northwind<br>use Northwind<br>go<br>Para visualizar los \u00edndices de la tabla Customers<br>sp_help customers<br>go<br><strong>Desfragmentar el \u00edndice CompanyName<\/strong><br>DBCC IndexDefrag (Northwind, Customers, CompanyName)<br>go<\/p>\n\n\n\n<p>Permisos<br>Propietario de la tabla o ser miembro de la funci\u00f3n fija del servidor sysadmin, la funci\u00f3n fija de la base de datos db_owner o la funci\u00f3n fija de la base de datos db_ddladmin.<\/p>\n\n\n\n<p style=\"font-size:28px\"><strong>DBCC DBREINDEX<\/strong><\/p>\n\n\n\n<p>Reconstruye uno o m\u00e1s \u00edndices para una tabla en la base de datos especificada.<br>Sintaxis<br>DBCC DBREINDEX<br>(<br>NombreTabla [ , NombreIndice [ , factorRelleno ] ]<br>) [ WITH NO_INFOMSGS ]<br>Donde:<br>NombreTabla: Nombre de la tabla<br>NombreIndice: Nombre del \u00edndice a reconstruir<br>FactorRelleno: especifica el factor de relleno del \u00edndice (Ver \u00cdndices)<br>WITH NO_INFOMSGS suprime los mensajes<\/p>\n\n\n\n<p>Importante<br>DBCC DBREINDEX reconstruye un \u00edndice para una tabla o todos los \u00edndices definidos para una tabla.<br>Al permitir que un \u00edndice se reconstruya din\u00e1micamente, los \u00edndices que aplican las restricciones<br>PRIMARY KEY o UNIQUE se pueden reconstruir sin tener que eliminar y volver a crear esas restricciones.<br>Esto significa que un \u00edndice se puede reconstruir sin conocer la estructura de una tabla o<br>sus restricciones. Esto puede ocurrir despu\u00e9s de una copia masiva de datos en la tabla.<br>DBCC DBReindex no se permiten en:<br>Tablas de sistemas<br>Indexados Spatial<br>Indexados ColumnStore con memoria optimizada<\/p>\n\n\n\n<p style=\"font-size:24px\"><strong>Ejemplo<\/strong><\/p>\n\n\n\n<p><strong>Reconstruir el \u00edndice CompanyName en Customers, asignar un factor de relleno de 80<\/strong><br>Usando Northwind<br>use Northwind<br>go<br>DBCC DBReindex (Customers, CompanyName, 80)<br>go<\/p>\n\n\n\n<p style=\"font-size:28px\"><strong>DBCC SHRINKDATABASE<\/strong><\/p>\n\n\n\n<p>Reduce el tama\u00f1o de los archivos de datos y registro de transacciones en la base de datos especificada<br>Sintaxis<br>DBCC SHRINKDATABASE<br>( NombreBaseDatos [ , Porcentaje ]<br>[ , { NOTRUNCATE | TRUNCATEONLY } ]<br>) [ WITH NO_INFOMSGS ]<br>Donde:<br>NombreBaseDatos: es el nombre de la base de datos a reducir.<br>Porcentaje: Es el porcentaje de espacio libre que desea dejar en el archivo de base de datos despu\u00e9s de que la base de datos se haya reducido.<br>NoTruncate: Solo es aplicable a archivos de datos. El archivo de registro no se ve afectado.<br>TruncateOnly: Libera todo el espacio libre al final del archivo al sistema operativo, pero no realiza<br>ning\u00fan movimiento de p\u00e1gina dentro del archivo.<br>El archivo de datos se reduce solo hasta la \u00faltima extensi\u00f3n asignada. target_percent<br>se ignora si se especifica con TRUNCATEONLY.<br>Esta opci\u00f3n no es compatible con el Almac\u00e9n de datos SQL de Azure.<br>TRUNCATEONLY afecta el archivo de registro. Para truncar solo el archivo de datos, use DBCC SHRINKFILE.<br>WITH NO_INFOMSGS suprime los mensajes<\/p>\n\n\n\n<p style=\"font-size:24px\"><strong>Ejemplo<\/strong><\/p>\n\n\n\n<p><strong>Reducir Northwind liberando 30% del espacio<\/strong><br>dbcc ShrinkDataBase (Northwind, 30)<br>go<\/p>\n\n\n\n<p style=\"font-size:28px\"><strong>DBCC DROPCLEANBUFFERS<\/strong><\/p>\n\n\n\n<p>Elimina todos los b\u00faferes limpios del Pool de b\u00faferes y los objetos de ColumnStore del pool de ColumnStores.<br>Sintaxis<br>DBCC DROPCLEANBUFFERS [ WITH NO_INFOMSGS ]<br>Donde:<br>WITH NO_INFOMSGS suprime los mensajes<\/p>\n\n\n\n<p style=\"font-size:24px\"><strong>Ejemplo<\/strong><\/p>\n\n\n\n<p><strong>DBCC DropCleanBuffers<\/strong><br>go<br>Resultado<br>Ejecuci\u00f3n de DBCC completada. Si hay mensajes de error, consulte al administrador del sistema.<\/p>\n\n\n\n<p style=\"font-size:24px\"><strong>DBCC SHRINKFILE<\/strong><\/p>\n\n\n\n<p>Reduce el tama\u00f1o del archivo de datos o archivo de registro (Ver archivos de base de datos) para la base de datos actual, o vac\u00eda un archivo moviendo los datos del archivo especificado a otros archivos en el mismo grupo de archivos (Ver Grupos de archivos), lo que permite eliminar el archivo de la base de datos.<br>Puede reducir un archivo a un tama\u00f1o que sea menor que el tama\u00f1o especificado cuando se cre\u00f3.<br>Esto restablece el tama\u00f1o de archivo m\u00ednimo al nuevo valor.<br>Sintaxis<br>DBCC SHRINKFILE<br>(<br>{ NombreArchivo } { [ , EmptyFile ]<br>| [ [ , Tama\u00f1oFinal ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ]<br>} ) [ WITH NO_INFOMSGS ]<br>Donde<br><strong>NombreArchivo<\/strong>: es el nombre l\u00f3gico del archivo a reducir<br><strong>Tama\u00f1oFinal<\/strong>: Tama\u00f1o al que se reducir\u00e1 el archivo.<br><strong>EmptyFile<\/strong>: Migra todos los datos del archivo especificado a otros archivos en el mismo grupo de archivos. En otras palabras, EmptyFile migrar\u00e1 los datos del archivo especificado a otros archivos en el mismo grupo de archivos.<br>Emptyfile le asegura que no se agregar\u00e1n nuevos datos al archivo, a pesar de que este archivo no se marque como solo de lectura.<br>El archivo se puede eliminar mediante la instrucci\u00f3n ALTER DATABASE.<br>Si el tama\u00f1o del archivo se modifica mediante la instrucci\u00f3n ALTER DATABASE, el indicador de solo lectura se restablece y se pueden agregar datos.<br><strong>NOTRUNCATE<\/strong>:<br>Mueve las p\u00e1ginas asignadas desde el final de un archivo de datos a las p\u00e1ginas no asignadas al frente del archivo con o sin especificar target_percent. El espacio libre al final del archivo no se devuelve al sistema operativo, y el tama\u00f1o f\u00edsico del archivo no cambia. Por lo tanto, cuando se especifica NOTRUNCATE, el archivo parece no encogerse.<br>NOTRUNCATE solo es aplicable a archivos de datos. Los archivos de registro no se ven afectados.<br>Esta opci\u00f3n no es compatible con los contenedores del grupo de archivos FILESTREAM.<br><strong>TRUNCATEONLY:<\/strong><br>Libera todo el espacio libre al final del archivo al sistema operativo, pero no realiza ning\u00fan movimiento de p\u00e1gina dentro del archivo. El archivo de datos se reduce solo hasta la \u00faltima extensi\u00f3n asignada. target_size se  ignora si se especifica con TRUNCATEONLY.<br>La opci\u00f3n TRUNCATEONLY no mueve informaci\u00f3n en el registro, pero elimina VLFs inactivos del final del archivo de registro.<br>Esta opci\u00f3n no es compatible con los contenedores del grupo de archivos FILESTREAM.<br><strong>WITH NO_INFOMSGS <\/strong>suprime los mensajes<\/p>\n\n\n\n<p style=\"font-size:24px\"><strong>Ejemplos<\/strong><\/p>\n\n\n\n<p>Crear una base de datos, luego reducir el tama\u00f1o de un archivo.<br>xp_Create_subdir &#8216;E:\\Datos&#8217;<br>go<br>Create database Nueva<br>on Primary (name =&#8217;Nueva1&#8242;, filename=&#8217;E:\\Datos\\Nueva1.mdf&#8217;, Size = 80MB)<br>log on (name =&#8217;NuevaLog1&#8242;, filename=&#8217;E:\\Datos\\NuevaLog1.ldf&#8217;, Size = 40MB)<br>go<br>use Nueva<br>go<br>Reducir el archivo a 30MB<br>DBCC ShrinkFile(Nueva1,30)<br>go<br>Reducir el archivo de transacciones a 20<br>DBCC ShrinkFile(NuevaLog1,20)<br>go<\/p>\n\n\n\n<p style=\"font-size:28px\"><strong>DBCC FREEPROCCACHE<\/strong><\/p>\n\n\n\n<p>Elimina todos el contenido de la memoria cach\u00e9 del plan, elimina un plan espec\u00edfico de la memoria cach\u00e9 del plan especificando un identificador de plan o SQL, o elimina todas las entradas de la memoria cach\u00e9 asociadas con un grupo de recursos espec\u00edfico.<br>Sintaxis<br><strong>DBCC FREEPROCCACHE [ ( { plan_handle | sql_handle | pool_name } ) ]<br>[ WITH NO_INFOMSGS ]<\/strong><br>Donde:<br><strong>plan_handle<\/strong><br>Plan_handle identifica de forma \u00fanica un plan de consulta para un lote que se ha ejecutado y cuyo plan reside en el cach\u00e9 del plan. plan_handle es varbinary (64) y se puede obtener a partir de los siguientes objetos de administraci\u00f3n din\u00e1mica:<br>sys.dm_exec_cached_plans<br>sys.dm_exec_requests<br>sys.dm_exec_query_memory_grants<br>sys.dm_exec_query_stats<\/p>\n\n\n\n<p><strong>sql_handle<\/strong><br>sql_handle es el manejador de SQL del lote a borrar. sql_handle es varbinary (64) y se puede<br>obtener a partir de los siguientes objetos de administraci\u00f3n din\u00e1mica:<br>sys.dm_exec_query_stats<br>sys.dm_exec_requests<br>sys.dm_exec_cursors<br>sys.dm_exec_xml_handles<br>sys.dm_exec_query_memory_grants<\/p>\n\n\n\n<p><strong>pool_name<\/strong><br>Pool_Name es el nombre de un grupo de recursos del regulador de recursos.<br>pool_name es sysname y se puede obtener consultando la vista de administraci\u00f3n<br>din\u00e1mica sys.dm_resource_governor_resource_pools.<\/p>\n\n\n\n<p>WITH NO_INFOMSGS suprime los mensajes<\/p>\n\n\n\n<p style=\"font-size:24px\"><strong>Ejemplo<\/strong><\/p>\n\n\n\n<p>Usando Northwind<br>use Northwind<br>go<\/p>\n\n\n\n<p>Select * from Orders where Year(OrderDate )= 1997<br>go<\/p>\n\n\n\n<p>Ver el plan en el cache<br>Select plan_handle, T.text<br>FROM sys.dm_exec_cached_plans<br>CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS T<br>WHERE text LIKE N&#8217;Select * from Orders where Year(OrderDate )= 1997&#8242;<br>go<br>Se usa el pla_handle para borrar espec\u00edficamente el plan<br>El dato es: \u00ab0x0600090043129802B0EE6333DA01000001000000000000000000000000000000000000000000000000000000\u00bb<br>Instrucci\u00f3n para borrar<br>DBCC FreeProcCache (0x0600090043129802B0EE6333DA01000001000000000000000000000000000000000000000000000000000000);<br>go<br>Mensaje<br>Ejecuci\u00f3n de DBCC completada. Si hay mensajes de error, consulte al administrador del sistema.<\/p>\n\n\n\n<p>Borrar todo el cach\u00e9<br>DBCC FreeProcCache<br>go<\/p>\n\n\n\n<p style=\"font-size:28px\"><strong>DBCC UPDATEUSAGE<\/strong><\/p>\n\n\n\n<p>Informa y corrige las inexactitudes de recuento de p\u00e1ginas y filas en las vistas de cat\u00e1logo.<br>Estas inexactitudes pueden provocar informes de uso de espacio incorrectos devueltos por el procedimiento almacenado del sistema sp_space.<br>Sintaxis<br><strong>DBCC UPDATEUSAGE<br>( { NombreBaseDatos } [ , { NombreTabla | NombreVista } [ , { NombreIndice } ] ]<br>) [ WITH [ NO_INFOMSGS ] [ , ] [ COUNT_ROWS ] ]<br><\/strong>Donde<br>NombreBaseDatos: es el nombre de la base de datos para la cual se reportan y corrigen las estad\u00edsticas de uso del espacio<br>NombreTabla: Nombre de la tabla para la cual se reportan y corrigen las estad\u00edsticas de uso del espacio<br>NombreVista: Nombre de la vista para la cual se reportan y corrigen las estad\u00edsticas de uso del espacio<br>NombreIndice: Nombre del \u00edndice para el cual se reportan y corrigen las estad\u00edsticas de uso del espacio<br>WITH NO_INFOMSGS suprime los mensajes<br>Count_Rows: Especifica que la columna de recuento de filas se actualiza con el recuento actual del n\u00famero de filas en la tabla o vista.<\/p>\n\n\n\n<p style=\"font-size:24px\"><strong>Ejemplo<\/strong><\/p>\n\n\n\n<p>Usando Northwind<br>Use Northwind<br>go<br>Corregir las estad\u00edsticas del uso de espacio de la base de datos<br>DBCC UpdateUsage (Northwind)<br>go<br>Corregir las estad\u00edsticas del uso de espacio de la tabla Customers<br>DBCC UpdateUsage (Northwind, Customers)<br>go<\/p>\n\n\n\n<script async=\"\" src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-2636008503986218\" data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Comandos DBCC categor\u00eda Mantenimiento Los comandos DBCC de la categor\u00eda Mantenimiento permiten realizar tareas de mantenimiento en las bases de datos, los \u00edndices o los grupos de archivos.<\/p><p><a class=\"more-link btn\" href=\"https:\/\/manualsqlserver.com\/?p=2058\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":2059,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[144],"tags":[228,115,163],"class_list":["post-2058","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-comandbcc","tag-console","tag-dbcc","tag-mantenimiento","nodate","item-wrap"],"_links":{"self":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/2058","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2058"}],"version-history":[{"count":2,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/2058\/revisions"}],"predecessor-version":[{"id":2094,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/2058\/revisions\/2094"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/media\/2059"}],"wp:attachment":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2058"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2058"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2058"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}