jueves, 27 de octubre de 2016
Update a web application URL and IIS bindings for SharePoint 2013
https://technet.microsoft.com/en-us/library/cc262366.aspx
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
$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.”
Cause:
This issue may occur because of one of the following:
- The SQL Server service is not running.
- The SharePoint web application pool is stopped.
- 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.
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.
Importante:
|
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
- Requisitos
de hardware: servidores web, servidores de aplicaciones e instalaciones
MinRole
- Requisitos
de software para SharePoint Server 2016
- Software opcional admitido en
SharePoint Server 2016
- Vínculos
a software aplicable
- Operaciones
del instalador de requisitos previos y opciones de línea de comandos
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:
|
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:
|
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
Nota:
|
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.
|
Nota:
|
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)
|
Importante:
|
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
Nota:
|
|
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®
|
|
Nota:
|
|
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
- Un
explorador compatible. Para obtener más información, consulte Planear
la compatibilidad con exploradores en SharePoint Server 2016.
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
|
Puede instalar Administrador de flujos de trabajo en un
equipo dedicado.
Servicios de Access usa este complemento para SharePoint
Server 2016.
|
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.
- Windows Server 2012
R2
- Office 365
Enterprise
- Microsoft SQL Server 2014 Service Pack 1
(SP1)http://go.microsoft.com/fwlink/p/?LinkId=618406
- Microsoft .NET
Framework, versión 4.6
- Microsoft WCF Data
Services 5.6
- Microsoft Information Protection and
Control Client (MSIPC)
- Microsoft SQL Server 2012 Service Pack 1
(SP1) Native Client (se instala con Microsoft SQL Server 2012 Feature
Pack)
- Microsoft ODBC Driver 11 for SQL Server
- Microsoft Sync Framework Runtime v1.0 SP1
(x64)
- Microsoft AppFabric
1.1 para Windows Server
- Paquete de
actualizaciones acumulativas 7 de AppFabric 1.1 para Windows Server
- Paquete
redistribuible de Visual C++ para Visual Studio 2012
- Paquete
redistribuible de Visual C++ para Visual Studio 2015
- Microsoft
Silverlight 3
- API administrada de
servicios web de Exchange, versión 1.2
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:
- Rol
Servidor de aplicaciones, Rol Servidor web (IIS)
- Cliente
nativo de Microsoft SQL Server 2012 SP1
- Microsoft ODBC Driver 11 for
SQL Server
- Microsoft Sync Framework
Runtime v1.0 SP1 (x64)
- Windows
Server AppFabric 1.1
- Windows
Identity Foundation (KB974405)
- Microsoft Information
Protection and Control Client 2.1
- Servicios
de datos WCF 5.6 de Microsoft
- Microsoft
.NET Framework 4.6
- Paquete
de actualizaciones acumulativas 7 de Microsoft AppFabric 1.1 para Windows
Server (KB 3092423)
- Paquete
redistribuible de Visual C++ para Visual Studio 2012
- 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
[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!
- 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.
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
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.
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
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
Suscribirse a:
Entradas (Atom)