miércoles, 26 de octubre de 2016

Script: Exportar propiedades de listas SharePoint a Excel

Les dejo un pequeño Powershell script para exportar a Excel todas las listas de un Site Collection y sus propiedades, Titulo, URL, cantidad de elementos y el valor de EnableThrottling.

$SPWeb = Get-SPWeb "URL Site Collection"
$List = $SPWeb.Lists

foreach($i in $List)
{
$b = $i.DefaultView.Url
$c = $i.EnableThrottling
$d = $i.Title
$e = $i.ItemCount
$a = $d + ";" + "URL Site Collection" + "/" + $b + ";" + $e + ";" + $c

$a | Out-File -FilePath "Ruta Destino\archivo.CSV" -Append -Encoding ASCII

}

En el siguiente link se encuentran todas las propiedades de lista SharePoint que podemos utilizar para obtener datos: https://msdn.microsoft.com/EN-US/library/microsoft.sharepoint.splist_properties.aspx

lunes, 24 de octubre de 2016

Error occurred in deployment step ‘Recycle IIS Application Pool’: The local SharePoint server is not available. Check that the server is running and connected to the SharePoint farm

When I tried to deploy a SharePoint Solution, I got the following error:
“Error occurred in deployment step ‘Recycle IIS Application Pool’: The local SharePoint server is not available. Check that the server is running and connected to the SharePoint farm.”
2
Cause:
This issue may occur because of one of the following:
  1. The SQL Server service is not running.
  2. The SharePoint web application pool is stopped.
  3. The current logged-in user may not be the “db owner” in the content databases.
Solution:
1-SQL Server service is not running:
To run SQL Server service follow the mentioned steps in this article .
2-Application Pool is stopped:
Try to run IISRESET command, if still stopped so it’s may be occurred after  you change the password of the application pool account so try to reset it.
  • Open IIS Manager
  • Select your application pool of your web application
  • Click advanced settings
  • Under identity click to reset the application pool account
  • Click set to update the user name and password of your account
  • Run IISRESET command.
reset application pool account
3-(The current logged-in user may not be the “db owner” in the content databases.) :
To deploy the solution successfully, you need to map the current logged-in user as db_owner into the 3 databases.
  • SharePoint_Config
  • SharePoint_Admin_[GUID]
  • Your current web application that needs to deploy the Web part

HowTo: Creando una VPN con Windows Server 2008r2 con clientes Windows XP

http://ht-solutions.pe/blog/2015/03/howto-creando-una-vpn-con-windows-server-2008r2-con-clientes-windows-xp/

viernes, 14 de octubre de 2016

Buscar errores en el Log de SharePoint 2010\2013\2016

Buenas tardes,
A continuación les dejo unos comandos útiles para buscar errores en SharePoint filtrando por Correation ID.

Desde SharePoint PowerShell
get-splogevent | ?{$_.Correlation -eq "GUID" }

Desde Windows PowerShell
Get-ChildItem L:\LOGS\*.log -Recurse | Select-String -Pattern "ERROR o CORRELATION ID" > L:\SharePointErrorULSLog.txt
Desde SQL Server

select [RowCreatedTime],[ProcessName],[Area],[Category],EventID,[Message] from [WSS_Logging].[dbo].[ULSTraceLog] where CorrelationId='B4BBAC41-27C7-4B3A-AE33-4192B6C1E2C5'

Requisitos de hardware y software para SharePoint Server 2016

Resumen: encuentre los requisitos mínimos de hardware y software que debe cumplir para instalar y ejecutar SharePoint Server 2016.
Descripción: ImportanteImportante:
Si se pone en contacto con los servicios de soporte al cliente de Microsoft acerca de un sistema de producción que no cumple las especificaciones mínimas de hardware publicadas descritas en este documento, el soporte técnico estará limitado hasta que se actualice el sistema con los requisitos mínimos.
En este artículo:
Requisitos de hardware: ubicación de los servidores físicos
Algunas empresas tienen centros de datos muy cercanos entre sí y conectados con fibra óptica de ancho de banda alto. En este entorno puede configurar los dos centros de datos como una sola granja. Esta topología de granja distribuida se denomina granja expandida. SharePoint Server 2016 admite granjas expandidas.
Para que una arquitectura de granja expandida funcione como solución admitida de alta disponibilidad, es necesario cumplir con los requisitos siguientes:
  • Existe una latencia dentro de la granja de elevada coherencia inferior a 1 ms en una dirección, el 99,9 % del tiempo en un periodo de diez minutos. (La latencia del interior de la granja se suele definir como la latencia entre los servidores front-end web y los servidores de base de datos).
  • La velocidad de ancho de banda debe ser de al menos 1 gigabit por segundo.
