Mostrando entradas con la etiqueta T-SQL. Mostrar todas las entradas
Mostrando entradas con la etiqueta T-SQL. Mostrar todas las entradas

jueves, 1 de enero de 2015

SQL server error 102 incorrect syntax near ' '

SQL server error 102 incorrect syntax near ' '

Este es uno de esos errores curiosos, lo vi hace poco cuando intente ejecutar un procedimiento almacenado en el servidor de producción, sin embargo cuando ejecutaba el procedimiento almacenado en mi maquina local, el error no aparecía, después de recordar códigos ASCII, encontré el problema.

Creo que en algún momento alguno de “Notostros”, los desarrolladores copiamos algún ejemplo o código de internet y junto con el ejemplo se ingresó en el procedimiento almacenado un espacio duro en vez de un espacio normal.

Para localizar el error utilice Word la opción de mostrar todo, que muestra los retornos de carro (Tecla enter) y los espacios los muestra como una especie de  punto localizado a la mitad de la altura de las letras “.” Y los espacios duros como un símbolo de grados “°”.

Para solucionar el error basta con copiar el “espacio duro”, llevarlo a la opción de buscar y reemplazar del Word (Ctrl + L: en español) y remplazarlo por un espacio normal.




lunes, 10 de noviembre de 2014

Optimización de Índices – Desfragmentación


Los índices en una base de datos con el tiempo tienden a fragmentarse, esto contribuye a disminuir el rendimiento de la base de datos. En SQL server tiene una opción para conocer la fragmentación de los índices de la base de datos
A continuación muestro una consulta  que lista las tablas del sistema, la cantidad de registros por tabla, sus índices y porcentaje de fragmentación. La consulta se ordena por orden de registros descendente.
--Consulta para extraer tablas y registros
Select Tablas.Tabla
       ,Tablas.Registros
       ,Indices.Indice
       ,Indices.Fragmentacion
       ,Round((Registros / 1000000),2) * 100 As Orden
From
(select Distinct SCS.name + '.' + SO.Name as Tabla
      ,si.rows as 'Registros'
from sysobjects as SO
    inner join sysindexes as SI on SO.Id = SI.id
    inner join sysfilegroups as SFG on SI.GroupId = SFG.GroupId
    inner join sys.objects SOS On SO.id=SOS.object_id
    inner join sys.schemas SCS On SOS.schema_id = SCS.schema_id) As Tablas
    Inner Join (SELECT d.name + '.' + c.name as Tabla
                      ,b.name As Indice
                      ,a.avg_fragmentation_in_percent 'Fragmentacion'
                FROM sys.dm_db_index_physical_stats (DB_ID(N'Cuentame'), NULL, NULL, NULL, NULL) AS a
                     JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id
                     Join sys.objects AS c on b.object_id = C.object_id
                     Join sys.schemas AS d ON c.schema_id = d.schema_id
WHERE b.name is Not NUll) As indices
      On Tablas.Tabla=indices.Tabla
Order By Registros Desc

Una vez ejecutado el listado, puedes seleccionar la tabla e índice que veas más fragmentado y reorganizar o reconstruir mediante la siguiente sentencia.
ALTER INDEX [NombreIndice] on [Esquema].[Tabla] REORGANIZE
O
ALTER INDEX [NombreIndice] on [Esquema].[Tabla] REBUILD

SQL Server es marca registrada de Microsoft.

Entrada destacada

Arquitectura de N-Capas con Visual Studio .NET y AngularJS

Este artículo es el primero de una serie de artículos en que quiero explicar mi visión de la programación por capas. La Arquitectura ...