{"id":4256,"date":"2017-11-16T11:05:06","date_gmt":"2017-11-16T17:05:06","guid":{"rendered":"https:\/\/www.bhinfo.com.mx\/cursos\/?p=4256"},"modified":"2017-11-21T17:43:38","modified_gmt":"2017-11-21T23:43:38","slug":"sql-mantenimiento-a-base-de-datos","status":"publish","type":"post","link":"https:\/\/www.bhinfo.com.mx\/cursos\/2017\/11\/16\/sql-mantenimiento-a-base-de-datos\/","title":{"rendered":"SQL, Mantenimiento a Base de datos"},"content":{"rendered":"<p style=\"text-align: center;\"><strong>Script para crear un SP llamado&nbsp;xOptimiza<\/strong><\/p>\n<p><!--more--><\/p>\n<pre class=\"lang:tsql decode:true  \">--\r\nCreate Proc xOptimiza\r\n@mov int\r\nAS\r\n-- Declaraci\u00f3n de variables necesarias para los procesos\r\nDECLARE @ID int, @Name varChar(128), @Reindexa int, @Indice varchar(128), @DB VarChar(128)\r\n\r\n-- Select db_name()\r\n-- Asigana un valor correcto a esta variable para iniciar el proceso deseado\r\nSelect \t@Reindexa = @mov,\r\n\t@DB = db_name()\r\nIf @Reindexa &lt; 5\r\nBegin\r\n-- Se obtiene la lista de las tablas de usuario para despues poderlas analizar\r\nDeclare Tablas Cursor For\r\n\tSelect id, rTrim(name) from sysobjects where xtype = 'U' Order by name\r\n\r\n-- Abre el cursor \"TABLAS\" para recorrer tabla por tabla\r\nOpen Tablas\r\n\t-- Obtiene el primer registro de las tablas\r\n\tFetch Next From Tablas\r\n\t\tInto @ID, @Name\r\n\tWhile @@Fetch_Status = 0\r\n\tBegin\r\n\t\tPrint '******************************************************************* ' + @Name\r\n\t\t\r\n\t\tIF @Reindexa = 0\r\n\t\t-- Muestra la Fragmentacion de la informaci\u00f3n e indices\r\n\t\tDbcc Showcontig (@ID)\r\n\r\n\t\tIF @Reindexa = 1\r\n\t\tBegin\r\n\t\t-- Defragmenta los indices de una tabla\r\n\t\t\tIf Exists (Select Name From sysindexes Where Id = @ID and IndId &lt;&gt; 0) \r\n\t\t\tBegin\r\n\t\t\t\tDeclare Indices Cursor For\r\n\t\t\t\t\tSelect name From sysindexes Where id = @ID and indid &lt;&gt; 0 and rows &lt;&gt; 0\r\n\t\t\t\tOpen Indices\r\n\t\t\t\t\tFetch Next From Indices\r\n\t\t\t\t\t\tInto @Indice\r\n\t\t\t\t\tWhile @@Fetch_Status = 0\r\n\t\t\t\t\tBegin\r\n\t\t\t\t\t\tPrint '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' + @Indice\r\n\t\t\t\t\t\tDBCC INDEXDEFRAG (@DB,@Name, @Indice)\r\n\t\t\t\t\t\t-- Select @Indice, @Name\r\n\t\t\t\t\t\tFetch Next From Indices\r\n\t\t\t\t\t\t\tInto @Indice\r\n\t\t\t\t\tEnd\r\n\t\t\t\tClose Indices\r\n\t\t\t\tDeallocate Indices\r\n\t\t\tEnd\r\n\t\t\tElse\r\n\t\t\t\tprint '-- No tiene indices que defragmentar'\r\n\r\n\t\tEnd\r\n\t\tIF @Reindexa = 2\r\n\t\tBegin\r\n\t\t\t-- Muestra la fragmentaci\u00f3n de la informacion e indices, y despues\r\n\t\t\t-- reconstrulle los indices de la tabla cambiandoles el fill-factor a 60 para un mejor desempe\u00f1o\r\n\t\t\tIf Exists (Select name From sysindexes Where id = @ID and indid &lt;&gt; 0) \r\n\t\t\tBegin\r\n\t\t\t\tDbcc Showcontig (@ID)\r\n\t\t\t\tDeclare Indices Cursor For\r\n\t\t\t\t\tSelect name From sysindexes Where id = @ID and indid &lt;&gt; 0 and rows &lt;&gt; 0\r\n\t\t\t\tOpen Indices\r\n\t\t\t\t\tFetch Next From Indices\r\n\t\t\t\t\t\tInto @Indice\r\n\t\t\t\t\tWhile @@Fetch_Status = 0\r\n\t\t\t\t\tBegin\r\n\t\t\t\t\t\tPrint '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' + @Indice\r\n\t\t\t\t\t\tDBCC DBREINDEX (@Name, @Indice, 80)\r\n\t\t\t\t\t\t-- Select @Indice, @Name\r\n\t\t\t\t\t\tFetch Next From Indices\r\n\t\t\t\t\t\t\tInto @Indice\r\n\t\t\t\t\tEnd\r\n\t\t\t\tClose Indices\r\n\t\t\t\tDeallocate Indices\r\n\t\t\tEnd\r\n\t\t\tElse\r\n\t\t\t\tprint '-- No tiene indices que defragmentar'\r\n\t\tEnd\r\n\r\n\t\tIF @Reindexa = 3\r\n\t\t-- Revisa la integridad de la informaci\u00f3n, indices y la imagen de la p\u00e1gina\r\n\t\tDBCC CheckTable (@Name)\r\n\r\n\t\tIF @Reindexa = 4\r\n\t\t-- Informa el espacio utilizado por las tablas\r\n\t\tEXEC sp_spaceused @Name\r\n\r\n\t\tPrint ''\r\n\t\tPrint ''\r\n\t\t-- Obtiene siguiente registro de tablas\r\n\t\tFetch Next From Tablas\r\n\t\t\tInto @ID, @Name\r\n\tEnd\r\n-- Cierra y libera el cursor \"TABLAS\"\r\nClose Tablas\r\nDeallocate Tablas\r\nEnd\r\n\r\nIF @Reindexa = 5\r\n-- Revisa la consistenacia de el almacenamiento de la informacion en el \r\n-- disco duro\r\nDBCC CHECKALLOC (@DB)\r\n\r\n\r\nIF @Reindexa = 6\r\nDBCC CHECKALLOC (@DB, REPAIR_REBUILD)\r\n\r\n-- Reactiva la opcion para contar los registros\r\n--Set NoCount OFF\r\n--<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Los posibles valores que pude tomar la variable <em>@Reindexa<\/em>:<\/strong><\/p>\n<p style=\"padding-left: 30px;\">0 : Muestra la Fragmentaci\u00f3n de la informaci\u00f3n e indices<\/p>\n<p style=\"padding-left: 30px;\">1 : De fragmenta los indices de las tablas<\/p>\n<p style=\"padding-left: 30px;\">2 : Muestra la fragmentaci\u00f3n de la informaci\u00f3n e indices, y despu\u00e9s reconstruye los indices de las tablas cambi\u00e1ndoles el fill-factor a 80 para un mejor desempe\u00f1o<\/p>\n<p style=\"padding-left: 30px;\">3 : Revisa la integridad de la informaci\u00f3n, indices y la imagen de la p\u00e1gina<\/p>\n<p style=\"padding-left: 30px;\">4 : Informa el espacio utilizado por las tablas<\/p>\n<p style=\"padding-left: 30px;\">5 : Revisa la consistencia de el almacenamiento de la informaci\u00f3n en el disco duro<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Modo para ejecutar el SP<\/strong><\/p>\n<pre class=\"lang:tsql decode:true \">--\r\nExec xOptimiza 1\r\n--<\/pre>\n<p>&nbsp;<\/p>\n<blockquote>\n<p style=\"text-align: right;\"><strong>Documento Confidencial<\/strong><\/p>\n<\/blockquote>\n<p>&nbsp;<br \/>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Script para crear un SP llamado&nbsp;xOptimiza<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[193],"tags":[347,345,346,53],"class_list":["post-4256","post","type-post","status-publish","format-standard","hentry","category-sql","tag-defragmentacion","tag-mantenimiento","tag-reindex","tag-sql"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.bhinfo.com.mx\/cursos\/wp-json\/wp\/v2\/posts\/4256","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bhinfo.com.mx\/cursos\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bhinfo.com.mx\/cursos\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bhinfo.com.mx\/cursos\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bhinfo.com.mx\/cursos\/wp-json\/wp\/v2\/comments?post=4256"}],"version-history":[{"count":24,"href":"https:\/\/www.bhinfo.com.mx\/cursos\/wp-json\/wp\/v2\/posts\/4256\/revisions"}],"predecessor-version":[{"id":4392,"href":"https:\/\/www.bhinfo.com.mx\/cursos\/wp-json\/wp\/v2\/posts\/4256\/revisions\/4392"}],"wp:attachment":[{"href":"https:\/\/www.bhinfo.com.mx\/cursos\/wp-json\/wp\/v2\/media?parent=4256"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bhinfo.com.mx\/cursos\/wp-json\/wp\/v2\/categories?post=4256"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bhinfo.com.mx\/cursos\/wp-json\/wp\/v2\/tags?post=4256"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}