Para proporcionar tolerancia a errores en una granja de servidores expandida, use las instrucciones de prácticas recomendadas estándar para configurar aplicaciones de servicio y bases de datos redundantes.
Requisitos de hardware: servidores web, servidores de aplicaciones e instalaciones MinRole
Los valores de la siguiente tabla son valores mínimos para la instalación en servidores web y de aplicaciones que ejecutan SharePoint Server 2016 en una instalación de granja de varios servidores.
Para todos los escenarios de instalación, debe contar con espacio suficiente para la instalación base, así como con espacio para diagnósticos, como registro, depuración, creación de volcados de memoria, etc. Para el uso de producción, también se necesita espacio libre en disco adicional para las operaciones cotidianas. Además, mantenga el doble de espacio libre de la cantidad de RAM de que disponga para entornos de producción.
Para obtener información acerca de los requisitos de hardware y software para Microsoft SQL Server 2014, consulte Requisitos de hardware y software para instalar SQL Server 2014.

Escenario de implementación
Tipo y escala de implementación
RAM
Procesador
Espacio en disco duro
Rol de un solo servidor que usa SQL Server
Desarrollo o instalación de evaluación de SharePoint Server 2016 con los servicios mínimos recomendados para entornos de desarrollo. Para obtener más información, consulte Servicios mínimos recomendados para entornos de desarrollo.
16 GB
64 bits, 4 núcleos
80 GB para la unidad de sistema
100 GB para la segunda unidad
Rol de un solo servidor que usa SQL Server
Piloto o instalación de prueba de aceptación de usuarios de SharePoint Server 2016 que ejecuta todos los servicios disponibles para entornos de desarrollo.
24 GB
64 bits, 4 núcleos
80 GB para la unidad de sistema
100 GB para la segunda unidad y unidades adicionales
Servidor web o servidor de aplicaciones en una granja de tres niveles
Desarrollo o instalación de evaluación de SharePoint Server 2016 con un número mínimo de servicios.
12 GB
64 bits, 4 núcleos
80 GB para la unidad de sistema
80 GB para la segunda unidad
Servidor web o servidor de aplicaciones en una granja de tres niveles
Piloto, prueba de aceptación de usuarios o implementación de producción de SharePoint Server 2016 que ejecuta todos los servicios disponibles.
16 GB
64 bits, 4 núcleos
80 GB para la unidad de sistema
80 GB para la segunda unidad y unidades adicionales
Requisitos de implementación: MinRole
Los requisitos de la siguiente tabla se aplican a la característica MinRole y sus topologías admitidas para SharePoint Server 2016.

Tipo y escala de implementación
Descripción
Granja de servidores de dos equipos con:
  • Un servidor de SharePoint que usa el rol de un solo servidor.
  • Un SQL Server
Es el rol de la granja de servidores de servidor único en la característica MinRole. Use este rol para probar la instalación, crear una granja de servidores y usar características comunes que tienen cambios mínimos; es útil para la evaluación básica de SharePoint Server 2016.
Granja de cuatro o cinco equipos con:
  • Un SQL Server
  • Un servidor front-end web.
  • Un servidor de aplicaciones.
  • Un servidor de caché distribuida.
  • Un servidor de búsqueda.
Es útil para probar topologías más complejas y todos los servicios. Adecuado para probar el motor de búsqueda Enterprise Search y proporciona una base para realizar actualizaciones de una compilación a otra.
Para obtener información adicional sobre la característica MinRole, consulte Información general de MinRole.
Requisitos de software para SharePoint Server 2016
Los requisitos de la siguiente sección se aplican a las siguientes instalaciones:
  • Granja de servidores con un solo servidor en la granja
  • Granja de servidores con varios servidores en la granja
Descripción: NotaNota:
Antes de instalar el instalador de requisitos previos, deberá instalar la Actualización de Windows RT 8.1, Windows 8.1 y Windows Server 2012 R2: abril de 2014. El instalador de requisitos previos de SharePoint no instala esta actualización automáticamente.
Descripción: NotaNota:
SharePoint Server 2016 admite las unidades formateadas con el Sistema de archivos resistente (ReFS). Para obtener información adicional sobre ReFs, consulte Información general del Sistema de archivos resistente a errores y Resilient File System (Sistema de archivos resistente)

Descripción: ImportanteImportante:
SharePoint Server 2016 no admite nombres de dominio con una sola etiqueta. Para más información, vea el artículo sobre información sobre configuración de Windows para dominios con nombres DNS con una sola etiqueta.
La Herramienta de preparación de Productos de Microsoft SharePoint puede facilitar la instalación de los requisitos previos de software para SharePoint Server 2016. Asegúrese de que dispone de conexión a Internet, ya que algunos requisitos previos se instalan desde Internet.
Requisitos de software mínimos para SharePoint Server 2016
Esta sección proporciona los requisitos mínimos de software para cada servidor de la granja.
Requisitos mínimos para un servidor de base de datos en una granja:
Uno de los siguientes:
  • La edición de 64 bits de Microsoft SQL Server 2014 Service Pack 1 (SP1)
  • Microsoft SQL Server 2016 RTM
Descripción: NotaNota:
Para aprovechar los escenarios de inteligencia empresarial, debe tener los últimos complementos de PowerView y PowerPivot para Microsoft SQL Server 2016 RTM. Para descargar los complementos de PowerPivot, consulte Microsoft® SQL Server® 2016 PowerPivot® para Microsoft SharePoint 2016®
Descripción: NotaNota:
SQL Server Express no es compatible.
  • La edición de 64 bits de Windows Server 2012 R2 Standard o Datacenter
Requisitos mínimos para servidores de SharePoint en una granja:
  • La edición de 64 bits de Windows Server 2012 R2 Standard o Datacenter
  • Herramienta de preparación de Productos de Microsoft SharePoint instala los siguientes requisitos previos para servidores web front-end y servidores de aplicaciones en una granja:
    • Rol Servidor web (IIS)
    • Rol Servidor de aplicaciones
    • Microsoft .NET Framework, versión 4.6
    • Microsoft SQL Server 2012 Service Pack 1 Native Client
    • Servicios de datos WCF 5.6 de Microsoft
    • Microsoft Information Protection and Control Client (MSIPC)
    • Microsoft Sync Framework Runtime v1.0 SP1 (x64)
    • Windows Server AppFabric 1.1
    • Paquete de actualizaciones acumulativas 7 de Microsoft AppFabric 1.1 para Windows Server (KB 3092423)
    • Microsoft ODBC Driver 11 for SQL Server
    • Paquete redistribuible de Visual C++ para Visual Studio 2012
    • Paquete redistribuible de Visual C++ para Visual Studio 2015
Requisitos mínimos para equipos cliente
Software opcional admitido en SharePoint Server 2016
El software opcional de esta sección es compatible pero no es imprescindible para instalar o usar SharePoint Server 2016. Es posible que algunas capacidades como la inteligencia empresarial requieran este software.

Entorno
Software opcional
Granja de un solo servidor, servidores front-end web y servidores de aplicaciones en una granja de servidores
  • Proveedor de datos de .NET Framework para SQL Server (parte de Microsoft .NET Framework)
  • Proveedor de datos de .NET Framework para OLE DB (parte de Microsoft .NET Framework)
  • Administrador de flujos de trabajo
Puede instalar Administrador de flujos de trabajo en un equipo dedicado.
  • Complemento de Microsoft SQL Server 2008 R2 Reporting Services para Tecnologías de Microsoft SharePoint
Servicios de Access usa este complemento para SharePoint Server 2016.
  • Edición de 64 bits del marco de la aplicación de capa de datos (DAC) de Microsoft SQL Server 2012
  • Edición de 64 bits de Microsoft SQL Server 2012 Transact-SQL ScriptDom
  • Edición de 64 bits de Microsoft System CLR Types for Microsoft SQL Server 2012
  • Edición de 64 bits de Microsoft SQL Server 2012 con SP1 LocalDB
  • Servicios de datos de Microsoft para .NET Framework 4 y Silverlight 4 (anteriormente servicios de datos de ADO.NET)
  • API administrada de servicios web de Exchange, versión 1.2
  • Almacén remoto de blobs de Microsoft SQL Server 2008 R2, que es parte del paquete de características de Microsoft SQL Server 2008 R2
  • SQL Server 2008 R2Analysis Services ADOMD.NET
Vínculos a software aplicable
Para instalar Windows Server 2012 R2, SQL Server 2014 Service Pack 1 (SP1) o SharePoint Server 2016, puede ir a los sitios web enumerados en esta sección. Puede instalar la mayoría de los requisitos previos de software mediante la página de inicio de SharePoint Server 2016. Los requisitos previos de software también están disponibles en sitios web enumerados en esta sección. Puede habilitar el rol de servidor web (IIS) y el rol de servidor de aplicaciones en Server Manager.
En los escenarios en los que no es posible instalar requisitos previos directamente desde Internet, puede descargar los requisitos previos e instalarlos desde un recurso compartido de red. Para obtener más información, consulte Instalar los requisitos previos de SharePoint Server 2016 Release Candidate desde un recurso compartido de red.
Operaciones del instalador de requisitos previos y opciones de línea de comandos
El instalador de requisitos previos SharePoint Server 2016 (prerequisiteinstaller.exe) instala el siguiente software, si no está ya instalado en el servidor de destino, en el siguiente orden:
  1. Rol Servidor de aplicaciones, Rol Servidor web (IIS)
  2. Cliente nativo de Microsoft SQL Server 2012 SP1
  3. Microsoft ODBC Driver 11 for SQL Server
  4. Microsoft Sync Framework Runtime v1.0 SP1 (x64)
  5. Windows Server AppFabric 1.1
  6. Windows Identity Foundation (KB974405)
  7. Microsoft Information Protection and Control Client 2.1
  8. Servicios de datos WCF 5.6 de Microsoft
  9. Microsoft .NET Framework 4.6
  10. Paquete de actualizaciones acumulativas 7 de Microsoft AppFabric 1.1 para Windows Server (KB 3092423)
  11. Paquete redistribuible de Visual C++ para Visual Studio 2012
  12. Paquete redistribuible de Visual C++ para Visual Studio 2015
Puede ejecutar prerequisiteinstaller.exe en un símbolo del sistema con las siguientes opciones. Cuando ejecute prerequisiteinstaller.exe en el símbolo del sistema, puede que se le solicite que reinicie el servidor una o varias veces durante el proceso de instalación. Tras reiniciar, debería continuar con la instalación de requisitos previos ejecutando prerequisiteinstaller.exe con la opción /continue .
  • /? Muestra las opciones de la línea de comandos.
  • /continue Se usa para indicar al instalador que está continuando a partir de un reinicio.
  • /unattended Esto indica que no hay interacción de usuarios.
El instalador se instala desde el archivo que especifique en las opciones de línea de comandos descritas en la siguiente lista. En esta lista, <archivo> significa el archivo desde el que desea realizar la instalación. Si no especifica la opción <archivo>, el instalador descarga el archivo desde Internet y lo instala. Si la opción no se aplica al sistema operativo actual, se ignorará.
  • /SQLNCli:<archivo> Instalar el cliente nativo de Microsoft SQL Server 2012 SP1 desde <archivo>
  • /IDFX11:<archivo> Instalar Windows Identity Foundation v1.1 desde <archivo>.
  • /Sync:<archivo> Instalar Microsoft Sync Framework Runtime SP1 v1.0 (x64) desde <archivo>.
  • /AppFabric:<archivo> Instalar Windows Server AppFabric desde <archivo> (AppFabric debe instalarse con las opciones /i CacheClient,CachingService,CacheAdmin /gac).
  • /KB3092423:<archivo> Instalar Paquete de actualizaciones acumulativas 7 de Microsoft AppFabric 1.1 para Windows Server (KB3092423) desde <archivo>.
  • /MSIPCClient:<archivo> Instalar Microsoft Information Protection y Control Client desde <archivo>.
  • /WCFDataServices56:<archivo> Instalar los servicios de datos Microsoft WCF 5.6 desde <archivo>.
  • /ODBC:<archivo> Instalar el controlador Microsoft ODBC Driver 11 for SQL Server desde <archivo>.
  • /DotNetFx:<archivo> Instalar Microsoft .NET Framework 4.6 desde <archivo>.
  • /MSVCRT11:<archivo> Instalar el paquete redistribuible de Visual C++ para Visual Studio 2012 desde <archivo>.
  • /MSVCRT14:<archivo> Instalar el paquete redistribuible de Visual C++ para Visual Studio 2015 desde <archivo>.
Opciones de instalación
Determinados requisitos previos se instalan con el instalador de requisitos previos con opciones específicos. Estos requisitos previos con opciones de instalación específicas se enumeran a continuación con las opciones que usa el instalador de requisitos previos.
  • Windows AppFabric
/i CacheClient,CachingService,CacheAdmin /gac
  • Servicios de datos WCF de Microsoft
/quiet
El instalador de requisitos previos crea registros de archivos en %TEMP%\prerequisiteinstaller.<fecha>.<hora>.log. Puede consultar estos registros de archivos para ver detalles específicos sobre todos los cambios que hace el instalador en el equipo de destino.


miércoles, 12 de octubre de 2016

SQL Server Performance - Consulta latencia de IO por base de datos

SELECT
    [ReadLatency] =
        CASE WHEN [num_of_reads] = 0
            THEN 0 ELSE ([io_stall_read_ms] / [num_of_reads]) END,
    [WriteLatency] =
        CASE WHEN [num_of_writes] = 0
            THEN 0 ELSE ([io_stall_write_ms] / [num_of_writes]) END,
    [Latency] =
        CASE WHEN ([num_of_reads] = 0 AND [num_of_writes] = 0)
            THEN 0 ELSE ([io_stall] / ([num_of_reads] + [num_of_writes])) END,
    [AvgBPerRead] =
        CASE WHEN [num_of_reads] = 0
            THEN 0 ELSE ([num_of_bytes_read] / [num_of_reads]) END,
    [AvgBPerWrite] =
        CASE WHEN [num_of_writes] = 0
            THEN 0 ELSE ([num_of_bytes_written] / [num_of_writes]) END,
    [AvgBPerTransfer] =
        CASE WHEN ([num_of_reads] = 0 AND [num_of_writes] = 0)
            THEN 0 ELSE
                (([num_of_bytes_read] + [num_of_bytes_written]) /
                ([num_of_reads] + [num_of_writes])) END,
    LEFT ([mf].[physical_name], 2) AS [Drive],
    DB_NAME ([vfs].[database_id]) AS [DB],
    [mf].[physical_name]
FROM
    sys.dm_io_virtual_file_stats (NULL,NULL) AS [vfs]
JOIN sys.master_files AS [mf]
    ON [vfs].[database_id] = [mf].[database_id]
    AND [vfs].[file_id] = [mf].[file_id]
-- WHERE [vfs].[file_id] = 2 -- log files
-- ORDER BY [Latency] DESC
-- ORDER BY [ReadLatency] DESC
ORDER BY [WriteLatency] DESC;
GO

Determina el tamaño de cada Site Collection

Add-PSSnapin microsoft.sharepoint.powershell
$SizeLog = "D:\temp\SPSiteSize.csv"
############################################################
$CurrentDate = Get-Date -format d
$WebApps = Get-SPWebApplication
foreach($WebApp in $WebApps)
{
$Sites = Get-SPSite -WebApplication $WebApp -Limit All
foreach($Site in $Sites)
{
$SizeInKB = $Site.Usage.Storage
$SizeInGB = $SizeInKB/1024/1024/1024
$SizeInGB = [math]::Round($SizeInGB,2)
$CSVOutput = $Site.RootWeb.Title + "*" + $Site.URL + "*" + $Site.ContentDatabase.Name + "*" + $SizeInGB + "*" + $CurrentDate
$CSVOutput | Out-File $SizeLog -Append
}
}
$Site.Dispose()

Script Para Determinar Nivel de Fragmentación de Indices

- El script puede ser utilizado para medir la fragmentación a nivel de Servidor/Base de Datos/Tablas (por default se los dejo "comentado (--)" para que lo puedan utilizar a nivel de Base de Datos

- En el where pueden filtrar el nivel de fragmentación que desean listar.

Quedo a disposición de uds. Saludos!

-----------------------------------------------------------------------------
-- Detalle: Se listan lo objetos que se encuentran fragmentados
-- acorde a lo seteado en el wheare    
-- Detalle 2 (podemos hacer a nivel de Servidor/ Base de Datos / Tabla)                          
-- Autor: GH - Octubre 2013                                                                      
-- --------------------------------------------------------------------------


SELECT
db.name as 'Database',
o.name as 'Table',
case when I.name is null then 'Heap' else I.name end as 'Indice',
left(avg_fragmentation_in_percent,4) as '% frag'

--FROM sys.dm_db_index_physical_stats (NULL, NULL, NULL, NULL, NULL) AS a   

FROM sys.dm_db_index_physical_stats (DB_ID('NOMBRE BASE DE DATOS'),NULL, NULL, NULL, NULL) AS a  

--FROM sys.dm_db_index_physical_stats (DB_ID('NOMBRE BASE DE DATOS'), OBJECT_ID('NOMBRE DE TABLA'), NULL, NULL, NULL) AS a  

-- left para obtener nombre db --
LEFT JOIN Sys.Databases as DB    
on A.Database_Id = DB.Database_Id

-- left para obtener nombre del idx --
LEFT JOIN sys.indexes AS I
ON
a.object_id = I.object_id AND
a.index_id = I.index_id

-- left para obtener nombre tabla --
LEFT JOIN sys.objects as o
on I.[object_id] = o.[object_id]
----------------
WHERE avg_fragmentation_in_percent > 20 -- % de fragmentación en este caso > 20
and index_level = 0 --> analizando la rama principal de los índices
and page_count > 1000 --> mas de 1000 hojas
order by

o.name 


Mantenimiento de Indices - FRAGMENTACION DE INDICES SQL SERVER

A - Conceptos Generales y Tipos de Fragmentación

Los índices son los únicos objetos que pierden su efectividad con el paso del tiempo si no se le da un mantenimiento adecuado.

La fragmentación de los índices tiene lugar cuando se modifican los registros de una tabla por inserción, update o borrado de datos y estas modificaciones afectan una o más páginas del índice.

Hay dos tipos de fragmentación a nivel de índice, ambas afectan directamente la performance de los procesos que utilizan los mimos, veamos:

A- Fragmentación Interna: es el tipo de fragmentación que tiene lugar cuando se lleva a cabo una operación de borrado. El borrado de datos genera liberación de espacio en las páginas de índice, lo que produce que sólo una parte de la página del índice esté ocupada. Esto provoca que el SQL Server con el tiempo tenga que leer más páginas de índice que las necesarias, por el mal aprovechamiento que implica tener páginas de índice semi vacías.

B- Fragmentación Externa: cuando llevamos a cabo un insert y la página no puede almacenarse, el SQL Server genera una nueva página para alojar los datos insertados, conservando un orden lógico, pero no un orden físico en las páginas de índice, a esto se lo conoce como “page split” . Cuando el SQL Server hace un page split está generando fragmentación externa.

B - Detección y Evaluación de la Fragmentación
A partir del SQL Server 2005 fue reemplazada la utilidad DBCC SHOWCONTIG por una vista del sistema llamada SYS.DM_DB_INDEX_PHYSICAL_STATS , la cual arroja datos más certeros y consume menos recursos del sistema en su ejecución.

Veamos pues un ejemplo mediante el cual se relevan aquellos índices que cuentan con más de 1000 páginas y un porcentaje de fragmentación superior al % 20.

SELECT
b.name as 'database',
c.name as 'name',
index_type_desc,
avg_fragmentation_in_percent,
page_count
FROM sys.dm_db_index_physical_stats (9, NULL, NULL, NULL, 'limited')ASA
LEFT JOIN SYS.DATABASES B
ON A.DATABASE_iD = B.DATABASE_ID
LEFT JOIN SYS.OBJECTS C
ON A.OBJECT_iD = C.OBJECT_iD
WHERE avg_fragmentation_in_percent > 20 -- buscando % de fragmentación en este caso > 20
and index_level = 0 --> analizando la rama principal de los indices
and page_count > 1000 --> mas de 1000 hojas
order by name
Vamos a hacer un paréntesis aquí y veamos lo que Microsoft nos dice en torno a los niveles de fragmentación:

A- “ Fragmentación Inócua”: Microsoft dice que no debiéramos estar preocupados por la eventual fragmentación de índices que contienen menos de 1000 páginas. Este es todo un parámetro a tener en cuenta. También nos habla de no tomar en cuenta la fragmentación existente sobre tablas pequeñas ya que las mismas no tienen impacto sobre la performance de las queries y son muy difícil de ser eliminadas por rutinas de reorganizado o reconstrucción de índices.

B- “Fragmentación Baja”: es aquella que no supera el % 5 del índice. La recomendación es no intentar eliminar la misma, pues puede ser mayor el costo de hacerlo que los beneficios obtenidos como consecuencia de ello.

C- “Fragmentación Media”: es la fragmentación > % 5 y < = al %30.: Microsoft recomienda hacer un Reorganize de los índices.

D- “Fragmentación Alta”: es la fragmentación > al % 30: Microsoft recomienda hacer un Rebuild de los índices.


C - Métodos de Desfragmentación
Hay varios métodos para desfragmentar índices, es importante elegir el método adecuado acorde al entorno de aplicación del mismo.

1) Alter Index Reorganize

• Se recomienda usar este método cuando el % de fragmentación es de > % 5 y < = al %30.:
• Se utiliza la instrucción ALTER INDEX con la claúsula REORGANIZE. Esta instrucción reemplaza a la vieja DBCC INDEXDEFRAG
• La reorganización se realiza en línea ya que no mantiene grandes bloqueos
• Este proceso utiliza una mínima cantidad de recursos del sistema
• Básicamente se desfragmentan los índices, se compactan las páginas vacías acordes al valor de fill factor y reordenan la páginas de índices a nivel físico, para que coincidan con el ordenamiento a nivel lógico.
• Para reorganizar las páginas de un índice particionado en una de las particiones, se be utilizar la cláusula PARTITION
• El reorganizar un índice No regenera las estadísticas.
Alter Index "Nombre_Indice" on "Nombre_Tabla"

Reorganize;

  2) Alter Index Rebuild / Create Index with Drop_Existing = ‘on’

• Se regenera el índice en su totalidad respetando el fill factor y, se hace un update de las estadísticas
• Es una operación que demanda muchos recursos del sistema puesto que el motor de base de datos requiere el doble de espacio del que ocupa el índice para crear primero el índice nuevo y luego borrar el viejo. Además se toma un espacio adicional para hacer esta operación en el disco salvo que se le indique hacer el ordenamiento en la TempDb
• Se usa sólo para reconstruir índices cuyo porcentaje de fragmentación esté por sobre el % 30
• Puede ser realizada en línea excepto que el índice esté sobre columnas de tipo LOB (image, text, nvarchar, xml, varchar(max)), o que sean índices XML
• Se puede hacer un Rebuild de un índice con la cláusula PARTITION, sólo en el caso del método Alter Index
Alter Index "Nombre_Indice" on "Nombre_Tabla"
Rebuild;
Create Index "Nombre_Indice" on "Nombre_Tabla(nombre campo)"
With Drop

3) Disabling Indexes

• Es el método de reconstrucción total de un índice que menos recursos consume.
• Al deshabilitar un índice se impide que el usuario tenga acceso al mismo y a las tablas subyacentes. Esto hace que solo pueda ser usado en ambientes que permitan un downtime para llevar a cabo la operación.
• No requiere a diferencia de la sentencia Rebuild del doble de espacio en disco que usa el índice, puesto que la definición del índice se conserva en los metadatos eliminándose físicamente el mismo. (para ello deben deshabilitarse todos los índices clustered y luego, en otra transacción, se debe implementar un Rebuild de todos los índices)

Alter Index "Nombre_Indice" Clustered on "Nombre_Tabla"
DISABLE;
Alter Index ALL on "Nombre_Tabla"

REBUILD with (fillfactor = xx, sort in TempDb = On);



4) Cuándo los Indices Non-Clustered se reconstruyen automáticamente?


• Desde un Heap a un Cluster: Se recontruyen los índices Non Clustered

• Desde un Cluster a un Heap: Se reconsruyen los índices Non Clustered

• Rebuilding un Unique Cluster Index : No se reconstruyen los indices Non Clustered

• Rebuilding un No Unique Cluster Index –

4.1) Hasta sql server 2000 se reconstruyen los índices non clustered
4.2) Desde sql Server 2005 ya no se reconstruyen los índices nonclustered