Si trabajáis con Azure, antes o después os tendréis que enfrentar a los Service Principals, para utilizarlos como cuentas de servicio, de tal modo que una persona, proceso o aplicación pueda autenticarse utilizando un Service Principal para acceder a los recursos de Azure a los que tiene acceso. Otro caso típico, al empezar en el mundo DevOps para montar procesos de integración continua, y poder conseguir del despliegue automatizado de infraestructura y aplicaciones, pudiendo necesitar no sólo usarlos sino también crearlos de forma automatizada (desde otro Service Principal). Hay muchas situaciones en las que necesitaremos registrar una aplicación en Azure, en unas ocasiones para crear un Service Principal para poder acceder a recursos (cual cuenta de servicio), en otras para configurar OAuth 2 para una Aplicación Web que estemos desarrollando o personalizando, etc. Si bien la forma más habitual de hacer esto es desde el Portal de Azure, tenemos una forma adicional que nos puede ser de gran utilidad: el Application Registration Portal En el presente artículo vamos a realizar una instalación de HDP Hortonworks desde Apache Ambari sobre Centos7, comenzando desde cero. Aunque en este laboratorio vamos a realizar la instalación sobre un único nodo, el procedimiento de instalación sería similar si desearamos hacerlo sobre decenas de servidores, con la única diferencia de tener que organizar mejor la distribución de roles y servicios entre las diferentes máquinas. Ambari desplegará su agente en cada servidor (incluyendo en el local, si aplica), para realizar la instalación de los componentes que corresponda, y posteriormente nos ayudará en su administración y mantenimiento. Mola. Tenemos una forma muy fácil y ligera de utilizar Hadoop, Hive, y Spark en nuestro portátil, principalmente para pruebas de laboratorio, incluso con fines formativos. Se trata de la instalación en Local Mode de Hadoop, Hive y Spark. No tendremos necesidad de arrancar servicios, no tendremos YARN, y nuestro filesystem hará a su vez de HDFS, pero en función de para qué lo necesitemos, y sin tratarlo como un entorno productivo, nos puede valer y mucho. tmux es una utilidad muy muy interesante en el mundo Linux. Para mí, lo más importante es poder capturar una sesión de terminal que ha terminado, quizás, por un corte de red (sin tmux, nuestra sesión habría muerto, y no todo se puede lanzar con nohup y & para que perdure en background). Pero además, tmux también permite el trabajo cooperativo, dos o más personas conectadas a la misma sesión de terminal, permitiendo trabajar juntos (un poco a lo Google Docs). Hay más cosas, como poder partir nuestra ventana (ej: split vertical u horizontal, para tener dos terminales). Muy útil, y disponible desde tu Raspberry, hasta en tu mega pedazo servidor RedHat, CentoOS, Ubuntu, o lo que más te guste. ¿A qué esperas para instalarlo? Hace pocos días explicábamos como montar nuestro propio Cluster de Hadoop, Hive, y Spark sobre un conjunto de Raspberry, y entorno fabuloso para el aprendizaje y como laboratorio, que nos permitirá un acercamiento a las tecnologías Big Data con un coste muy bajo, además de que las Raspberry son dispositivos que ocupan muy poco espacio, gastan poca electricidad, y no hacen nada de ruido. En esta ocasión, vamos a extender nuestro Cluster configurando el metastore de Hive con un MySQL, y además de configurar Spark para acceder al metastore de Hive. En ocasiones nos puede interesar poder acceder a un Cluster remoto de Spark y Hive desde un Jupyter Notebook en nuestro escritorio de trabajo, de tal modo que podamos ejecutar Jupyter Notebooks que ejecutan sólo código local, o también que accedan a uno u otro Cluster Spark según nos haga falta. Esto lo podemos conseguir fácilmente si tenemos instalada la interfaz REST de Livy en nuestro Cluster de Spark, y además nos instalamos y configuramos SparkMargic en nuestra máquina escritorio, para conectar con Spark a través de Livy. Fácil y sencillo. Apache Livy nos ofrece una interfaz REST, con la cual vamos a poder extender nuestro Cluster de Spark, para hacerlo accesible desde el exterior, de una forma muy sencilla. De este modo podremos lanzar Jobs de Spark desde cualquier sitio, utilizando Scala, R, ó Python, incluso de forma interactiva. Podemos darle diferentes usos, desde permitir el acceso remoto a nuestro Cluster Spark desde la Web o desde Aplicaciones Móviles, hasta utilizarlo para dar servicio a los Jupyter Notebooks remotos de nuestros Científicos de Datos. Un ejemplo de caso de uso, la solución HDInsight de Microsoft (Hortonworks). Los Certificados Autofirmados (Self Signed Certificates) son una herramienta de gran utilidad en diferentes situaciones, por la agilidad de poder crearlos uno mismo, evitando dependencias de gestiones adicionales con la KPI de la compañía o adquiriendo certificados a compañías externas. Desde PowerShell tenemos la posibilidad de crearlos utilizando el comando New-SelfSignedCertificate, pero con el detalle de que se creará dentro del almacén de certificados del usuario o de la máquina. Sin embargo, tenemos la posibilidad de utilizar después el comando Export-PfxCertificate, y así exportarlo a un fichero PFX protegido con contraseña, en caso de que necesitemos transportarlo e importarlo en otra ubicación. Una opción muy interesante desde un punto de vista didáctico es montar un Cluster de Hadoop (con MapReduce y Yarn), Hive, y Spark (con Scala) sobre un conjunto de Raspberry (una, dos o más, aunque lo suyo es al menos dos o tres para poder jugar con los diferentes roles). Esto nos permitirá acercarnos un poco más a estas tecnologías Big Data que tan de moda se están poniendo, y poder experimentar su instalación, configuración y funcionamiento básico, sin necesidad de una gran inversión en hardware. Big Data for the masses. Muchas veces en nuestro día a día, necesitamos compartir un trozo de código o de texto con otra persona, quizás porque estamos realizando juntos alguna tarea de trabajo y nos encontramos en localizaciones distintas contactando por una llamada de teléfono, o quizás estamos juntos pero cada uno está trabajando con su portátil. Una forma es intercambiar información a través de un mail, o quizás un chat de Skype. Otra alternativa es Collabedit, que nos permitirá compartir un trozo de código entre varias personas, a través de una URL. Fácil y sencillo. Sin duda, el frikiconsejo de la semana. Un error que nos podemos encontrar al trabajar con Máquinas Virtuales en Microsoft Azure, es que alcancemos el límite de Cores que tengamos asignados en nuestra Subscripción para una Región Geográfica concreta, lo cual, nos puede producir errores del tipo Operation results in exceeding quota limits of Core, al crear una nueva Máquina Virtual o al cambiar el Sizing de una ya existente. La solución es sencilla, comprobar qué límite de Cores es el que ha sido superado, y abrir un caso de soporte para ampliarlo. Actualmente, las Máquinas Virtuales que podemos crear en Azure tienen que utilizar discos VHD, los cuales pueden ser de tipo Unmanaged Disk (simples ficheros VHD dentro de una Storage Account, que podría ser Estándar HDD ó Premium SSD) o bien de tipo Managed Disk (en este caso, vemos el disco como un Recurso de Azure más, y nos despreocupamos de tener que crear una Storage Account, es decir, más PaaS). Si bien, la tendencia es utilizar Managed Disks, estos tienen algunos inconvenientes (por ahora) como que una vez los hemos creado, no podemos moverlos ni a otro Grupo de Recursos ni a otra Subscripción (por supuesto, de renombrarlos, ni hablamos). Una alternativa, parar la máquina virtual y clonar el disco. Spark se está posicionando como motor de referencia para procesamiento de datos a gran escala (Big Data), capaz de ejecutar programas más rápido que Hadoop, gracias a sus capacidades de procesamiento en memoria (In-Memory), de procesamiento en paralelo, y de su API para programar en Python (PySpark). Con Spark podemos programar en Java, Python, Scala y R, e incorpora librerías para datos estructurados (Spark SQL), gráficos computacionales (GraphX), Machine Learning (MLib), y Streaming (Spark Streaming). Ahora ya sólo queda, poder instalarlo en nuestras Windows con facilidad. Si bien es cierto que podemos utilizar un Service Principal para conectarnos a Azure desde PowerShell a través de una Contraseña, en algunos escenarios nos resultará más fácil y seguro conectarnos a Azure con un Service Principal y un Certificado Digital (en lugar de usar una autenticación basada en contraseña). En el presente artículo se muestra la forma de poder registrar una App en Azure AD asociada a un Certificado Digital y crear un Service Principal para la misma, de tal modo que podamos utilizarlos para conectarnos de forma no interactiva a Azure desde nuestros Scripts o desde nuestras aplicaciones, y ejecutar el código que necesitemos. Si trabajamos de forma habitual con Azure, antes o después nos encontraremos con la necesidad de poder autenticarnos de forma no interactiva con PowerShell en Azure, algo que podemos realizar utilizando un Service Principal con Contraseña (lo que vendría a ser una cuenta de servicio en un entorno tradicional u On-Premise), siempre teniendo en cuenta lo delicado que es todo esto desde el punto de vista de la seguridad (concedamos permisos mínimos, reciclemos las contraseñas con periodicidad, e idealmente que la contraseña esté almacenada en un Key Vault y que ninguna persona sea conocedora de la misma), ya que al final es Cloud, y estamos en Internet, en vivo y en directo. Una de las tares que necesitaremos realizar en más de una ocasión, es la creación de un certificado digital auto-firmado (self-signed), para poder hacer nuestras pruebas con autonomía, aunque para entornos productivos podamos recurrir a certificados comerciales o emitidos por la CA de nuestra compañía. Para esto podemos utilizar la utilidad makecert.exe que nos creará un fichero pvk (clave privada) y un fichero cer (clave pública), que podremos convertir a un fichero pfx con la utilizada pvk2pfx.exe Azure Data Factory (ADF) es el Orquestador nativo de Azure para entornos de Big Data, el equivalente a Oozie y Sqoop de Apache. Se trata de un servicio (PaaS) en modalidad de pago por uso (pay as you go), que permite encapsular Workflows ó Pipelines, las cuales pueden contener cualquier actividad necesaria para copiar y procesar/transformar datos (ej: U-SQL, Azure ML, MapReduce, Spark, Hive, etc.), y también nos permitirá planificar su ejecución desatendida y recurrente con hasta una Cadencia de Ingesta de Datos de 15 minutos (Time Slice ó Activity Window). Podremos redesplegarlos, pausarlos, pararlos, reanudarlos, reprocesarlos, etc. Oozie y Sqoop son dos de las principales tecnologías que podemos encontrar dentro de un Cluster de Hadoop, como es el caso de Azure HDInsight (Hortonworks). Oozie es un motor que permite ejecutar Workflows de acciones de diferentes tipos (ej: MapReduce, Hive, Pig, Sqoop, enviar emails, etc.) dentro de un Cluster de Hadoop, para que todas estas acciones se realicen en el orden correcto, permitiendo paralelizar, ejecución en ramas condicionadas, control de errores, etc. Sqoop es una tecnología que permite transferir datos a dentro y a fuera del almacenamiento compartido de nuestro Cluster de Hadoop HDInsight. Es un servicio para integrarse con bases de datos a través de JDBC, que traduce su esfuerzo a trabajos MapReduce. Pig es una tegnología que nos permite realizar transformaciones de datos utilizando el lenguaje Pig Latin, para lo cual utiliza resultados intermedios que denomina relaciones (relations), y que podemos extender creando funciones definidas por el usuario (UDF) en lenguajes como Java, C# y Python. Podemos utilizar la interfaz de comandos Grunt desde una sesión SSH (a través del comando pig), para ejecutar sentencias Pig Latin de forma interactiva o como un bloque (batch). Pig es una de las tecnologías que tenemos disponibles al crear un nuevo Cluster Hadoop con Azure HDInsight (Hortonworks). Hive proporciona un lenguaje con una sintaxis similar a SQL (HiveQL), que permite leer, escribir, y gestionar grandes DataSets. De este modo, podemos leer el contenido de una carpeta como si fuera una tabla, utilizando una sintaxis similar a SQL. Estas consultas son convertidas a trabajos (Jobs) que tienen asociadas operaciones Map and Reduce (habitualmente utilizando el motor Tez, en lugar del motor MapReduce). Hive lo tenemos disponible en Azure al montar un Cluster de Hadoop con HDInsight (que es Hortonworks). Una vez desplegado HDInsight, podremos consumir Hive desde la Hive Shell en una sesión SSH, la consola web para ejecutar consultas HiveQL (HUE), Visual Studio con Azure SDK, PowerShell, ODBC para Hive, etc. Como parte de la Solución de Big Data ofrecida por Microsoft en Azure, tenemos Azure Data Lake Store (como solución de almacenamiento infinito, cifrado, compatible con HDFS, e integrado en Azure AD) y Azure Data Lake Analytics (como solución de procesamiento masivo en paralelo), dos soluciones ofrecidas en formato Software as a Service (SaaS), que gracias a la potencia y riqueza del Lenguaje U-SQL (incluyendo su integración con C#, la utilización de los catálogos U-SQL de Analytics, y su integración con Visual Studio), nos permitirán realizar cualquier cosa que nos propongamos, de una forma rápida y sencilla. Hay producto. Git es el software de control de versiones de código diseñado por Linus Torvalds, ligero y distribuido, que se basa en una sencilla estructura de ficheros y carpetas por repositorio, gestionada a través de línea de comandos (el comando git). Git ha obtenido una gran popularidad en los últimos años, y junto a soluciones cloud como GitHub, no sólo permite los entornos de despliegue rápido e integración continua, sino que también favorecen el Social Coding, colaborar en proyectos de software de una manera rápida, sencilla y distribuida: clonar repositorios para trabajo local, push/merge de código, issues, forking, pull requests, y mucho más. Para quién aún no lo sepa, Visual Studio 2017 está disponible como descarga gratuita, tanto para Windows como para macOS, en su versión Visual Studio 2017 Community, prácticamente idéntica a la edición Professional, donde la principal diferencia la encontraremos en las condiciones de licenciamiento. De este modo, Visual Studio es accesible al gran público, para entornos de aprendizaje, investigación, desarrolladores individuales, contribución a proyectos de código abierto (Open Source), y organizaciones no empresariales para un máximo de cinco usuarios (la pequeña empresa). Visual Studio Code es un editor de código fuente gratuito, de código abierto (open source) y multiplataforma (disponible para Windows, Linux y macOS), desarrollado por Microsoft. Es ligero, rápido y potente, y nos ofrece un montón de características como soporte para debugging, integración GIT, completación inteligente de código, resaltado en colores de la syntasis, refactorización de código, snippets, etc. Además es personalizable y extensible. Azure Load Balancer es un Balanceador de Carga de nivel 4 (Transporte: TCP y UDP) capaz de distribuir el tráfico entrante entre un conjunto de VMs disponibles/saludables de Azure, en base a un algoritmo de distribución de carga basado en hashes. De este modo conseguimos una interesante solución de Alta Disponibilidad y Rendimiento para nuestras Aplicaciones en Azure, tanto para el balanceo del tráfico externo (ej: tráfico de Internet hacia Frontales Web) como interno (tráfico de Frontales Web a Servidores de Aplicaciones), soportando también NAT (Network Address Translation) para enrutar tráfico entre direcciones IP públicas y privadas. Microsoft Azure ofrece la solución Cloud Services, como una forma de desplegar Aplicaciones en Azure en formato PaaS (Platform as a Service), escalable, económica, y de confianza, bajo un modelo que distingue entre dos tipos de Roles: Web Roles y Worker Roles. Tiene las ventajas de permitir la conexión remota a las máquinas, la instalación de SW, y la posibilidad de conexión directa a una Virtual Network (VNet) de Azure, pero sin la complejidad de un modelo IaaS (Infrastructure as a Service) en el que tenemos que administrar completamente toda la infraestructura. Una solución intermedia entre el servicio de Web Apps y las Azure VMs. Azure ofrece múltiples soluciones de conectividad, desde conexiones privadas con alto ancho de banda y baja latencia para conectar redes On-Premise a Azure (ExpressRoute), pasando por conexiones VPN desde redes On-Premise o desde equipos individuares a Virtual Network (VNets) de Azure, hasta la creación de túneles VPN contra las VPC de Amazon AWS. Todo completo abanico de posibilidades de interconexión, para satisfacer todas nuestras necesidades de una forma fácil y segura, entre las que podremos elegir (o las podemos complementar entre sí) en función de nuestro caso concreto y de nuestro presupuesto. Azure Active Directory (Azure AD) es la solución de Directorio y el Sistema de Gestión de Identidades de Microsoft en Azure, a través del cual, se puede gestionar la identidad y acceso de usuarios a las Aplicaciones, sean On-Premise on en Azure, independientemente del tipo de dispositivo (iOS, Android, Windows, MacOS, etc.). Permite tanto la Sincronización de Usuarios (Same Sign-On) como la Federación de Usuarios (Single Sign-On: SSO), así como la integración con Proveedores de Identidad externos (ej: Facebook, Google, Linkedin, Amazon, etc.). Todo esto lo convierte en una solución flexible e ideal para facilitar la autenticación en nuestras Aplicaciones. Azure Service Bus es el principal servicio de entrega de mensajes en Azure, que garantiza la entrega de mensajes entre dos extremos aunque no estén conectados simultáneamente, soportando transacciones, detección de duplicados, expiración basada en tiempo, etc. Una solución ideal para la comunicación entre diferentes Aplicaciones (Service Bus Queues, Topics, & Relays) y el consiguiente desacoplamiento de las mismas, así como también sirve de mecanismo de comunicación entre Aplicaciones y Dispositivos/Usuarios (Notification Hubs), o bien entre Dispositivos/Usuarios y las Aplicaciones (Event Hubs), en todos los casos de una forma fácil y rápida, tanto para entornos Cloud como On-Premise. Azure CosmosDB es la evolución de DocumentDB, una base de datos NoSQL de Clave-Valor orientada a Documentos (datos no-estructurados), que ha sido diseñada, construida, y optimizada para JSON. Es una base de datos altamente escalable, elástica, segura (cifrada por defecto), consistente y altamente disponible, con un mínimo esfuerzo de mantenimiento y de desarrollo, y con soporte para replicación geográfica entre diferentes regiones Azure. Es la base de datos Mundial, la alternativa a Amazon DynamoDB. Se ofrece en formato DBaaS (Database as a Service) dentro de Azure, en modalidad de pago por uso. Ofrece soporte nativo para JavaScript (en lugar de T-SQL), SQL, transacciones sobre documentos JSON sin esquema, y programación de Procedimientos Almacenados, Triggers, y UDFs (Funciones Definidas por el Usuario). Además soporta múltiples APIs de acceso, como SQL, MongoDB, Cassandra, Azure Table, y Gremlin (Graph), facilitando la migración a Azure de aplicaciones existentes. Azure Storage es la solución de almacenamiento de Microsoft en Azure, masivamente escalable (podemos almacenar terabytes de información y satisfacer las más ambiciosas necesidades de Big Data), de pago por uso (no por capacidad), accesible desde REST API y desde los lenguajes de programación más comunes, replicado siempre al menos en tres sitios y con opciones adicionales de replicación geográfica, con soporte nativo de Tablas NoSQL y Colas (Queues), y con diferentes opciones de seguridad para compartir el acceso con terceras personas y aplicaciones (ej: Shared Access Signatures - SAS, Stored Access Policy, etc). Una solución muy completa, y uno de los principales pilares de Azure. Azure Resource Manager (ARM) es la nueva forma de desplegar y gestionar los recursos en Azure, definiendo Recursos, Grupos de Recursos, y Plantillas. En lugar de gestionar los Recursos de una forma individual y plana, con ARM podemos definir un Grupo de Recursos (una agrupación lógica o contenedor de Recursos) que puede representar un servicio completo (ej: un Blog, una aplicación de gestión, una granja de SharePoint, etc.) del cuál contendrá todos los Recursos necesarios, y sobre el que podremos delegar la administración. Además, podremos definir una Plantilla (Resource Group Template o ARM Template) utilizando una descripción JSON, que define un modelo de recursos del servicio, que podremos desplegar como una unidad lógica, de forma fácil y rápida. Azure Traffic Manager es un balanceador de tráfico de red integrado como un servicio de Azure, que permite distribuir el tráfico de red entre distintos destinos (end-points), los cuales pueden estar dentro o fuera de Azure, sean Web Apps, Azure VMs, o cualquier otro tipo de destino tcp. Es una solución basada en DNS y en la monitorización de la salud/disponibilidad de los destinos (end-points), que nos permite elegir entre diferentes algoritmos de gestión de tráfico, permitiendo enrutar el tráfico al destino más cercano (ej: distribución geográfica), repartir el tráfico entre varios destinos (distribution: según los pesos asignados), o enrutado en caso de fallos (failover). Las Web Apps de Microsoft Azure, son la principal solución del Cloud de Microsoft para la publicación de Aplicaciones Web en formato PaaS (Platform as a Service) en un entorno compartido, fácilmente escalable, tanto en Horizontal como en Vertical. Sus funciones de Auto-Scale nos permitirán definir un número mínimo y máximo de Instancias, así como un conjunto de reglas con condiciones para aumentar y disminuir el número de Instancias de forma automática y garantizar un nivel de servicio apropiado con un uso mínimo y racional de recursos, que en un segundo nivel podríamos exponenciar con Azure Traffic Manager. ¿Y si aún así se me queda pequeño y/o necesito un mayor control de la seguridad? Entonces el App Service Environment (ASE) es para tí. Ta to pensao. Azure CLI 2.0 (conocida también como X-Plat CLI en su primera versión Azure CLI 1.0) es una interfaz de comandos Open Source y multi-plataforma (Windows, Linux y MacOS) para gestionar los recursos de Microsoft Azure. De este modo, podemos realizar acciones sobre Microsoft Azure (crear, modificar, consultar, o eliminar objetos de Microsoft Azure), de una forma fácil y rápida, directamente desde la Línea de Comandos de Linux/MacOS (Bash) o desde el Comand Prompt de Windows (incluso desde el bash de Windows 10), sin tener que utilizar PowerShell. Además, también lo tenemos disponible directamente desde el Portal de Azure, a través del Azure Cloud Shell, y por lo tanto disponible en cualquier momento y desde cualquier lugar. El Cacheo (Caching) ayuda a mejorar el rendimiento y escalabilidad de las Aplicaciones, creando una copia temporal de los datos que son accedidos más frecuentemente, sobre un almacenamiento rápido y cercano a la Aplicación. El patron Cache-Aside propone una solución al problema de refresco de la Caché, utilizando una Caché inteligente de Lectura y Escritura (Read/Write-Through Caching), de tal modo que las Aplicaciones puedan acceder directamente a la Caché, si el dato solicitado no estuviese en caché lo recuperaría de su almacenamiento original de forma transparente, y además, se permitiría modificar el contenido de la Caché, lo cual realizaría la correspondiente actualización sobre el almacenamiento original para su persistencia. Una técnica común en el Desarrollo de Aplicaciones (por ejemplo para la realización de trabajos pesados) es la utilización de una Cola de Mensajes Asíncrona, de tal modo, que ciertos trabajos puedan ser solicitados asíncronamente a través de dicha Cola, asegurando así que el Front-End o la Lógica de Negocio, no se quedan bloqueados hasta la finalización de tal trabajo, favoreciendo una mejor experiencia de usuario. Una aproximación correcta, pero en la que un único Consumidor (Receiver) podría actuar como un cuello de botella. Por ello, el patrón Competing Consumers define múltiples Consumidores coordinados entre sí, especialmente útil en entornos con cantidades muy variables de peticiones por su escalabilidad. Un Patrón de Diseño que podemos aplicar para gestionar el acceso a recursos que puedan estar fuera de servicio temporalmente (por picos de carga, red, etc.) es el Circuit Breaker, que simula el funcionamiento de un interruptor eléctrico (switch) inteligente, que permite anticiparse a ciertos errores (al contrario que el patrón Retry, que actúa siempre a posteriori) para intentar gestionarlos de una forma más efectiva. Para ello, necesitamos implementar un Proxy, con una lógica basada en una Máquina de Estados, capaz de prever si un recurso no va a estar disponible, para directamente ni siquiera intentar su acceso, con el objetivo de facilitar la recuperación rápida de dicho recurso al evitar reintentos que podrían sobrecargarlo incluso más. Internet es un entorno susceptible a fallos transitorios (ej: indisponibilidad temporal y timeouts por picos de carga de trabajo y por las comunicaciones de red), motivo por el cual, debemos garantizar que nuestras aplicaciones son capaces de anticiparse a esta situación, y manejar de una forma elegante y transparente para los usuarios, los intentos de conexión a los servicios y recursos de red que necesite (y encuentre temporalmente indisponible), mejorando así la estabilidad de nuestra Aplicación y la experiencia de usuario. En muchos casos son fallos que se corrigen solos automáticamente, y nuestra Aplicación sólo tiene que reintentar una o dos veces, para conseguir acceder con éxito, dependiendo del tipo de error. El concepto de las Grandes Bases de Datos y Arquitecturas Monolíticas, es ya un término antiguo, casposo, desfasado. Obvio. Llega un punto en el que dejan de ser escalables, la contención y los bloqueos en entornos de alta concurrencia y grandes tamaños superan las ventajas del hardware más potente y moderno. Divide y vencerás. Particionar la Base de Datos se queda corto, eso era antes. Necesitamos dar un pasito más. Aquí, una Arquitectura basada en Microservicios y un Particionamiento Horizontal entre múltiples Instancias de Base de Datos (Sharding), es la solución que elevará la escalabilidad de nuestra aplicación hasta el infinito y más allá. En la Nube, y fuera de ella. Las Aplicaciones Web están formadas por Páginas Web y otros elementos de carácter dinámico, esto es, que se generan o renderizan en tiempo de ejecución. Un Servidor Web recibe una petición HTTP, tras la cual realiza un trabajo y devuelve un resultado, habitualmente una Página Web que ha sido generada al vuelo, en muchas ocasiones con un contenido sólo y exclusivamente para ti. Pero no todos los contenidos que se sirven son así. Muchos ficheros auxiliares (hojas de estilo CSS, ficheros JavaScript, HTML estático, etc.) son contenidos puramente estáticos, igual que otros como imágenes y documentos para descarga, que se sirven sin ninguna transformación, y por tanto, son susceptibles de separarlos, para dejar que nuestro Servidor Web se dedique a generar y servir los contenidos dinámicos, sin desperdiciar recursos en unos contenidos estáticos que pueden ser servidos desde otra ubicación. En ocasiones, las Aplicaciones Web necesitan acceder a recursos externos (ej: contenidos multimedia, descargar o subir ficheros grandes, etc), de forma segura y autenticada, con el correspondiente consumo de recursos que esto implica para la Aplicación (procesador, memoria y ancho de banda). En el patrón Valet Key, la Aplicación concede una Clave o Token al cliente/usuario para que acceda directamente al contenido solicitado (descargándose de esta tarea, y facilitando así la escalabilidad), habitualmente con un carácter temporal, y unos permisos delimitados sobre un recurso concreto (ej: RO sobre un fichero en particular). Uno de los Patrones de Diseño más importantes para el desarrollo de Aplicaciones Web para la Nube (como sería el caso de Microsoft Azure) y que aplica también en el caso de las Aplicaciones Web On-Premise, es el Patrón de Diseño sin Estado (Stateless Design Pattern), que sugiere distribuir la carga de trabajo en dos Capas (UI Layer y Service Layer), cada una de las cuales puede ser ofrecida por un conjunto de Servidores Web independiente, y almacenando la información de Sesión en una ubicación externa (ej: Servidor de Estado, base de datos, etc.). Así, podremos escalar horizontalmente (hacia arriba y hacia abajo) la Granja de Servidores Web sin impactar en la Experiencia de Usuario, para satisfacer en todo momento las necesidades de nuestro servicio Microsoft tiene disponibles varios cursos gratuitos sobre Microsoft Azure en las plataformas EDX y OpenEDX.microsoft.con, que resultan un complemento ideal a los existentes cursos de Azure en Microsoft Virtual Academy (MVA), al tratarse un cursos más completos, en los que además de videos, tendremos laboratorios y exámenes que superar para conseguir su finalización con éxito. En muchas situaciones necesitamos apoyarnos en un gráfico, como suele ser el caso de tener que exponer el Diseño o Arquitectura de una Solución, para lo cual, al final acabaremos trabajándolo (muy probablemente) con nuestros amigos Visio y PowerPoint. En este caso, que será el más habitual, podemos hacernos la vida un poco más fácil, descargándonos algunos recursos gráficos o ejemplos que nos eviten empezar desde cero, para conseguir unos gráficos profesionales con un esfuerzo razonable. Para todos aquellos que quieran iniciarse en Microsoft Azure, o que estén preparándose para las certificaciones Cloud de Microsoft (exámenes 70-533, 70-534, y 70-535), en Microsoft Virtual Academy (MVA) podemos encontrar varios cursos gratuitos en formato video impartidos por el MVP Corey Hynes, que representa una acción formativa de aproximadamente 15h, para conseguir unas buenas pinceladas de la actual oferta Cloud de Microsoft con sus servicios de Microsoft Azure. Muy recomendable. El siguiente artículo describe como instalar el cliente de Oracle 12c (Oracle Instant Client) sobre Linux desde RPMs en un Centos7, una tarea que podemos necesitar, ya sea para poder acceder a Oracle con SQL*Plus, para que nuestras aplicaciones puedan conectar con Oracle, o quizás para migrar Oracle a PostreSQL (por decir algo, jeje) Preparando un entorno de Laboratorio con ORACLE 12c con los esquemas de ejemplo de ORACLE, como paso previo para para hacer pruebas de migración a PostgreSQL, me he encontrado con algunos problemas en la creación del esquema SH (Sales History), uno de los más interesantes para probar la Migración a PostgreSQL, al tener tablas particionadas de tipo Range. Sin embargo, en la creación del esquema SH, no se pudo cargar la tabla particionada costs, la cual se carga de la tabla externa sales_transactions_ext, al producirse un error del tipo ORA-29913: error in executing ODCIEXTTABLEOPEN callout al cargar SH.costs desde sales_transactions_ext Hoy me he encontrado con el error The directory name is invalid (mscorlib) al intentar abrir una nueva ventana de consulta (Query) en el SQL Server Management Studio (SSMS) de un SQL Server 2008 R2, algo que me ha sorprendido, ya que ayer funcionaba bien y hoy nones. No sé qué habrá ocurrido (quizás algún parche de Wintel, alguna actualización de antivirus tras el efecto WannaCry, vete tú a saber), pero al menos, hay una solución rápida y fácil que aplicar (al menos en el caso que se me ha dado hoy). La Intercalación (Collate) y el Página de códigos (Encoding) de una Instancia o de una Base de Datos, es una configuración que no se puede cambiar de forma trivial, y que habitualmente implica reconstruir dicha Instancia o Base de Datos, ya que afecta a cómo se almacenan internamente los datos, por lo que cómo mínimo habría que exportar, reconstruir tablas, e importar de nuevo. No vale con modificar directamente las tablas del sistema (UPDATE pg_database). Una de las posibilidades de PostgreSQL es poder utilizar lenguajes de programación adicionales a los propios SQL y plpgsql, de tal modo que podamos crear código de base de datos más potente y complejo. Uno de los lenguajes que podemos utilizar en la programación de base de datos en PostgreSQL es Python, un lenguaje de programación interpretado, de tipado dinámico, potente y multiplataforma, que soporta orientación a objetos y programación imperativa. El presente artículo describe su instalación y el error de la dependencia libpython2.6.so.1.0. PostgreSQL tiene una peculiaridad por la cual se puede inflar el tamaño de tablas e índices (table bloat e index bloat) y generándose la correspondiente fragmentación, como consecuencia del funcionamiento interno de su modelo de versionado de filas MVCC (Multi-Version Concurrency Control). Algo que inicialmente podría verse como un inconveniente, pero que por el contrario tiene otros beneficios (el Rollback es muy muy rápido), y que conociendo bien el funcionamiento de Plain Vacuum y Vacuum Full, conseguiremos igualmente mantener nuestras bases de datos en buen estado. Una tarea que tendremos que realizar de forma bastante habitual con PostgreSQL es actualizar a una Minor Version más reciente, una tarea que habitualmente es bastante sencilla, ya que suele limitarse a sustituir los binarios de la versión actual por la versión más reciente, sin que suela existir ninguna modificación en el formato de los ficheros de base de datos, WAL, etc. En el presente artículo, describimos la forma de actualizar una instalación PostgreSQL realizada con RPMs, para subir de una 9.2.8 a una 9.2.19. En este artículo vamos a ver todos los pasos a realizar para poder hacer un Backup de PostgreSQL, tanto del filesystem (en caliente) como del archivado de WAL, para seguidamente poder ver los pasos necesarios para recuperar PostgreSQL a un momento del tiempo, aplicando un Backup del filesystem y recuperando todas las transacciones necesarias desde el archivado de WAL hasta el momento del tiempo deseado. Una tarea muy importante para cualquier DBA de PostgreSQL, especialmente en entornos más críticos, en los que además deberíamos simularlo cada 6 meses para validar nuestro procedimiento de restauración. El presente artículo describe diferentes formas de crear un Backup de PostgreSQL listo para recuperar (Ready to Restore) con el comando pg_basebackup, que implica generar un backup con la información de las transacciones (WAL) necesarias para su recuperación, así como también veremos el procedimiento de recuperación de dichos Backups y podremos identificar las diferencias, ventajas e inconvenientes de cada uno de estos métodos Una de las tareas más importantes para un Administrador de Base de Datos es ser capaz de hacer correctamente un Backup y un Restore de una Instancia o Base de Datos. En el presente artículo vamos a describir paso a paso cómo realizar un Backup físico en caliente de una Instancia PostgreSQL 9.2 (lo que se conoco como un Backup Base, una copia del directorio data) y el correspondiente Restore sobre la misma Instancia, dejando dicha Instancia levantada en un estado consistente. Un error típico al intentar instalar SQL Server utilizando puntos de montaje y especificando la utilización de la raíz de un disco como directorio de Datos o de Log, es el error Updating permission setting sobre el fichero ResumeKeyFilter.Store de la carpeta del sistema System Volume Information. Un error incómodo, por el tiempo que hace perder (hay que desinstalar y volver a instalar), que se vuelve un poco más incómodo cuando se trata de una instalación en Cluster. Una forma sencilla de recopilar información de los contadores de rendimiento es utilizando los conjuntos de colectores de datos (Data Collector Sets) del Performance Monitor, incluido en las propias Windows. De este modo, podemos configurar rápidamente nuestros contadores de rendimiento favoritos desde una Plantilla, y planificar su recopilación diaria durante las horas de negocio (por poner un ejemplo), para así poder analizarlos durante la resolución reactiva de incidencias o bien preparando informes proactivos de rendimiento (estableciendo una baseline e identificando con antelación sus desviaciones). En muchas ocasiones necesitaremos realizar un estudio de rendimiento de un entorno SQL Server en particular. Uno de los datos a recopilar y analizar son los contadores de rendimiento, tanto los de SQL Server como los del Sistema (CPU, Memoria, Disco y Red), para detectar la existencia de cuellos de botellas o incluso de problemas más específicos. En el presente artículo compartimos un documento plantilla, que se puede utilizar como base, con una selección de contadores, incluyendo su descripción y umbrales, listo para rellenar con valores máximos y medias, para facilitar su interpretación. Una de las principales formas de analizar problemas de rendimiento en SQL Server es a través de la recopilación y análisis de contadores de rendimiento. Algunos de ellos nos aportarán información en función de si están dentro o fuera de un umbral determinado, y otros nos servirán para poder comparar, ya sea contra la misma máquina en un momento distinto del tiempo (o si establecemos una baseline), o bien contra los valores que presentan en otras máquinas. En el presente artículo mostramos varios de los principales contadores de rendimiento de SQL Server. En muchas ocasiones tenemos que realizar operaciones de borrado masivo de datos en SQL Server, una situación que nos puede generar problemas de diferente tipo, desde crecimientos de Log que nos pueden provocar incidencias de espacio en disco (con todas las implicaciones que esto puede llevar en entornos críticos de producción) hasta tiempos de ejecución elevados. Un truco habitual es realizar los borrados por lotes, ya que no es lo mismo borrar un millón de filas en una transacción, que borrarlo en un millón de transacciones. Algo que podemos hacer fácilmente utilizando un bucle con ROWCOUNT. La utilización del Task Scheduler de Windows Server 2008 R2 es de gran utilidad para planificar la ejecución de tareas periódicas (cargas de datos, operaciones de mantenimiento de la plataforma, etc.), tanto como administradores del Sistema Operativo, como de otros productos que corren por encima como SQL Server o SharePoint. Un error que podemos encontrarnos es que nuestra tarea no se ejecute, obteniendo un Return Code 1, sin una mayor explicación. ¿Cómo podemos solucionarlo? Si te gusta profundizar en algunos detalles de SQL Server, muy posiblemente te interese conocer los comandos no documentados (y en consecuencia, comandos no soportados) DBCC IND y DBCC PAGE, mediante los cuales podemos averiguar qué páginas pertenecen a una tabla o índice de SQL Server, así como visualizar el contenido de dichas páginas, algo de gran utilidad para poder ver y comprobar algunos detalles del funcionamiento interno de SQL Server. Para trastear y siendo informático, muchas veces nos interesará utilizar un editor hexadecimal, ya sea para visualizar el contenido de algún fichero, o incluso en alguna ocasión nos pueda interesar modificarlo. XVI32 es un Editor Hexadecimal, gratuito y además portable (no requiere instalación: descomprimimos el ZIP y a editar) La opción de Base de Datos Page Verify, puede establecerse al valor CheckSum (disponible desde SQL Server 2005), de tal modo que cada vez que SQL Server escribe una página en disco, calcule el CheckSum de todo la página que será almacenado en la cabecera de la misma, y así la próxima vez que SQL Server tenga que leer dicha página desde el disco, pueda utilizar este CheckSum para comprobar si la información que hemos leído del disco era correcta o no, detectando la existencia de corrupción de datos. En diferentes situaciones necesitaremos crear Relaciones de Confianza en Directorio Activo, entre diferentes Dominios de diferentes Bosques, incluso en algunos casos desearemos que confíen entre sí todos los Dominios de un Bosque con todos los Dominios de otro Bosque, para lo cual, deberemos crear una Relación de Confianza de tipo Bosque (Forest Trust). Sin embargo, este tipo de relaciones de confianza tienen algunas peculiaridades que podemos necesitar conocer, para una correcta planificación y ejecución de la misma, y para su posterior mantenimiento. Cuando tenemos que tocar Directorios Activos que no son nuestros, una de las cosas que tendremos que averiguar, es cuál es el Dominio Raíz de Bosque (Forest Root), algo que no es tan evidente cuando se trata de un Bosque formado por múltiples árboles. Si tenemos con quien hablar, para que nos lo cuente, genial. Sino, tendremos que averiguarlo por nuestros propios medios. Una forma de conseguirlo es utilizando la herramienta administrativa ADSI Edit, para conectarnos al RootDSE, y así comprobar el valor de la propiedad rootDomainNamingContext. Durante la creación de un nuevo Dominio de Directorio Activo con dcpromo, podemos encontrarnos con errores de validación de DNS, partiendo del mensaje genérico Warning: Domain Controller functions like joining a domain, logging onto a domain, and Active Directory replication will not be available until the DNS infrastructure for Active Directory is correctly configured, a partir del cual deberemos de revisar el mensaje de error específico que estamos obteniendo para su correcto análisis y resolución. Una tarea que necesitaremos en más de una ocasión, es poder descargar una o varias Soluciones instaladas en nuestra Granja de SharePoint, de tal modo, que tengamos acceso al fichero de Solución (WSP) desde el filesystem, ya sea con fines de inventariado, para análisis durante un proyecto de migración, como medida de contingencia para poder dar la marcha atrás antes de instalar una versión posterior, etc. Afortunadamente, podremos hacerlo directamente desde la SharePoint Management Shell (PowerShell), aunque adicionalmente existen herramientas de terceros para ayudarnos en este tipo de tareas. La configuración de un Cluster Multi-Site habitualmente requerirá la configuración de las propiedades RegisterAllProvidersIP y HostRecordTTL, para conseguir de este modo que se registre en DNS sólo y únicamente la Dirección IP que está levantada, y además que se cree el correspondiente registro DNS con un TTL bajo, de tal modo que ante una situación de balanceo que implique un cambio de Dirección IP, los equipos cliente no tarden demasiado tiempo en darse cuenta, y así minimizar la indisponibilidad del servicio. El presente artículo explica cómo configurar las propiedades RegisterAllProvidersIP y HostRecordTTL del Recurso Network Name utilizando PowerShell. En el presente artículo describimos la configuración básica de un Cluster Multi-Site sobre Windows Server 2008 R2 y SQL Server 2012 con AlwaysON, una solución de Alta Disponibilidad apropiada para Cluster Geográficos, sin necesidad de tener que utilizar VLANes extendidas (ahorro de costes), aunque con algunos inconvenientes que como veremos en el próximo artículo, se pueden solucionar fácilmente para conseguir un funcionamiento correcto del Cluster Multi-Site. Recientemente al realizar un IISRESET en una máquina de pruebas, descubrimos que ningún intento de IISRESET finalizaba con éxito, tras lo cual, nos encontramos con varios servicios que no arrancaban (NetMsmqActivator, NetPipeActivator, NetTcpActivator), encontrando errores del tipo Faulting module path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll al intentar arrancar alguno de estos servicios. Un error aparentemente relacionado con el .Net Framework 4, que finalmente conseguimos solucionar, instalando una versión posterior (Microsoft Framework 4.5.2). A la hora de desplegar (Deploy) o de retraer (Retract) una Solución (WSP) de Granja (Farm Solution) en SharePoint, es importante tener claro cómo comprobar el estado final, una operación básica que para quienes no trabajan habitualmente con SharePoint suele generar bastantes dudas. En el presente artículo explicamos de forma básica cómo comprobar el estado de una Solución (WSP) a través de PowerShell, para conocer si está o no correctamente desplegada o retraída. Si lo necesitamos, desde SQL Server es posible conocer la versión Cliente de SQL Server (o la versión del SQL Native Client) utilizada para conectar a SQL Server por un proceso cualquiera, ejecutando una simple consulta sobre una DMV, una información que en algunos casos nos puede resultar de gran utilidad poder obtenerla de una forma tan sencilla. Hace poco encontramos un paquete de SSIS 2005, que planificado para su ejecución diaria en un Job del Agente de SQL Server, no se ejecutaba correctamente. Iniciaba su ejecución, pero las tareas del final de paquete no llegaban a ejecutarse. Finalmente fue un simple problema, originado por la edición de dicho paquete desde una máquina remota con las herramientas de SQL Server 2008 R2 (SSMS), que provocaron un error en el Layout del paquete (The DDS Layout contains an invalid control progid. The layout will be regenerated), y que resolvimos simplemente editando dicho paquete SSIS de nuevo con las herramientas de SQL Server 2005. Round Robin es una técnica utilizada para el Balanceo de Carga basada en DNS, que consiste en asignar varias IPs a un único nombre, de tal modo que cada consulta DNS a dicho nombre devuelva una lista con todas las IPs asignadas al mismo, pero permutando el orden entre una consulta DNS y la siguiente, para conseguir el efecto de Balanceo. Los clientes DNS más básicos, simplemente utilizarán la primera de las IPs devueltas, mientras que los clientes más avanzados serán capaces de tomar acciones más complejas. En el presente artículo vamos a explicar este concepto a través de unos simples ejemplos y chequeos básicos. Una configuración típica a realizar durante la instalación de SQL Server, es conceder el derecho Lock Pages In Memory (LPIM), en español Bloquear Páginas En Memoria, a la cuenta que arranca el Servicio de SQL Server. De este modo, se evitan situaciones de Presión de Memoria cuando el Sistema Operativo reclama liberar memoria a SQL Server. Sin embargo, hay que tener en cuenta diferentes detalles para poder configurar correctamente la opción de Lock Pages In Memory (LPIM), que variarán en función de la versión y edición de SQL Server, así como de si se trata de un entorno virtualizado. Desde una Instancia en Cluster de SQL Server es posible conocer cuáles son los Nodos que forma el Cluster desde una simple consultar de SQL, más sencillo y rápido que tener que conectarnos a los servidores (RDP, Consola, etc) para comprobarlo con las Herramientas Administrativas de Sistema Operativo. Para ello, podremos utilizar la función del sistema fn_virtualservernodes (que funciona incluso en SQL Server 2000, pero que va a ser deprecated, por lo que no es recomendable seguir usándola) o bien la Vista Dinámica del Sistema sys.dm_os_cluster_nodes (mucho más completa y que reemplaza a fn_virtualservernodes). El ERRORLOG de SQL Server es quizás la principal ubicación en la que podremos encontrar información para depurar la mayoría de incidencias o problemas que nos podemos encontrar en SQL Server. Por esta razón, es muy importante que sepamos utilizarlo correctamente, que configuremos de forma adecuada su reciclado y número máximo de ficheros, y que sepamos optimizar su consulta para agilizar la búsqueda de información. En el presente artículo introducimos todos estos detalles, para todos aquellos que no estén familiarizados con la correcta gestión del ERRORLOG. Aun estando en el año 2015, siguen existiendo situaciones en las que resulta necesario apoyarse en ficheros de comandos (CMD) de MSDOS, por ejemplo, para planificar ejecuciones de SQLCMDs utilizando el Planificador de Tareas de Windows en máquinas con SQL Express, donde no podemos recurrir al Agente de SQL Server. Situaciones poco comunes, pero que desafortunadamente continúan produciéndose (puntualmente) por motivos variopintos. En el presente artículo presentamos la Sustitución de Variables en ficheros de comandos (CMD) de MSDOS, un recurso que en estos casos nos resultará de gran utilidad. En muchas ocasiones necesitaremos realizar operaciones sobre conjuntos de ficheros, como por ejemplo, el borrado de ficheros antiguos para evitar incidencias de espacio en disco debidas a ficheros de LOG o de Traza antiguos. En versiones de sistema operativo más recientes podemos recurrir a PowerShell, pero en versiones más antiguas, es probable que tengamos que recurrir a ficheros de comandos (CMD) de MSDOS. El presente artículo presenta el comando FORFILES que podemos utilizar en nuestros ficheros de comandos de MSDOS, que nos permitirá realizar operaciones sobre conjuntos de ficheros de una forma muy sencilla. Si tenemos que administrar varias instalaciones de SQL Server en Cluster, y más especialmente cuando participamos en escenarios de Administración Compartida, o cuando necesitamos tener un mínimo de control de nuestras máquinas, podemos necesitar mantener un registro de que Nodo del Cluster era el Propietario de qué Instancia de SQL, en cada momento. Algo que podría consultarse en el Event Viewver, pero que nos resultará de gran ayuda poder mantener esta información en tablas de base de datos para su posterior consulta. Analysis Services (SSAS) nos ofrece el lenguaje MDX (Multidimensional Expressions), un lenguaje de consulta con el cual podremos acceder a los datos de nuestros Cubos, y gracias al cual, también podremos crear pequeños cálculos como son los Miembros Calculados (Calculated Members) y los Conjuntos con Nombre (Named Sets). En el presente artículo introducimos todos estos conceptos, a un nivel básico y con ejemplos sencillos para su aprendizaje. Un mensaje de error que podemos encontrarnos al intentar explorar un Cubo de Analysis Services (SSAS), por ejemplo utilizando una consulta MDX desde SQL Server Management Studio (SSMS), es el mensaje “Error loading metadata: No cubes were found”. Un error algo confuso, al obtenerlo teniendo cubos desplegados, que suele tener una sencilla solución. Al crear Jerarquías definidas por el Usuario en Analysis Services (SSAS) utilizando una única tabla (usando un diseño del Data Warehouse en Estrella, en lugar de en Copo de Nieve) podemos encontrarnos con el mensaje de aviso “Attribute relationships do not exist between one or more levels of this hierarchy. This may result in decreased query performance”. En la mayoría de los casos, tan solo tendremos que definir correctamente la relación existente entre los Atributos de la correspondiente Dimensión. La creación de Jerarquías en las Dimensiones de Analysis Services (SSAS) facilita la navegación del usuario, especialmente las operaciones de Drill Down y Drill Up, para poder profundizar y ascender en el detalle de la información de nuestros Cubos, de una forma fácil e intuitiva para el Usuario de Negocio. Aunque la experiencia de usuario variará en función de la herramienta de visualización que utilicemos, en la mayoría de los casos la creación de Jerarquías favorecerá la satisfacción del usuario en la navegación por el Cubo, pudiendo utilizar Jerarquías de Atributo (un único nivel de profundidad) o Jerarquías definidas por el usuario (múltiples niveles de profundidad). El concepto de Dimensión Degenerada (Degenerate Dimension) de Kimball corresponde al caso en el que la propia Tabla de Hechos actúa también como Dimensión, por incorporar no sólo Medidas, sino también algún Atributo de interés para el negocio. En este caso, no es necesario crear una Tabla de Dimensión adicional, pudiendo utilizar la propia Tabla de Hechos. El presente artículo describe paso a paso como crear una Dimensión Degenerada en un Cubo de Analysis Services 2014. El Data Source View (DSV) de un Cubo de Analysis Services (SSAS) nos permite especificar de qué tablas del Data Warehouse deseamos importar los datos en nuestros Cubos. Además, para cuando esto no es suficiente, también nos permite tanto añadir pequeños cálculos (Named Calculations) similares a Columnas Calculadas (sin tener que modificar las tablas en origen), así como Consultas más complejas (Named Queries) de las que alimentar nuestros Cubos (pudiendo incluir JOINs entre varias tablas, columnas calculadas, Agrupaciones, etc.) sin necesidad de crear dichas consultas como Views en el origen. Al desarrollar Cubos de Analysis Services (SSAS), habitualmente necesitaremos configurar las Propiedades de Formato de nuestras Medidas, utilizando la Propiedad FormatString, de tal modo que se pueda visualizar correctamente el Cubo a los usuarios del negocio. Una sencilla configuración, para la que tendremos que tener en cuenta posibles comportamientos no deseados, en función de la herramienta que utilicemos para visualizar nuestro Cubo de Analysis Services. Buena parte del trabajo a realizar en el Diseño de Cubos de Analysis Services (SSAS) lo realizaremos en el Diseño y Modelado de las Dimensiones de nuestros Cubos, desde nuestro proyecto de Visual Studio, con BIDS o SSDT. Definir y configurar las diferentes Jerarquías y Atributos, personalizar las diferentes propiedades de las mismas en base a nuestras necesidades funcionales y de rendimiento, etc. El presente artículo es una pequeña introducción al trabajo con Dimensiones en Analysis Services, que intentaremos completar con futuros artículos. Una de las herramientas que echaremos de menos nada más instalar SQL Server 2014 son las herramientas de Business Intelligence, conocidas como SQL Server Data Tools en SQL Server 2012, y como SQL Server Business Development Studio (BIDS) en SQL Server 2008 R2 y versiones anteriores. Por algún motivo, ni BIDS ni SSDT vienen ya incluidos en SQL Server 2014. En su lugar, tenemos a nuestra disposición una descarga gratuita del producto para su instalación. Algo común en cualquier Data Warehouse es la necesidad de disponer de las tablas de soporte para la Dimensión Tiempo, tanto para Fechas como para las Horas, siendo recomendable separarlo en dos tablas distintas, para minimizar el número de miembros/registros. Reza Rads comparte en su Web un par de tablas de ejemplo, así como un trozo de código Transact-SQL para rellenar dichas tablas con los registros necesarios. Un recurso de interés para cualquiera que se introduzca en el Data Warehousing, o para quienes trabajando habitualmente en un Data Warehouse quieran tomar ideas. Recientemente me he encontrado con un error al ejecutar la herramienta SharePoint 2013 Preparation Tool sobre un Windows Server 2012 R2 en el que necesitaba instalar una Granja de Pruebas con SharePoint 2013. La ejecución del SharePoint 2013 Preparation Tool tardaba, para finalizar con el mensaje de error: Application Server Role, Web Server (IIS) Role configuration error. Finalmente, tras mucho googlear y alguna que otra prueba y error, conseguí salvar este pequeño escollo, tal y como se retrata en el presente artículo. Una posibilidad que nos ofrece SQL Server 2014 es poder realizar una subida de edición, es decir, si tenemos instalado un SQL Server 2014 Developer cambiar la licencia para convertir nuestra instalación a un SQL Server 2014 Enterprise, sin necesidad de reinstalar ni de afrontar los costes de una Migración. Un proceso muy sencillo que presentamos paso a paso en el presente artículo. Llevo un par de días intentando descargar SQL Server 2014 desde mi Suscripción MSDN, y no hay forma. Comienza la descarga muy muy lento y a los pocos segundos o minutos se interrumpe. En otros casos, directamente me ha mostrado un error 504 Gateway Timeout. Algo desconcertante. He probado desde varios ordenadores, con diferentes Navegadores, diferentes versiones de Sistema Operativo, y nada de nada. Finalmente he encontrado la solución: SQL Server 2014 Evaluation Edition + Edition Upgrade. Un mensaje de error que podemos obtener con la Réplica de Mezcla de SQL Server, es el mensaje “The merge process was unable to deliver the snapshot to the Subscriber” que suele ir acompañado de un mensaje del tipo “Cannot find the objet 'MSmerge_ctsv_AF3426E510A24D54B229D3EE0F298718' because it does not exists or you do not have permission”. Si bien se trata de un par de mensajes poco descriptivos del problema que estamos teniendo, la realidad es que se trata de un problema de fácil solución, como describimos en el presente artículo. Una tarea que podemos necesitar hacer ocasionalmente en entornos de Replicación basados en SQL Server, es eliminar la Replicación de una Base de Datos, una tarea que podemos necesitar hacer tanto en los Subscriptores (quizás este sea el caso más común) como en el Publicador. De este modo, realizaremos una limpieza de manera ordenada sobre dicha Base de Datos, esto es, eliminar todos los objetos de Base de Datos relacionados con la Réplica, incluyendo la información de las tablas de sistema de la Réplica. Para ello, deberemos seguir un procedimiento en particular. Si tenemos un entorno de Replicación de SQL Server, en alguna ocasión seguro que necesitaremos poder depurar la ejecución de un Agente, por ejemplo del Agente de Mezcla en la Replicación de Mezcla, con la idea de conseguir información adicional que nos pueda resultar de ayuda para la resolución de incidencias relacionadas con la réplica. En el presente artículo, describimos una forma de hacerlo, generando un fichero de LOG en el que podamos revisar el progreso y mensajes de ejecución del Agente, para cumplir con este menester. La Cuenta de Granja (Farm Account) es la cuenta de servicio que especificamos como Database Access Account durante el proceso de instalación/configuración de SharePoint, al ejecutar la herramienta SharePoint Products and Technologies Configuration Wizard (psconfig.exe). Esta cuenta, será utilizada por el App Pool de la Central Admin así como por el servicio Windows SharePoint Services Timer. El presente artículo describe paso a paso cómo cambiar la Cuenta de Granja (Farm Account) o su contraseña en una instalación de SharePoint 2007. En muchas ocasiones podemos necesitas conocer cuándo y desde qué máquina se ha bloqueado una cuenta de Directorio Activo, ya sea en el caso de una cuenta de usuario, pero sobre todo cuando se trata de una cuenta de servicio cuyo bloqueo puede generar una indisponibilidad de un servicio que podría afectar a un gran número de usuarios. Esta información se registra a nivel de cada Controlador de Dominio, por lo tanto, si el Dominio al que pertenece la cuenta bloqueada contiene muchos Controladores de Domino, esta comprobación manual sería bastante pesada, salvo que nos creásemos un Script o utilizásemos la herramienta Lockout Account Status (LockoutStatus.exe) Hay muchas razones por las que podemos necesitar cambiar la cuenta (o quizás sólo la contraseña) de la cuenta de servicio de un App Pool de SharePoint, tarea que suele generar temores a muchos administradores de SharePoint. Si bien es cierto, que el procedimiento a seguir no es el de un simple IIS (tenemos que hacerlo de otra forma, sin tocar el IIS Manager ni la Metabase), es bastante sencillo, y si no nos olvidamos de comprobar permisos en SQL, permisos en SharePoint, pertenencia a grupos locales y de Directorio Activo, SPNs, y otras propiedades de la cuenta (ej: Account is trusted for delegation), será un simple trámite y nos funcionará todo a la primera. La creación de Timer Jobs en SharePoint es una potente herramienta para el desarrollo de aplicaciones personalizadas en SharePoint, gracias a los cuales, podemos ejecutar de forma desatendida y planificada el código que deseemos, y además, ejecutarlo fuera del IIS (interesante para código que pueda necesitar ejecuciones de larga duración). El presente artículo describe cómo crear un Timer Job de SharePoint 2010 paso a paso con Visual Studio 2010. El Developer Dashboard es una funcionalidad introducida en SharePoint 2010, que ofrece de una forma sencilla información de diagnóstico relacionada a la ejecución de las páginas de SharePoint, que puede resultar de gran ayuda a desarrolladores y administradores para depurar problemas de rendimiento y/o de ejecución de las páginas (y de sus componentes) en SharePoint, sin tener que recurrir a trazas de SQL Server, Logs de SharePoint (ULS), Logs de IIS, ó Debuggers, con el correspondiente ahorro de tiempo (especialmente en Granjas con muchos Frontales Web). SharePoint nos ofrece desde SharePoint 2007 las Property Bag, un estupendo mecanismo para almacenar y recuperar nuestras configuraciones a distintos niveles jerárquicos de SharePoint, es decir, a nivel de Granja, Aplicación Web, Colección de Sitios, Sitio, y Lista. Una Property Bag es simplemente una Hash Table en la que podremos almacenar parejas de Clave-Valor, de una forma sencilla, desde nuestro código (Visual Studio), sin interfaz gráfico (excepto alguna excepción con SharePoint Designer). Utilizando el elemento HideCustomAction tenemos posibilidad de ocultar muchas cosas en SharePoint, como es el caso de los enlaces de la administración de sitios (Site Settings) o de la Administración Central (Central Admin), algo que nos puede interesar hacer para personalizar nuestra Granja de SharePoint 2010 desde una Solución de Visual Studio. La creación de Definiciones de Sitio (Site Definitions) en SharePoint 2010, ofrece la posibilidad de que un usuario o administrador puede crear un nuevo Site Collection o un nuevo Web partiendo de dicha plantilla de sitio, de tal modo, que podamos personalizar las características que deban activarse automáticamente, la navegación, las Listas y Librerías, Páginas html, etc. Para ello, podemos crear una Solución con Visual Studio que incluya las Definiciones de Sitio que consideremos oportunas con todas sus personalizaciones, para su despliegue sobre nuestras Granjas de SharePoint 2010. Muchas personalizaciones y extensiones de SharePoint 2010 las podremos llevar a cabo a través de las Acciones Personalizadas (Custom Actions), algo que podremos realizar desde Visual Studio 2010 y también desde SharePoint Designer 2010. En el presente artículo describimos la forma de añadir un botón al Ribbon de SharePoint 2010 a través de una Solución de Visual Studio 2010, para que aparezca sólo cuando estemos en una Librería de Documentos. Con SharePoint 2010 tenemos la posibilidad de escribir código de cliente de SharePoint desde JavaScript, utilizando el llamado JavaScript Object Model (JSOM) de SharePoint 2010 (librería sp.js), el cual además nos permitirá realizar otras opciones, como abrir ventanas modales en JavaScript. De este modo, podremos ejecutar código cliente de SharePoint en JavaScript, tanto de Application Pages desplegadas desde Soluciones de Visual Studio, como en Páginas de Web Parts utilizando la Content Editor Web Part (CEWP). Con SharePoint 2010 y Visual Studio 2010 tenemos la posibilidad de escribir aplicaciones cliente que se ejecuten en equipos cliente (es decir, fuera de las máquinas de SharePoint, sea en un PC de usuario o bien en cualquier otra máquina). Si bien, no tenemos disponible el mismo Modelo de Objetos que podemos utilizar en aplicaciones SharePoint de Servidor, podremos utilizar un Modelo de Objetos algo diferente, que nos dará acceso a gran parte de las funcionalidades de SharePoint (aunque no a todo). Este artículo describe paso a paso como crear de forma sencilla un simple Servicio Web WCF con Visual Studio 2010, dentro de un Proyecto de SharePoint 2010, que pueda ser desplegado posteriormente como una Solución en una Granja de SharePoint 2010, utilizando para ello un mapeo sobre la carpeta ISAPI de la raíz del directorio de instalación de SharePoint. Con la introducción de los Servicios Web de WCF REST en SharePoint 2010, tenemos la posibilidad de acceder a los mismos desde nuestros Proyectos de Visual Studio. El presente artículo muestra paso a paso a modo de ejemplo como consumir un Servicio Web REST de SharePoint 2010 desde un Proyecto de Visual Studio 2010. Fiddler es una herramienta gratuita para la depuración de tráfico HTTP, que actúa como un Web Proxy local sobre el puerto 8888, de tal modo que cualquier aplicación cliente (ej: Internet Explorer, Firefox, etc) al ser configurada para utilizar Fiddler como Proxy, permite que podamos inspeccionar todo el tráfico HTTP y HTTPS generado durante una sesión Web. Además, Fiddler es fácilmente extensible y permite modificar las peticiones HTTP, además de mostrar diferentes estadísticas y facilitar diferentes formas de inspeccionar y analizar el tráfico HTTP. Sin duda, una herramienta fundamental. Para el desarrollo de aplicaciones cliente de SharePoint que no se ejecuten en un servidor SharePoint (ej: una aplicación de consola que se ejecute remotamente desde un PC cliente), deberemos recurrir a la programación de Servicios Web de ASP.Net (como se hacía tradicionalmente en SharePoint 2007) o Servicios Web de WCF (la forma recomendada en SharePoint 2010, ya sea en formato SOAP o en formato REST). Recientemente me he encontrado con un problema de bloqueos en un SharePoint 2007 SP3 que estaba dejando algunos Sites indisponibles, debido a la ejecución de sentencias ALTER INDEX, las cuales no correspondían a la ejecución de los Planes de Mantenimiento de SQL Server, sino a la ejecución del Timer Job de Database Statistics (Estadísticas de la base de datos), que invoca al procedimiento almacenado proc_DefragmentIndices. El otro día, al intentar acceder a los servicios REST de SharePoint 2010 de una máquina de pruebas, en particular a _vti_bin/listdata.svc, me encontré con el mensaje de error Could not load type del tipo IDataServiceUpdateProvider del namespace System.Data.Services.Providers desde el Assembly System.Data.Services, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089. Al final, tuvo una solución sencilla (parche y reinicio), tras la cual, conseguí poder acceder correctamente a los servicios REST, sin mayor problema. Al trabajar con Aplicaciones .Net en ocasiones nos encontramos con errores del tipo Could not load file or assembly, que habitualmente son ocasionados por algún error al intentar cargar la DLL de algún Assembly, por el motivo que sea. Para depurar este tipo de errores, podemos utilizar la herramienta Fusion Log Viewver (FusLogVW) disponible con Visual Studio (también conocida como Assembly Binder Log Viewer), o incluso podemos habilitar manualmente el Fusion Log (tocando el Registro de Windows) y seguidamente revisar los Logs generados, que para el caso, es lo mismo. Recientemente he estado configurando una Granja de SharePoint 2010 para un pequeño entorno de desarrollo, formada por un único servidor de SharePoint y otro de SQL, para lo cual, utilicé un par de Scripts de PowerShell que se encargaban de realizar una configuración básica de los principales servicios de SharePoint, así como crear una nueva Aplicación Web con una Base de Datos de Contenido y un Site Collection sobre la raíz. Aprovecho esta situación para compartir con vosotros los Scripts PowerShell que utilicé sobre mi entorno de desarrollo, para quien le pueda resultar de utilidad. Estos días, haciendo unas pruebas relacionadas con la lectura y modificación del Web.Config desde Soluciones de tipo Granja en SharePoint 2010, me he encontrado con un error de tipo Access Denied al desactivar una Característica (FeatureDeactivating) en la que intentar eliminar del Web.Config unas entradas que había añadido previamente al activar dicha Característica (FeatureActivated), en ambos casos, jugando con la colección WebConfigModifications. Finalmente, era algo muy sencillo. El desarrollo de las Web Parts en SharePoint 2010 es uno de los puntos más relevantes dentro del mundo del desarrollo de aplicaciones para SharePoint. El presente artículo realiza una breve introducción, en la que se intenta dar una explicación de qué son las Web Parts, así como se describen varios aspectos importantes del desarrollo de Web Parts en SharePoint 2010, e incluso se incluye un poco de código fuente de ejemplo. Como ocurre para otros muchos productos, para SharePoint 2010 existen gran cantidad componentes y herramientas que podemos utilizar para hacernos la vida más sencilla, algunos de ellos disponibles para descarga gratuita. En este artículo aprovechamos para comentar brevemente algunos componentes y herramientas adicionales disponibles de forma gratuita, que pueden ayudarnos en el Desarrollo y Administración de nuestra Granja SharePoint 2010. Antes o después podemos necesitar recuperar una Aplicación Web de SharePoint, por lo tanto, si somos los responsables técnicos o funcionales de dicha infraestructura, deberemos saber cómo enfrentarnos a este tipo de tareas, del mismo modo, que deberíamos ser capaces de enfrentarnos a otros distintos tipos de Restores. El presente artículo, describe paso a paso, como hacer un Backup de una Aplicación Web en SharePoint 2007 (en lugar de hacerlo de toda la Granja), y como recuperarlo después de haber eliminado completamente la Aplicación Web (incluyendo el Site de IIS y la Base de Datos de Contenido). Una de las operaciones de mantenimiento más típicas al trabajar con Bases de Datos SQL Server, es tener que eliminar un fichero de datos o un fichero de LOG de una Base de Datos, que ya no necesitamos, para poder liberar espacio en disco. El procedimiento a seguir es distinto, según sea un fichero de datos o de LOG, y tiene algún pequeño detalle a tener en cuenta, especialmente para aquellos que no trabajen habitualmente administrando SQL Server y que tienen que enfrentarse con este tipo de tareas por motivos variopintos. Uno de los comandos históricamente más característicos de SQL Server es el comando DBCC (DataBase Consistence Check), heredado de cuando SyBase SQL Server y SyBase compartían código. Aunque cada vez DBCC está siendo menos utilizado al desplazarse muchas de sus funcionalidades a Procedimientos y Vistas del Sistema, aún quedan muchas cosas que sólo podremos realizar utilizando comandos DBCC. Por este motivo, resulta interesante tener controlados los distintos comandos DBCC, incluyendo aquellos Comandos DBCC ocultos (ojito, que podríamos quedarnos fuera de soporte si los ejecutamos en Producción). Un error que podemos encontrarnos al intentar conectarnos al IIS Manager, es el error The path specified cannot be used at this time, el cual implica que no podremos abrir la consola del IIS. Esta, es una incidencia relativamente habitual en entornos SharePoint (al menos, me la he encontrado en MOSS 2007 x64 sobre Windows Server 2003 R2 x64, es decir, en IIS6), y tiene una fácil solución, al margen de los sudores previos cuando te ocurre por primera vez y en un entorno de Producción. Recientemente me he encontrado con un error en una Granja de Reporting Services 2008 R2, por el cual, no estaba funcionando un Origen de Datos de tipo SQL Server que se impersonaba con un usuario de Directorio Activo, produciéndose el error Log on Failed Ensure the user name and password are correct, cuando se estaba utilizando un usuario y contraseña correctos y con permisos suficientes en SQL Server. ¿Qué está pasando? ¿Cómo podemos solucionarlo? Una herramienta de propósito general que he conocido hace unos pocos días por cortesía de un compañero de trabajo, es el Problem Steps Recorder (psr.exe), la cual permite capturar paso a paso y con pantallas capturadas (screenshots) las acciones realizadas en nuestro ordenador, de manera que podamos ilustrar un problema, mostrar cómo realizar una tarea o configuración, o quizás con el simple propósito de generar documentación de forma rápida. En todos estos casos, nos puede ayudar a ahorrar bastante tiempo, y es un buen compañero del Snipping Tool (snippingtool.exe), sin olvidarnos de que es parte de Windows. Hay ocasiones en las que nos podemos encontrar una gran cantidad de bloqueos (es decir, SPIDs o procesos bloqueados) en SQL Server, que en muchos casos, son producidos por un único proceso raíz que está bloqueado a uno o varios procesos, que a su vez están bloqueando a otros procesos, y así sucesivamente. En este caso, debemos identificar rápidamente el o los procesos raíz que están generando el o los árboles de bloqueos (blocking chains), para tomar la medida oportuna (quizás sea KILL). Algo laborioso de hacer ejecutando el sp_who2 o el Activity Monitor de SSMS. La configuración de una Granja de SharePoint 2013 es una tarea delicada, que además, no siempre puede realizarse completamente con la interfaz gráfica (Central Administration). Por ello, es interesante plantearse realizar completamente la configuración de SharePoint utilizando PowerShell. Además, los Scripts PowerShell que desarrollemos nos servirán como entregables de la documentación, nos pueden servir para completar un Plan de Recuperación ante Desastre, y por supuesto, podremos modificarlos ligeramente para la configuración de entornos homogéneos de Desarrollo, Pre-Producción, etc. Al realizar una instalación de SharePoint, después de instalar los binarios (ej: Pre-Requisitos, SharePoint, Laguage Packs, Service Packs, etc.) en cada uno de los servidores, deberemos de crear la Granja desde uno de los servidores, para luego añadir cada uno de los servidores restantes a la Granja secuencialmente (primer uno, luego otro, etc.). Este paso, que habitualmente se realiza de forma gráfica con el SharePoint Products and Technologies Configuration Wizard, puede realizarse por comandos, utilizando psconfig.exe o PowerShell, lo cual nos permitirá especificar el nombre que deseemos para la Base de Datos de la Central Administration y para la Base de Datos de Configuración. Una de las primeras cosas que tenemos que hacer antes de realizar una Instalación y Configuración de SharePoint 2013, es solicitar (o crear nosotros mismos, sí es que tenemos posibilidad de ello), todas las cuentas de servicio que vamos a necesitar para poder realizar nuestra Instalación de SharePoint 2013. Si bien, la identificación de las cuentas de servicio a utilizar, es una cuestión de diseño que puede requerir un profundo análisis previo, en el presente artículo vamos incluir una propuesta genérica que puede utilizarse como punto de partida. En muchas ocasiones, al realizar nuestras tareas rutinarias (y las no tan rutinarias también) con SharePoint 2007, nos encontramos que las herramientas que nos ofrece el producto Out-of-the-Box, no nos permite realizar ciertas tareas u obtener cierta información, o quizás sí nos lo permite pero de una forma mucho más complicada de lo deseable. En este artículo aprovechamos para comentar brevemente algunos componentes y herramientas adicionales disponibles de forma gratuita, que pueden ayudarnos en el Desarrollo y Administración de nuestra Granja MOSS 2007. La administración de los Timer Jobs en SharePoint 2007 es una de aquellas cosas que necesitaban un empujoncito, y que de hecho, en versiones posteriores ha mejorado bastante. Sin embargo, aun estando todavía en SharePoint 2007, es posible hacerse la vida más fácil utilizando la solución SharePoint Timer Job Administration, disponible como descarga gratuita desde CodePlex. De este modo, podremos deshabilitar un Timer Job o modificar su planificación de una forma muy sencilla. Una configuración habitual en cualquier versión de SharePoint, es la creación de un Sitio con el Acceso Anónimo habilitado, como es el caso típico de un Site para su acceso libre y público desde Internet (ej: la Página Web corporativa de cualquier empresa). El presente artículo describe los pasos principales para configurar el Acceso Anónimo en un Site de SharePoint 2010. Un problema que nos podemos encontrar es que al intentar acceder a un Sitio de SharePoint ubicado en la máquina local (el servidor en el que estamos trabajando) utilizando un nombre largo FQDN, no podamos acceder (error HTTP 401, nos pide credenciales tres veces, y nada de nada), mientras que sí que podemos acceder al mismo Sitio utilizando un nombre corto, estando para ambos casos todo correctamente configurado (Accesos Alternativos ó AAM, Host Header en IIS, resolución de nombres DNS, etc.) ¿Cómo podemos solucionarlo? Un problema de autenticación de una Cuenta de Equipo de Directorio Activo, puede generar un gran dolor de cabeza, debido a que la máquina en cuestión puede parecer que está funcionando correctamente, pero sin embargo, algunas funcionalidades podrían verse mermadas. Hablo del evento 5722 de origen NetLogon que podemos encontrar en un Controlador de Dominio por problemas de autenticación de un servidor miembro con su cuenta de equipo, y sus efectos colaterales si esa máquina por ejemplo ejecuta un SharePoint 2010. ¿Qué hacemos? En ocasiones, al trabajar con SharePoint, nos podemos encontrar con Objetos Huérfanos en una Base de Datos de Contenido, una situación que técnicamente se denomina corrupción, como pueda ser el caso de un Documento que no esté asociado a una Librería de Documentos válida, o una Lista que no esté asociada a un Site válido. Estos Objetos Huérfanos pueden ser eliminados, corrigiéndose la situación de corrupción, y liberando espacio en la Base de Datos de Contenido. Una operación típica en el mantenimiento de una Granja SharePoint, es el movimiento de Colecciones de Sitios (Sites Collections) de una Base de Datos de Contenido a otra. Esta tarea, que puede realizarse mediante los comandos STSADM Backup y STSADM Restore, resulta mucho más eficiente con STSADM MergeContentDBs, siempre y cuando hablemos de dos Bases de Datos de Contenido hospedadas en la misma Instancia SQL y pertenecientes a la misma Aplicación Web de SharePoint. Desde SQL Server 2005 tenemos la posibilidad de firmar digitalmente nuestros Procedimientos Almacenados utilizando la sentencia ADD SIGNATURE, algo que dicho así parece una chorrada simple e inútil, pero que realmente se presenta como una opción muy interesante, tanto para controlar si nuestro código ha sido alterado (ej: en el caso de los ISV), como para evitar tener que conceder permisos directos sobre las tablas si estamos utilizando Procedimientos Almacenados con código SQL Dinámico (vital, para protegernos de SQL Injection). Hace ya tiempo que hablamos del problema de Parameter Sniffing, la pérdida de rendimiento en la ejecución de Procedimientos Almacenados debido a la reutilización de los Planes de Ejecución, explicando en qué consiste dicho problema así como algunas de las soluciones o Workaround de que disponemos. En esta ocasión, vamos a comentar la cláusula OPTIMIZE FOR UNKNOWN, disponible desde SQL Server 2008, que también nos facilitará la lucha contra el problema del Parameter Sniffing. Recientemente me he encontrado con la necesidad de tener que restringir los resultados de búsqueda que obtienen los usuarios al realizar una búsqueda de personas con People Picker en SharePoint, debido a que un cliente había creado una relación de confianza bidireccional en Directorio Activo con otro Dominio, lo cual estaba generando resultados de búsqueda adicionales, y sobre todo, mucha confusión e incidencias de usuario. Afortunadamente, STSADM está con nosotros para solucionar este tipo de problemas. Aunque quizás no lo realicemos habitualmente, la realidad es que siempre que realicemos un troubleshooting relacionado con problemas de rendimiento de un servidor o aplicación, deberemos acordarnos de asegurarnos que no tenemos ningún problema de rendimiento asociado a la red, del igual modo que solemos hacer con el procesador, disco y memoria. Es presente artículo introduce una de las posibles formas de identificar problemas de rendimiento relacionados con la red, utilizando los contadores de rendimiento más habituales (Bytes Sent/sec, Bytes Received/sec, Packets/sec y Output Queue Length). Continuando con la serie de artículos dedicada a identificar problemas de rendimientos relacionados con cuellos de botella en Windows, en esta ocasión vamos a mostrar un forma de identificar (al menos en algunos casos) situaciones de memoria insuficiente o de presión de memoria en Windows, utilizando los principales Contadores de Rendimiento de utilidad para esta tarea (Available MBytes, %Committed Bytes In Use, Pages/sec). Otro de los problemas de rendimiento en Windows que están dentro del Top-Ten, son sin duda los problemas de rendimiento de procesador o CPU. En el presente artículo mostramos una de las forma de identificar si tenemos un cuello de botella de procesador o CPU en Windows Server, utilizando Contadores de Rendimiento, para de este modo, poder focalizar mejor cómo continuar con nuestro debugging. Una tarea típica que nos tocará realizar en más de una ocasión es lidiar con problemas de rendimiento en Windows, lo que en muchas ocasiones se limita a problemas de rendimiento en el acceso a disco (I/O). El presente artículo describe cómo identificar si tenemos o no un cuello de botella en el acceso a disco, de tal modo que ya sabiéndolo, podamos continuar con nuestro debugging particular, sea una Aplicación Web, de SQL Server, o de lo que fuere. Muchas Bases de Datos Transaccionales requieren del Modo de Recuperación Full para de este modo tener la posibilidad de poder recuperar a un punto en el tiempo, garantizando la mínima pérdida de datos en caso de desastre, asumiendo que no podremos aprovecharnos de las ventajas de rendimiento de las Operaciones de Registro Mínimo. Por este motivo, en caso de necesitar realizar grandes Cargas de Datos fuera de horario, tenemos la posibilidad de establecer temporalmente el Modo de Recuperación Bulk-Logged, beneficiándonos de las Operaciones de Registro mínimo pero comprometiendo al mínimo la recuperación del sistema. De forma similar a como vimos con Microsoft Word, un problema que podemos encontrarnos al trabajar con SharePoint para almacenar nuestros documentos de Excel, es que al intentar abrir una hoja Excel almacenada en SharePoint nos encontremos con el siguiente mensaje de error: The file is corrupt and cannot be opened. Aunque puede parecer que hemos perdido nuestro documento, la solución es tan sencilla y rápida como la siguiente. Un problema que podemos encontrarnos al trabajar con SharePoint para almacenar nuestros documentos de Microsoft Word, es que al intentar abrir un documento nos encontremos con un error como el siguiente: Word experienced an error trying to open the file. Puede parecer que por algún motivo acabamos de perder el acceso a nuestro documento, pero no, la solución es tan sencilla y rápida como la siguiente. Hace poco me encontré con errores de Event Id 5555 (User Profiles) en una instalación de SharePoint 2007 SP3, tras el movimiento de varios Sites con STSADM MergeContentDBs. Sorprendentemente, dichos errores sólo se producían en algunas de las Bases de Datos que fueron movidas, no en todas, y para mayor desconcierto el mensaje de error indicaba que existían Sites con IDs duplicados. Finalmente, la cosa no fue para tanto, y la solución resultó bastante rápida y sencilla. Transparent Data Encryption (TDE) es una tecnología disponible desde SQL Server 2008, que permite encriptar los ficheros de Datos y Log de una Base de Datos (así como sus ficheros de Backup) en lugar de encriptar los propios datos de las tablas, de tal modo, que en caso de pérdida, un tercero no sea capaz de acceder a nuestra información (ni restaurar un fichero de Backup, ni adjuntar los ficheros MDF y LDF en otra Instancia de SQL Server). Sin embargo, para nosotros el acceso a nuestra base de datos es completamente transparente y normal, como con cualquier otra base de datos. El presente artículo detalla paso a paso una manera de desarrollar con Visual Studio 2010 un Formulario html para añadir, editar o mostrar (add, edit, ó display) elementos en una Lista de SharePoint 2010, de tal modo que seamos capaces de personalizar dicho formulario conforme a nuestras necesidades de negocio. Una técnica, que junto a la posibilidad de desarrollar Workflows y Event Handlers, aporta gran riqueza al desarrollo y personalización de Aplicaciones en SharePoint 2010. Nos hará falta más de una vez. Abrir una Página Web de SharePoint en Modo de Mantenimiento (Web Part Page Maintenance Mode) nos será muy útil en muchos casos, como cuando no se pueda renderizar correctamente una Página Web, ya sea por haber realizado una modificación poco afortunada sobre la configuración de las Web Parts, como cuando una Web Part empiece a malfuncionar por cualquier otro motivo. En estas situaciones, ¿cómo arreglamos el estropicio? Un error que podemos encontrarnos en Aplicaciones Web ASP.Net que estén balanceadas (ej: Microsoft NLB, NetScaler, etc.) es el mensaje de error Validation of viewstate MAC failed error. Existen varios escenarios en los que podemos encontrarnos este mensaje de error. El presente artículo presente brevemente este error a la vez que muestra una solución típica que se puede aportar desde la perspectiva del Administrador de Sistemas y/o del Administrador de la Plataforma Web: configurar la clave machineKey en el Web.Config. Muchas veces surge la misma pregunta ¿Cuántas Bases de Datos de Contenido podemos llegar a tener en SharePoint? La recomendación de Micrososft es de 100, 300 ó 500 Bases de Datos de Contenido, dependiendo de la versión de SharePoint (2007, 2010, y 2013). Sin embargo, independientemente de dicha recomendación, es importante que tengamos en cuenta el impacto de tener un gran número de Bases de Datos para la ejecución de los Timer Jobs (ej: Immediate Alerts, Profile Sync, Variations, Workflows, etc), una situación que puede acabar en un problema (al menos en SharePoint 2007): Port Exhaustion Ya sea con la gorra de Desarrollador, o con la de Administrador de Sistemas, la realización de Pruebas de Carga de Aplicaciones Web es una tarea con la que nos interesa familiarizarnos, para poder poner a prueba nuestros Sistemas y Aplicaciones, y comprobar qué nivel de Rendimiento, Escalabilidad y Alta Disponibilidad son capaces de entregarnos. Para todo esto, el presente artículo realiza una introducción a la realización de Pruebas de Carga con Microsoft WCAT (Web Capacity Analysis Tool) 5.2, disponible en el Kit de Recursos de IIS6. Una tarea que podemos necesitar realizar, y que tiene alguna pega más de lo que inicialmente parece, es renombrar un usuario de SharePoint Server. En este caso, tras renombrar la cuenta de usuario en Directorio Activo de su nombre original (ej: GUILLESQL\marianico.elcorto) a su nuevo nombre (ej: GUILLESQL\mariano.ymedio), y sincronizar la información entre Directorio Activo y SharePoint (ejecutar la importación de perfiles y permitir que se ejecuten los jobs de sincronización perfiles sobre las Bases de Datos de Contenido), nos encontraremos que dicha información no ha sido correctamente actualizada. ¿Qué hacemos? En algunas ocasiones, si trabajamos habitualmente con aplicaciones Web de IIS (como es el caso de SharePoint), podemos encontrarnos tanto con problemas de IIS Deadlocks, así como con problemas de rendimiento. Una forma de poder enfrentarnos a este tipo de problemas, es modificar algunos parámetros de configuración de Threading que podemos encontrar en el fichero Machine.config del Net Framework. El presente artículo describe esta solución, que en alguna ocasión puede resultarnos de gran utilidad. El primer paso, antes de realizar una instalación de SQL Server 2012 AlwaysOn Availability Groups, es instalar y configurar el servicio Failover Cluster (requisito imprescindible para habilitar AlwaysON). El presente artículo describe paso a paso la instalación de un Failover Cluster de 3 Nodos con Almacenamiento Asimétrico (dos nodos en HA utilizando Almacenamiento Compartido con una Instancia de SQL Server en Cluster y un tercer nodo para DR con Almacenamiento Local y una Instancia Standalone), incluyendo la configuración del Quorum con Nodos de Recuperación sin Voto de Mayoría y otros detalles. Otras de las novedades introducidas en SQL Server 2012 son las cláusulas OFFSET y FETCH de ORDER BY, las cuales facilitan la paginación de conjuntos de resultados en el servidor, pudiendo indicar la primera fila a recuperar y el número de filas consecutivas conforme a un criterio de ordenación (ORDER BY), lo cual, además permite realizar un acceso aleatorio. Una interesante mejora, frente a las técnicas de paginación que teníamos que utilizar en versiones anteriores de SQL Server para conseguir la misma funcionalidad. Sin lugar a dudas, AlwaysON Availability Groups (AG) es la principal novedad incluida en SQL Server 2012. El presente artículo presenta esta nueva tecnología de Bases de Datos en Alta Disponibilidad, describiendo diferentes casos de uso, así como varios detalles interesantes, como la utilización de Almacenamiento Asimétrico (Asymetric Storage) y la configuración de Nodos de Cluster sin Voto en el DataCenter de respaldo para aumentar la Disponibilidad. ¿Aún no conoces AlwaysON? A qué esperas ! Disponible desde SQL Server 2008, es posible crear un Tipo de Dato que sea una Tabla definida por el usuario (User-Defined Table Types), utilizando una sentencia CREATE TYPE, de tal modo que además de permitirnos declarar variables de Tipo Tabla (algo que ya podíamos hacer desde varias versiones anteriores de SQL Server de forma explícita), también nos permita pasar una variable de Tipo Tabla como parámetro de un Procedimiento Almacenado o de una Función, aunque no es posible utilizarlo como columna de un tabla. La cláusula FOR XML está disponible en SQL Server desde hace ya varios añitos, ofreciendo la posibilidad de devolver el resultado de una consulta SQL directamente como un Fragmento XML o como un Documento XML, en lugar de devolver un conjunto de filas y columnas. El presente artículo es una introducción a la cláusula FOR XML, incluyendo FOR XML RAW, FOR XML AUTO, FOR XML PATH, y las opciones ROOT y ELEMENTS. SQL Server 2012 introduce varias funciones nuevas de fecha y hora, por un lado la función EOMONTH que nos permite calcular cuál es el último día de un mes (verdaderamente útil, sobre todo para cálculos financieros y similares), y por otro lado las funciones DATEFROMPARTS, TIMEFROMPARTS, DATETIMEFROMPARTS, DATETIME2FROMPARTS, DATETIMEOFFSETFROMPARTS y SMALLDATETIMEFROMPARTS, las cuales nos permiten obtener una fecha y/u hora desde los valores enteros de sus partes (año, mes, día, hora, minutos, segundos, etc.), también de gran utilidad. SQL Server 2012 introduce dos nuevas funciones de cadena, CONCAT y FORMAT, la primera de ayuda para realizar concatenaciones de texto, y la segunda de ayuda para formatear valores numéricos o fechas en virtud de una cadena de formato de NET Framework y opcionalmente de una configuración regional de idioma. En versiones anteriores de SQL Server, ya disponíamos de las funciones CAST y CONVERT, con las cuales podíamos acometer conversiones (castings) entre diferentes tipos de datos. SQL Server 2012 introduce nuevas funciones de conversión de datos (TRY_CONVERT, TRY_CAST, TRY_PARSE y PARSE) que junto a la nueva función IIF, complementan a las ya existentes, y nos facilitan la codificación de Transact-SQL. A continuación se realiza una breve presentación de las nuevas funciones de conversión incluidas en SQL Server 2012. En esta ocasión vamos a hablar sobre dos nuevas funciones disponibles en SQL Server 2012: LAG y LEAD. Se trata de dos funciones analíticas que permiten acceder a las filas anteriores y a las filas posteriores (respectivamente) de la fila actual de un conjunto de resultados, algo que aporta una gran riqueza para la construcción de consultas SQL de carácter analítico, y que en versiones anteriores necesitábamos resolver realizando un SELF JOIN. A continuación, más detalles. Una de las nuevas aportaciones de SQL Server 2012 son las Secuencias, que nos permiten definir una secuencia de valores para poder utilizar al insertar filas sobre una o varias tablas, resultando una muy interesante alternativa a la utilización de columnas con la propiedad IDENTITY o incluso de Tablas de Contadores, y que además ayudará a facilitar las migraciones de ORACLE a SQL Server. El presente artículo describe esta nueva característica de SQL Server 2012 y recuerda algunos inconvenientes del tradicional IDENTITY. Aunque en términos generales la utilización de las agrupaciones (GROUP BY) no sea una buena práctica de rendimiento (especialmente en entornos estrictamente transaccionales), también es cierto de que aportan una gran riqueza al lenguaje SQL, algo que en determinadas ocasiones nos puede resultar de gran ayuda. Este artículo presenta las opciones CUBE, ROLLUP, y GROUPING SETS, que permite ampliar la funcionalidad de las sentencias GROUP BY tradicionales, y facilitar la codificación de nuestras consultas SQL. Quienes tengan experiencia en el Desarrollo Web conocerán las posibilidades de utilización de las Fuentes, algo disponible desde hace bastantes años, que permite especificar qué fuentes deseamos utilizar en el texto de nuestra página Web, siempre y cuando dicha fuente esté instalada en el equipo del usuario que está visualizando nuestra página. Posteriormente, nacieron las Web Fonts, mediante las cuales, es posible publicar las fuentes en Internet y así poder utilizarlas, independientemente de que estén instaladas en los equipos de los usuarios. En el presente artículo presenta los Selectores CSS, es decir, la forma en que podemos seleccionar un elemento HTML a través de una hoja de estilos para aplicarle una o varias propiedades de estilo, explicando los distintos tipos de selectores CSS, el funcionamiento de la Herencia de Estilos CSS, la resolución de conflictos en caso de empate, la forma de configurar una propiedad de un estilo para que no se pueda sobrescribir, y la forma de resetear los estilos predeterminados de los navegadores (CSS Reset). SharePoint 2013 ofrece un nuevo modelo de aplicaciones conocido como Apps, que complementa a las ya existentes Soluciones de Granja (Farm Solutions) y Soluciones Sandboxed (Sandboxed Solutions). El presente artículo describe la configuración necesaria a realizar en nuestro SharePoint 2013 On-Premise para poder poner el marcha las Apps, que va desde configuraciones en DNS hasta varias configuración en SharePoint 2013. Hace muchos años hubo una época en la que me dediqué bastante al desarrollo Web, utilizando principalmente HTML, CSS, y ASP, y como entorno de desarrollo, el TextPad ;-). Esa época quedó atrás y posteriormente en realizado algunas tareas de desarrollo Web de forma puntual. En estos días estoy aprovechando a darle un nuevo vistazo al mundo del desarrollo Web (con la perspectiva de explotarlo a tope desde SharePoint, claro ;-), motivo por que he querido aprovechar para dejar este breve Post resumen de lo he estado viendo (por ahora) de HTML5 y que intentaré ir actualizando. Aunque cada vez menos habitual, de vez en cuando nos seguimos encontrando con problemas de resolución de nombres debido a la cache de nombres NetBIOS. En el caso de la caché local de nombres NetBIOS podemos utilizar un comando de consola, que nos puede hacer la vida más fácil. A mí casi siempre se me olvida (esto es de cuando me saqué el MCSE), así que aprovecho para dejarlo aquí apuntadito, como buena chuleta. En este artículo vamos a realizar una muy breve introducción al Cross-Site Scripting (XSS) y a la Política del mismo origen (same origin policy), un par de conceptos de gran interés para cualquier desarrollador Web y también para los administradores de aplicaciones web, especialmente por lo popular que se han ido haciendo con el paso de los años. Los Nombre DNS Wildcard (Wildcard DNS Name) no son más que un registro DNS de tipo CNAME (es decir, un Alias de los de toda la vida) o de tipo que A (Host) que permiten redirigir cualquier petición por debajo de un nombre de subdominio o de dominio (ej: *.apps.guillesql.local ó *.guilleapps.local) a un registro Host determinado (ej: intranet.guillesql.local), una técnica que puede resultar de gran utilidad, y que junto con otras técnicas como el Host Header de los IIS y/o los certificados Wildcard, puede dar mucho juego. Un caso práctico, las Apps en SharePoint 2013 y Office 365. Un problema típico al añadir un Nodo nuevo a un Failover Cluster (al menos con Windows Server 2008 R2), es que el/los Nodos utilizados durante la creación del Cluster aparecen en mayúsculas, mientras que aquellos Nodos que se añaden al Failover Cluster posteriormente se muestran en minúsculas. Hay que reconocer que todo funciona OK, pero del mismo modo, también hay que reconocer que se trata de un tema bastante molesto y que genera bastante inquietud y dudas, ya que al ver unos nodos en mayúsculas y otros en minúsculas sin ningún criterio aparente, no genera mucha sensación de fiabilidad. Uno de las principales piezas de SharePoint 2013 que ha surgido un cambio considerable son los Workflows. Ahora está disponible por defecto el motor de Workflows de SharePoint 2010 .Net Framework 3.5, y se puede adicionalmente montar el nuevo motor de Workflows para SharePoint 2013 (Workflow Manager) que utiliza los componentes Windows Workflow Foundation de .Net Framework 4.5. Sin embargo, al menos On-Premise, deberemos instalar y configurar manualmente el Workflow Manager para poder aprovechar las nuevas características de los Workflows de SharePoint 2013. SQL Server intenta registrar automáticamente sus Service Principal Name (SPN) cada vez que arranca la instancia, algo que con en ocasiones consigue, y en ocasiones no. Básicamente, cuando la cuenta de servicio tiene permisos suficiente (lo que habitualmente ocurre cuando es SysAdmin) lo consigue, y si no, pues no. Ante esta situación, podemos registrar los SPNs manualmente (con setspn.exe, como ya hemos visto en veces anteriores) o bien conceder los permisos estrictamente necesarios para esto (no recomendado, pero que también es posible). Ya hace tiempo es más que una tendencia la utilización de Minificadores de Código (Code Minifier) para JavaScript, HTML, CSS y demás, de tal modo que podamos generar versiones de nuestros ficheros óptimas para su descarga en la web, al eliminar comentarios, espacios, tabulaciones, saltos de línea, renombrar variables (por otras con nombres más cortos), y demás técnicas de compresión, llegando incluso a ofuscar el código (Code Obfustor). Es tan habitual como poco recomendable, trabajar en SharePoint con Listas o Librerías de Documentos que almacenan muchas filas de información (ítems), algo que en muchos casos puede pasar desapercibido sin que se aprecien grandes problemas, y que en otros casos puede presentar problemas, como es el caso de no poder acceder a una Librería de Documentos desde el Explorador de Windows mostrándose el mensaje de error A device attached to the system is not functioning. Una problemática típica en el desarrollo de aplicaciones para SharePoint, es la necesidad de tener que filtrar el contenido de una Lista o Librería en función del usuario actual, de tal modo, que cada usuario sólo sea capaz de ver la información que le corresponde. El presente artículo describe diferentes aproximaciones que nos ayudan a salvar esta situación, y que podremos utilizar en función de la versión de SharePoint y de las peculiaridades propias de nuestra aplicación. Estos días he estado pegándome con un problema en una Librería Versionada de SharePoint 2007, relacionado con la fecha de modificación y el renombrado de carpetas. Básicamente, al renombrar una carpeta en la Librería, se actualizaba automáticamente la fecha de modificación de todos los elementos contenidos en su interior, lo cual, es cuanto menos frustrante (se supone que utilizamos el versionado para tener un mayor control de todas estas cosas, entre otros motivos). Sorprendente. Un Control que podemos necesitar al desarrollar una Plantilla de Formulario InfoPath 2007, es el Contact Selector, para de este modo, facilitar al usuario la selección de personas y grupos dentro de nuestro Formulario InfoPath. Sin embargo, este Control no está disponible por defecto en la barra de herramientas de InfoPath 2007. El presente artículo describe como añadir el Contact Selector a nuestra Barra de Herramientas, y como utilizarlo en una Plantilla de Formulario InfoPath 2007 diseñada para la Web. Useful Sharepoint Designer Activities (SPDActivities) es una Solución de SharePoint 2007 (DP.Sharepoint.Workflow.wsp) disponible de forma gratuita en CodePlex, que ofrece un conjunto de Actividades que podremos utilizar en nuestros Workflows con SharePoint Designer 2007, para de este modo poder crear de forma fácil, rápida y sencilla, nuestros procesos de negocio basados en Workflows de SharePoint. Estos días he estado realizando varios movimientos de Sites en un entorno de pruebas, con la idea de iniciar una reorganización de Sites y Bases de Datos de Contenido en varias Granjas MOSS 2007 de Producción. Durante una de estas pruebas de movimientos con STSADM backup y STSADM restore, me encontré con el mensaje de error FileNotFoundException: The site with the id {GUID} could not be found, al acceder a algunos elementos, como las propias imágenes. ¿Qué hacemos? Recientemente me encontré con un problema después de instalar el Service Pack 3 de SharePoint 2007 sobre dos granjas diferentes corriendo sobre Windows Server 2003 R2 SP2 x64, el cual, provocaba que al ejecutar Formularios de InfoPath en el navegador (Form Services), cuando dichos formularios necesitaban contactar con el servidor (ej: validaciones de servidor al interactuar con los controles del Formulario), el formulario se quedaba colgado mostrando el mensaje de error Sending data to the server… ¿Qué hacemos? Una tarea muy habitual al trabajar con servidores Web IIS, como es el caso de SharePoint, es tener que reciclar los Pool de Aplicaciones de IIS, algo que podemos realizar fácilmente desde la consola de gestión IIS Manager. Sin embargo, esta operación rápida y sencilla, se vuelve más lenta y complicada cuando tenemos servidores Web IIS con multitud de usuarios conectados. ¿Qué hacemos? En el caso de trabajar con Aplicaciones Web basadas en IIS, como por ejemplo es el caso de SharePoint, nos puede resultar de gran ayuda el poder registrar en el Visor de Sucesos (Event Log) los reciclados de nuestros Pool de Aplicaciones, ya que estos no quedan registrados por defecto, y su ocurrencia puede suponer una pequeña indisponibilidad, pues una vez el Pool de Aplicaciones se ha descargado de memoria, la siguiente petición Web que tenga que gestionar requerirá que se vuelva a cargar, lo cual, puede apreciarse como una breve pérdida de servicio. Una tarea que podemos necesitar realizar en el desarrollo de aplicaciones con Visual Studio 2010 para SharePoint 2010, es asociar un Workflow a un Tipo de Contenido (Content Type), algo que podemos realizar con relativa facilidad utilizando código, por ejemplo, en el evento de activación de una Característica (Feature). En ocasiones necesitaremos poder depurar los errores que se produzcan en tiempo de ejecución en nuestra Granja de SharePoint, para lo cual podremos buscar información en el Visor de Sucesos. Sin embargo, en ocasiones también podemos querer mostrar los errores en tiempo de ejecución desde el propio navegador (especialmente en entornos de desarrollo), algo que en MOSS 2007 era bastante sencillo. Un problema que podemos encontrarnos, por ejemplo sobre un equipo Windows Server 2008 R2, es que al intentar guardar un nuevo documento de Word 2010 sobre un Site de SharePoint 2010, nos encontremos con el mensaje de error Path does not exist, de tal modo que no podamos guardar nuestro ansiado documento en nuestro deseado sitio. ¿Qué hacemos? El presente artículo detalla cómo asociar una Plantilla de Documento con un Tipo de Contenido (Content Type) en SharePoint 2010 utilizando Visual Studio 2010, tanto en una Solución de tipo Granja (Farm Solution) en la que desplegaremos la Plantilla de Documento en el sistema de ficheros de los Frontales de MOSS (_layouts), como en una Solución Sandboxed en la que desplegaremos la Plantilla de Documento en el interior de la Base de Datos de Contenido del Site Correspondiente (_cts). Por muy largo que pueda haber parecido, sin darnos cuenta, ya se ha acabado quizás el año más duro de las últimas décadas (al menos, en España). Un 2012 que también ha venido cargado de un montón de momentazos, tanto en lo personal como en lo profesional (SQL Server 2012 y SharePoint 2013 ;-). Da igual. Ya es humo. Ahora, sólo nos queda el presente y el futuro más cercano, un año 2013 en el quiero aprovechar para desearos a todos una fabulosa entrada y la oportunidad de que se cumplan todos vuestros deseos. Feliz 2013 ! Una de las sorpresas que nos podemos encontrar al instalar SQL Server 2012 (frente a versiones anteriores) es que durante la instalación debemos especificar el modo del servidor: Multidimensional and Data Mining Mode (por defecto) ó Tabular Mode (opción nueva en 2012). Una decisión irreversible (excepto desinstalando y volviendo a instalar ;-) que tiene impacto en la arquitectura y lenguajes utilizados, aunque en ambos casos, funcionalmente se mantiene el mismo objetivo (respuestas rápidas a preguntas complejas o a consultas masivas). Sin embargo, también existen diferencias de rendimiento. En estos días, estoy empezando a montar un entorno de laboratorio, con entre otras cosas, un SQL Server 2012 sobre Windows Server 2012 (el mundo sigue girando, y mientras en Microsoft, currando ;-). Sin embargo, durante la instalación me encontré con el siguiente error: Error while enabling feature NetFx3. Un error sin consecuencias graves, que podemos evitar instalando el Net Framework 3.5 antes de iniciar la instalación de SQL Server 2012. Estos últimos días he estado pegándome con la instalación del Service Pack 3 en una Granja de SharePoint 2007. El Service Pack no se dejaba instalar correctamente, y tras varios intentos y horas de trabajo, conseguí finalizar la instalación satisfactoriamente, para lo cual tuve que quitas las Bases de Datos de Contenido de SharePoint, finalizar la instalación del Service Pack 3, y seguidamente volver a adjuntar las Bases de Datos de Contenido. Más detalles, a continuación. Continuando con el tema de las Migraciones de Directorio Activo (cómo mover Usuarios y Grupos de un Dominio a otro) y su impacto sobre SharePoint, en esta ocasión vamos a tratar el caso de la migración de Grupos, aprovechando para comprobar si funciona o no SIDHistory con los Grupos de Directorio Activo y SharePoint, así como ver la manera de migrar los Grupos con el comando STSADM migrategroup, y otros pequeños detalles a tener en cuenta, como la descripción de los Grupos migrados y la herramienta renameGroup. En caso de sufrir una migración de Directorio Activo con SharePoint, como por ejemplo migrar usuarios y grupos de un dominio original a un nuevo dominio, deberemos realizar algunas tareas a nivel de SharePoint, como es el caso de utilizar los comandos STSADM migrateuser y STSADM migrategroup, para de este modo, SharePoint pueda empezar a utilizar los usuarios y grupos migrados en lugar de los originales. Sin embargo, en el caso de la migración de grupos con STSADM migrategroup podemos tener un problemilla con la descripción o nombre del grupo migrado: sigue siendo la original. ¿Te has preguntado alguna vez porque el comando STSADM es tan lento incluso al ejecutarlo sin parámetros? ¿Se podrá acelerar la ejecución del comando STSADM? Habitualmente trabajamos con servidores de SharePoint ubicados en la red corporativa de una compañía, lo que viene a significar, que dichos servidores no pueden acceder a Internet (al margen, de que tu usuario pueda acceder a través de un Proxy configurado en el navegador, pero el servidor no llega a Internet). Algo que como veremos tiene mucho que ver. Un error que me he encontrado al intentar migrar Grupos de Directorio Activo con el commando STSADM migrateuser es el error: Operation is not valid due to the current state of the object. Tras varios intentos fallidos, un poco de investigación, y por supuesto de algo de Googling, me di cuenta de mi garrafal error. En estos días estoy participando en un proyecto de Migración de Directorio Activo, revisando riesgos e impactos, así como identificando el mejor camino de migración, en lo referente a SharePoint. El alcance del proyecto incluye multitud de dominios origen con presencia en 50 países, que se migrarán y consolidarán en un único dominio destino. Además, existen múltiples Granjas de SharePoint en diferentes versiones, ubicaciones y pertenecientes a diferentes dominios. ¿Funcionará SIDHistory? ¿Cómo migrar los Perfiles de Usuario de SharePoint? ¿Qué pasa con las Alertas y con los campos de tipo People and Groups? Un error que nos podemos encontrar durante una Migración de usuarios de Directorio Activo, en lo relacionado con la migración de los usuarios en SharePoint utilizando el comando STSADM migrateuser, es el mensaje An error occurred while translating user name to a Windows account name (DS_NAME_ERROR_NOT_FOUND), un error que parece fácilmente solucionable. Una problemática que antes o después nos encontraremos es la Migración del Directorio Activo, ya sea debida a un proyecto de segregación, de consolidación, o simplemente por una renovación tecnológica de la infraestructura. Sin embargo, aunque este tipo de proyectos parece a priori que sólo afecta a Directorio Activo, la realidad es que afecta a TODO, incluyendo a SQL Server. En este artículo, vamos a presentar este tipo de escenarios de migración relacionados con Directorio Activo, el SIDHistory, y SQL Server. Un mensaje de error que nos podemos encontrar al intentar migrar cuentas de usuario de Directorio Activo entre Dominios con Active Directory Migration Tool (ADMT) manteniendo el historial de SID es el mensaje: Could not verify auditing and TcpipClientSupport on domains. Will not be able to migrate Sids. Access is denied. Un error, que al menos en este caso, tenía una fácil solución. El presente artículo describe paso a paso la creación de Tipos de Contenido (Content Types) en SharePoint 2010 con Visual Studio 2010, tanto utilizando su descripción XML en el correspondiente fichero elements.xml, como mediante código utilizando la API de SharePoint, para lo cual se incluyen un par de proyectos de Visual Studio a modo de ejemplo. El presente artículo describe diferentes formas de crear Columnas de Sitio (Site Columns) en SharePoint 2010 utilizando Visual Studio 2010, tanto utilizando código cómo especificando la descripción XML de las columnas en el correspondiente fichero elements.xml, para lo cual realizaremos dos ejercicios paso a paso con Visual Studio 2010, compartiendo el correspondiente código fuente. Una de las tareas que podemos necesitar realizar en SharePoint es exportar las Columnas de Sitio (Site Columns), algo que podíamos hacer fácilmente en SharePoint 2007 con las extensiones de Gary Lapointe, y que en SharePoint 2010 podemos hacer fácilmente escribiendo unas pocas líneas de PowerShell. El presente artículo describe paso a paso como crear un Workflow Secuencial para SharePoint 2010 que incluya formularios html de Asociación (Association Form) e Iniciación (Initiation Form) utilizando Visual Studio 2010, un caso típico (y quizás el más sencillo) de programación de Workflows con formularios para SharePoint. Recientemente me ha sido necesario preparar un VBScript que comprobase qué cuentas de usuario de Directorio Activo tenían concedido el permiso Read al grupo especial Authenticated Users, algo que quiero aprovechar para compartir para quién le pueda resultar de interés, ya porque tenga la misma necesidad o porque tenga una necesidad parecida y también le pueda servir de ayuda. Microsoft iSCSI Target es un software de Microsoft (antes conocido como WinTarget) que permite convertir un servidor Windows en un servidor de almacenamiento iSCSI (Target), lo cual nos permite cosas como presentar un mismo disco (LUN) a varias máquinas, por ejemplo para crearnos un Failover Cluster. Anteriormente disponible como descarga gratuita, actualmente ha sido incluido directamente como un Role de Windows Server 2012, siendo ya parte del Sistema Operativo. Las Listas de Tareas de SharePoint son la forma en la que los Workflows de SharePoint interacciona con los usuarios, típicamente para obtener una entrada del usuario a mitad de la ejecución del Workflow (ej: Aprobar o Rechazar), lo cual se ve complementado con la utilización de formularios personalizados (html o InfoPath). Es hace que resulte bastante importante sabe cómo utilizar las actividades relacionadas con las Tareas y sabe cómo personalizar formularios, para poder desarrollar correctamente Workflows con Visual Studio 2010 en SharePoint 2010. El presente artículo describe, utilizando un ejercicio práctico, cómo crear un Workflow con Tareas en Visual Studio 2010 para SharePoin 2010, uno de los casos típico en el desarrollo de Workflows con Visual Studio. En esta breve entrada tan sólo quiero recordar que SQL Server Express existe, que es gratis, y que en particular, SQL Server 2012 R2 Express with Advanced Services es la caña, al igual que la anterior versión SQL Server 2008 R2 Express with Advanced Services. No es todo Grandes Proyectos para Grandes Cuentas. Hay muchos pequeños proyectos (tanto en las Grandes Empresas como en las más Pequeñas) que permiten hacer mucho negocio. Microsoft lo sabe, y en este segmento, SQL Server Express with Advanced Services cada día tiene una posición más sólida, y se presenta con una gran alternativa a otros sistemas de base de datos gratuitos. Recientemente al instalar una nueva granja de SharePoint 2010 Enterprise SP1 me encontré con el siguiente error de configuración al ejecutar el asistente de configuración de SharePoint 2010 (SharePoint 2010 Products Configuration Wizard): Failed to register SharePoint services: The specified value for the LocStringId parameter is outside the bounds of this enum. Un error que al final quedó solucionado (faltaría más ;-), aunque no de la manera en la que me habría gustado. Para muchos de nosotros es muy habitual utilizar un Sistema Operativo de Servidor (como Windows Server 2012 o Windows Server 2008 R2) como equipo de escritorio, por diversas razones, como ejecutar Hyper-V para poder tener un Entorno de Laboratorio, o para poder hacer pruebas diversas desde tu propio equipo. En este caso, muy probablemente te pueda interesar poder disfrutar en tu Windows Server muchas de las ventajas de un Sistema Operativo de Desktop, como por ejemplo Windows Media Player o el soporte para video AVI. Hace ya varios años que decidí montarme un Entorno de Laboratorio algo en condiciones, para lo cual empecé con un par de servidores Windows Server 2003 R2 SP2 corriendo Virtual Server 2005 R2. De ahí migré Windows Server 2008 RTM con Hyper-V, y posteriormente migré a Windows Server 2008 R2 con Hyper-V v2 y Virtual Machine Manager 2008 R2. El tiempo pasa, y ahora toca migrar mis 40 VMs (redondeando a la baja) a Hyper-V v3 sobre Windows Server 2012. Un error que podemos encontrarnos al arrancar una máquina es el error con Event Id 7000 y la siguiente descripción: The Parallel port driver service failed to start due to the following error: The service cannot be started, either because it is disabled or because it has no enabled devices associated with it. Algo muy fácil de solucionar cuando sabemos que no estamos utilizando el Puerto Paralelo. Un problema que podemos encontrarnos al tomar el control de una Granja de SharePoint 2007 existente (algo típico en proyectos de Outsourcin), es que al intentar acceder a ciertas opciones del Proveedor de Servicios Compartidos (SSP) obtengamos un error de acceso denegado (Access Denied) incluso siendo Administradores de la Granja (Farm Administrator), administrador del Site Collection de SSP, y teniendo permiso de Full Control en la Policy de la Aplicación Web. La semana pasada he tenido que realizar una exportación de usuarios de un Directorio Activo versión Windows Server 2003, para lo cual, he utilizado el comando CSVDE con tres de sus parámetros, obteniendo así la información que necesitaba. Una tarea muy sencilla que sin un mínimo de conocimientos de Directorio Activo, puede parecer mucho más complicada de lo que realmente es. El Developer Dashboard es una nueva funcionalidad incluido en SharePoint 2010, de gran ayuda a la depuración de código y resolución de problemas en SharePoint. Esta funcionalidad, se puede activar de forma sencilla, con un comando STSADM, y nos mostrará información estadística relativa a la ejecución de la página actual (ej: tiempos de ejecución). Recientemente me he estado pegando con una configuración en una Granja de MOSS 2007 con múltiples relaciones de confianza unidireccionales contra varios dominios externos (una Extranet), una tarea que ya he tenido que realizar en varias ocasiones anteriores (también con SharePoint 2010). En esta ocasión me he encontrado con un comportamiento que desconocía, al configurar el People Picker para buscar usuarios sólo sobre un subconjunto de los dominios con los que se tiene relación de confianza unidireccional. Sin duda, el People Picker (el Selector de Personas y Grupos) es una de esas cosas que tiene SharePoint, que o nunca has tenido que saber ni que existe, o que te han dado más de un quebradero de cabeza (como es el caso de entornos Extranet con relaciones de confianza unidireccionales y Firewalls de por medio). En este breve Post voy a presentar algunos comandos STSADM que pueden ser de ayuda para personalizar el comportamiento del People Picker en nuestras granjas de SharePoint. Un error que podemos encontrarnos al intentar desinstalar la Feature de Failover Clustering en Windows Server 2008 R2, es el mensaje de error Cannot remove Failover Clustering, que como indica, nos impedirá desinstalar dicha Feature. Por suerte, es posible conseguir nuestro objetivo utilizando PowerShell. El presente artículo describe como cambiar el disco de arranque del sistema en Windows Server 2008 R2, una tarea que podemos necesitar realizar en distintas situaciones, por ejemplo, cuando el disco del que arranca la máquina no es el que tiene instaladas las Windows por cualquier motivo. La instalación de PowerShell puede resultar de gran utilidad para realizar labores de administración de TI, aún mucho más si habilitamos las sesiones remotas en PowerShell, es decir, la posibilidad de poder conectarnos a una máquina remota (no sólo local) para ejecutar comandos PowerShell a través de la red. El presente artículo trata brevemente este tema, orientándose en Windows Server 2003. Un error que ponemos encontrarnos en MOSS al trabajar con Web Parts personalizadas de terceros, es el mensaje de error “No se permite el tipo de control XXX en esta página. El tipo no está registrado como seguro” (The control type XXX is not allowed on this page. The type is not registered as safe). Un error típico y de fácil solución. Una tarea típica al personalizar (Branding) un Sitio de SharePoint 2010 es la creación de un Pié de Página (Footer) en la Master Page de nuestro Sitio, donde poder mostrar información variopinta, desde un mensaje de copyright hasta enlaces a otras secciones de la Web, datos de contacto, una imagen de marca de agua para potenciar la imagen de marca, etc. El presente artículo describe cómo crear una Master Page y Hoja de Estilos CSS para incluir un Pié de Página (Footer) en un Sitio de SharePoint 2010 con SharePoint Designer 2010. Una tarea que podemos necesitar realizar para personalizar un Sitio de SharePoint 2010 es la creación de Temas personalizados, para de este modo, definir los colores y tipos de letra corporativos que deseamos utilizar. El presente artículo describe como crear y personalizar un nuevo Tema utilizando PowerPoint 2010, para seguidamente importar dicho Tema en un Sitio de SharePoint 2010 y aplicarlo. En muchas ocasiones necesitaremos tener control sobre la fecha de finalización de soporte de Microsoft para los productos que tenemos instalados en producción, y para los cuales necesitamos Mantenimiento, algo que dependerá entre otros factores del nivel de Service Pack. Microsoft tiene disponible una Página Web que nos servirá de gran ayuda para este menester: el Ciclo de vida del soporte técnico de Microsoft. Un error que nos podemos encontrar en SharePoint 2010 después de instalar el Service Pack 1 de SharePoint, es el error An unhandled exception System.ServiceModel.EndpointNotFoundException occurred in OWSTIMER.EXE, un mensaje poco descriptivo para un error relacionado con el ForeFront Identity Manager (FIM). Un mensaje de error típico que nos podemos encontrar en SharePoint 2010 es el conocido mensaje de An unhandled exception System.Security.Cryptography.CryptographicException ocurred in OWSTIMER.EXE, que podremos visualizar periódicamente en una ventana de consola del Debugger de Visual Studio si tenemos instalado juntos Visual Studio y SharePoint, y que podremos visualizar también en algunas situaciones determinadas, como por ejemplo, durante la instalación del Service Pack 1 de SharePoint 2010. Uno de los errores que nos podemos encontrar en el Visor de Sucesos de Aplicación al configurar la importación de perfiles en SharePoint 2010 es el EventID 6050 de Source FIMSynchronizationService: The management agent "MOSSAD-[SYNCHRONIZATION CONNECTION NAME]" failed on run profile "DS_DELTAIMPORT" because of connectivity issues. A continuación se muestra la forma de poder hacer un poco de Troubleshooting para este tipo de errores, y también se presenta una de las soluciones típicas para este error. El presente artículo describe uno de los errores que podemos encontrarnos al importar perfiles de usuarios desde Directorio Activo en SharePoint 2010, el error Event Id 10016 de DistributedCOM: The machine-default permission settings do not grant Local Activation permission for the COM Server application with CLSID {000C101C-0000-0000-C000-000000000046} and APPID {000C101C-0000-0000-C000-000000000046} to the user NT AUTHORITY\NETWORK SERVICE SID (S-1-5-20) from address LocalHost (Using LRPC) Estos últimos días he estado preparando una carga de usuarios en Directorio Activo. El objetivo, generar unos 50.000 usuarios con datos aleatorios, que permitan hacer pruebas variopintas con ellos (en SharePoint, SQL Server, etc.), por lo de siempre, que las cosas con cinco usuarios funcionan muy bien, pero cuando trabajas en un entorno real con miles de usuarios, la cosa cambia. Probemos las cosas bien, desde el principio (pruebas de concepto y entornos de desarrollo y pre-producción). Son muy conocidos por todos la existencia de varios límites recomendados por Microsoft en relación con SharePoint 2007, como es el caso, de que cada Base de Datos de Contenido no deben superar los 100GB. Si bien es cierto que son recomendaciones (y no límites físicos del producto), es importante intentar ajustarnos a estos y evitar así futuros problemas de gestión o rendimiento en nuestras Granjas de SharePoint 2007. El pasado mes de mayo he estado preparando una pequeña herramienta gráfica para realizar unas pruebas de rendimiento sobre SQL Server, utilizando Visual Studio y el .Net Framework, a la cual he bautizado como SQL Server Network Workload Tool (SSNWT), principalmente porque uno de sus objetivos era demostrar como el rendimiento de una carga de trabajo es peor cuando se accede a SQL Server desde la red que cuando se accede a SQL Server en local (evitando las esperas de red). El presente artículo incluye un enlace para la descarga directa y gratuita del SSNWT así como una breve explicación de la misma. Una de las tareas a realizar durante la puesta en producción de un nuevo servidor de SQL Server es la configuración del Antivurus (tan indeseable como necesario). Por suerte, para la realización de esta tarea existe una KB de Microsoft en la que nos podemos apoyar para afrontar esta configuración. Aunque trabajemos habitualmente con SQL Server, la mayoría de las veces no nos preocupamos de cómo funciona una de las cosas más importantes: el tema de la pasta. Un tema del que pueden surgirnos varias preguntas ¿Cómo se licencia SQL Server? ¿Es necesario configurar SQL Server de alguna forma específica en función de cómo lo tengamos licenciado? ¿Se puede consultar el modo de licenciamiento de nuestros SQL Server? ¿Cómo podemos cambiar el modo de licenciamiento de nuestros SQL Server? ¿Qué es el programa de Software Assurance (SA)? Típicas preguntas que nunca nos hacemos, hasta que un buen día, nos toca. Las Office Web Apps permiten tanto visualizar como editar documentos Office (Word, Excel, PowerPoint y One Note) directamente desde la Web, es decir, tan sólo con un navegador. De este modo, la instalación de las Office Web Apps en nuestra Granja de SharePoint Server 2010 o SharePoint Foundation 2010, permite incrementar la productividad de nuestros usuarios, que podrán trabajar online, incluso desde plataformas dispares, como teléfonos móviles (Smartphones), Tabletas, y equipos clientes Linux. El presente artículo describe tanto el concepto como la instalación de las Office Web Apps sobre SharePoint 2010. Otro de los servicios compartidos introducidos en SharePoint 2010 es el Visio Graphics Services o Visio Services, el cual, permite la visualización en formato Web (renderizado) de documentos Visio, incluyendo la posibilidad de mostrar en Web documentos Visio conectados a datos (la caña!), de forma similar a como ocurre con los Excel Services. Todo esto, con un pequeño truco, ya que los documentos Visio que deseemos visualizar en Web, deberán ser guardados como Web Drawing (vdw), en lugar de utilizar el formato tradicional de Drawing (vsd). Además, tenemos la Web Part de Visio Web Access. El Servicio de Estado (State Service) de SharePoint 2010 es un servicio compartido que puede ser requerido por otros servicios de SharePoint, como es el caso de Formularios InfoPath (InfoPath Forms Services), la Chart Web Part, y algunos escenarios de Microsoft Visio 2010. El Servicio de Estado (State Service) permite almacenar datos temporales del estado de sesión en una base de datos SQL Server para su utilización entre distintas peticiones HTTP. Sin embargo, el Servicio de Estado (State Service) no puede ser configurado desde la pantalla Manage Service Applications de la Administración Central (Central Administration) de MOSS. El presente artículo describe paso a paso la configuración de Excel Services un una Granja de SharePoint 2010, uno de los principales servicios de MOSS, disponible desde SharePoint 2007, y mejorado en MOSS 2010, entre otras cosas gracias a las Office Web Apps, que permiten ampliar la funcionalidad de los Excel Calcularion Services, para no sólo renderizar y visualizar ficheros Excel en formato Web, sino también para poder editarlos con tan sólo un Navegador, evitando el problema de trabajar con diferentes versiones clientes de Excel (97, 2003, 2007, 2010, etc) y además permitir trabajar con Excel (ver y editar documentos) desde clientes Linux e incluso utilizando diferentes navegadores. Uno de los nuevos servicios incluidos en SharePoint 2010 es el PerformancePoint Service, anteriormente disponible como un producto independiente que se integraba en SharePoint 2007, y ahora disponible como un servicio más de MOSS 2010, completamente integrado. El presente artículo describe la configuración de PerformancePoint Service en una Granja MOSS 2010, desde el punto de vista de la infraestructura, incluyendo las correspondientes pantallas capturadas y algunas recomendaciones de configuración. Un tarea básica para convertir SharePoint en un portal de Business Intelligence. El Secure Store Service es uno de los primeros servicios compartidos de SharePoint 2010 que deberemos montar en una Granja de MOSS, ya que de la correcta configuración de este servicio depende el funcionamiento de algunas características de otros servicios de SharePoint 2010, como Excel Services, Visio Services, PerformacePoint Services, PowerPivot for SharePoint 2010 y Microsoft Business Connectivity Services. El presente artículo describe la configuración básica del servicio Secure Store Service en una Granja de SharePoint 2010. Recientemente he tenido que preparar una importación de usuarios en un Directorio Activo basado en Windows Server 2003, para lo cual he utilizado la utilidad CSVDE. Sin embargo, la utilidad CSVDE tiene algunos inconvenientes, por lo que de forma adicional me ha sido necesario utilizar un pequeño script VBS. Por otro lado, estaba la generación del fichero CSV, algo que podemos hacer utilizando Excel, sus fórmulas, y el maravilloso copiar y pegar. Un error típico al empezar a trabajar con Bases de Datos Access habilitadas para la Web (Access Web Database), es decir, para ejecutarse utilizando los Access Services de SharePoint 2010, es la configuración del formulario de inicio (Web Display Form), el formulario que deseamos que se muestre cuando accedamos a la raíz de nuestro Sitio Web creado al publicar nuestro Access Web Database. El problema, no poder especificar ningún formulario como formulario de inicio (Web Display Form) porque el menú desplegable está vacío (no hay donde rascar ;-) Una de las novedades introducidas en SharePoint 2010 es la disponibilidad de los Access Services, de tal modo, que podamos ejecutar una base de datos Access desde un navegador, gracias a este nuevo servicio de MOSS 2010. Un caso de uso típico es crear un nuevo Sitio, utilizando una de las plantillas de sitio de tipo Web Database. Sin embargo, al acceder al nuevo sitio de tipo Web Database, nos podemos encontrar con el mensaje de error Failed to start macro VerifyUsers. ¿Qué hacemos? Una de las tareas de configuración que muy probablemente necesitaremos realizar en una topología Split Back-to-Back de SharePoint, es la configuración del Selector de Personas y Grupos (People Picker) para de este modo poder realizar búsquedas sobre Directorio Activo de usuarios y grupos y facilitar así tareas como la asignación de permisos en SharePoint. Un tarea típica en este tipo de configuraciones (Split Back-to-Back) debido a la utilización de relaciones de confianza unidireccionales en Directorio Activo. El presente artículo describe la instalación de un servidor de SharePoint 2010 en una topología de Extranet de tipo Split Back-to-Back. Partimos de una Granja de SharePoint existente dentro de una red corporativa con dos servidores MOSS 2010, y vamos a realizar la instalación de un nuevo (y tercer) servidor MOSS 2010 sobre una red perimetral, en una máquina que pertenece a un dominio de un bosque distinto, para seguidamente unir dicho servidor MOSS a la Granja interna, y de este modo, dejar configurada nuestra Granja conforme a la topología Split Back-to-Back. Mola. En diferentes situaciones, como por ejemplo al trabajar en entornos de Intranet y Extranet con diferentes bosques de Directorios Activos, resulta de gran utilidad la creación de relaciones de confianza unidireccionales entre diferentes dominios de Directorio Activo, para así, poder conceder permisos de accesos a los usuarios de un dominio, sobre los recursos del otro. El presente artículo describe la creación de una relación de confianza unidireccional no transitiva entre dos dominios de bosques distintos en Windows Server 2003 R2. Uno de los errores más habituales durante la instalación del Service Pack 1 de SharePoint 2010, es el mensaje de error The installation of this package failed. Un mensaje de error quizás demasiado genérico para poder averiguar el motivo del fallo en la instalación del Service Pack 1 de MOSS 2010, pero que con una revisión rápida podremos encontrar el habitual motivo que produce este error: No hay suficiente espacio en disco. Ampliamos disco (o liberamos espacio), y la instalación del Service Pack 1 finaliza OK. En estos días me he encontrado con un equipo Windows Server 2008 R2, de una instalación limpia (en un entorno de Laboratorio), con DNS y Directorio Activo instalado. Tras realizar una instalación de Exchange Server 2010, descubrí que el servicio DNS Server estaba parado, y al brujulear algo más, resultó que el servicio DNS Server no arrancaba nunca durante el inicio del equipo, produciéndose el error The network is not present or not started, aunque posteriormente se podía iniciar manualmente sin ningún problema. Algo similar ocurrí con el servicio Internet Messaging. Estos días he estado montando un entorno de laboratorio con SharePoint 2010. En esta ocasión, he intentado montar todo en una máquina física, es decir, Windows Server 2008 R2 (con Directorio Activo y DNS), SQL Server 2008 R2 Developer x64, Visual Studio 2010, Office 2010, y SharePoint 2010. Aquí hay un pequeño detalle especial: estamos intentando instalar SharePoint 2010 sobre un Controlador de Dominio (Domain Controller) de Directorio Activo (Active Directory). Una de las novedades más interesantes introducidas en SharePoint 2010 es el Almacenamiento Remoto de Blobs (RBS - Remote Blob Storage). De este modo, utilizando un proveedor EBS, es posible almacenar los datos Blobs (ej: los documentos) fuera de las Bases de Datos de Contenido de SQL Server. En particular, utilizando el proveedor RBS para FILESTREAM, es posible aprovechar el almacenamiento FILESTREAM de SQL Server, para de este modo, mejorar el rendimiento de SharePoint 2010 y liberar de carga a SQL Server. Mola. Recientemente me he encontrado en una instalación de SharePoint Foundation 2010, con el error The Workstation service has not been started al intentar crear una nueva Base de Datos de Contenido desde la Consola de Administración Central, por lo que no se podían crear nuevas Bases de Datos de Contenido en SharePoint. Sin embargo, el servicio Workstation estaba ejecutándose OK. Después descubrí que no se podía crear una nueva Aplicación Web en SharePoint 2010 con la Consola de Administración Central debido a que el botón de New Application estaba deshabilitado. Por suerte, tuvo una solución bastante sencilla. En alguna que otra ocasión, nos podemos encontrar con una Instancia de SQL Server o SQL Express, a la cual necesitamos acceder con permisos elevados (SysAdmin), pero sin embargo no tenemos ningún usuario para acceder a dicha Instancia, aún siendo Administradores de la máquina. En este caso podremos aprovechar el truqui de iniciar la Instancia de SQL en modo Usuario Único para concedernos permisos de SysAdmin, by the patilla. Muy útil, en proyectos de Outsourcing, fusiones de empresas, en instalaciones de SharePoint 2010 en modo StandAlone, y en muchos casos. Una problemática típica en SQL Server (al igual que en otros motores de Base de Datos) es el almacenamiento de datos Binarios Grandes (BLOBs), es decir, de ficheros. A partir de SQL Server 2008, es posible habilitar la funcionalidad de almacenamiento FILESTREAM, que permite a SQL Server almacenar los datos grandes (BLOBs) directamente en un sistema de archivos NTFS, de forma transparente para las operaciones de Backup y resto de sentencias DML y DDL. El presente artículo describe la tecnología FILESTREAM en SQL Server, sus ventajas e inconvenientes. Una vez que hemos visto una introducción al almacenamiento FILESTREAM en SQL Server, llega el momento de la práctica. El presente artículo describe paso a paso la forma de configurar el almacenamiento FILESTREAM en SQL Server, es decir, habilitar FILESTREAM a nivel de la Instancia de SQL Server, añadir un Grupo de Ficheros (FileGroup) para FILESTREAM en una Base de Datos, y crear una tabla con un campo VARBINARY(MAX) configurado para utilizar el almacenamiento FILESTREAM. De forma adicional a los Sitios Personales, en SharePoint 2010 existen las Etiquetas Sociales (Social Tags) y otras funcionalidades relacionadas con el Social Computing, que podemos desear deshabilitar, en caso de no desear utilizarlas por el motivo que fuere. De forma similar a como ocurría en MOSS 2007, en MOSS 2010 es posible deshabilitar o limitar la creación de Sitios Personales (My Site), con el objetivo de minimizar costes de mantenimiento y hardware (especialmente en Grandes Empresas, dónde estas cifras se disparan) o por otros motivos. Una funcionalidad que viene habilitada para todos los usuarios por defecto, y que en algunos casos encontraremos ventajoso su limitación. Una de las nuevas características de SharePoint 2010, es que puede instalarse sobre Windows 7 o Windows Vista SP1, siempre y cuando se utilice como un entorno de desarrollo y se utilice una versión de 64-bits de S.O. El presente artículo describe paso a paso la instalación de SharePoint Foundation 2010, la edición gratuita de SharePoint (anteriormente conocido como WSS), en modo StandAlone sobre una instalación de Windows 7 x64. Una práctica que llevan a cabo muchas empresas en sus Granjas corporativas de MOSS 2007 es deshabilitar la creación de Sitios Personales (My Site), una funcionalidad que viene habilitada por defecto. Dado que cada Sitio Personal es una Colección de Sitios asignada a un usuario, una empresa de 20.000 usuarios podría llegar a tener 20.000 Colecciones de Sitios, un coste que muchas empresas no están dispuestas a asumir (ej: almacenamiento, bases de datos de contenido en SQL Server, backup, etc.). Recientemente estuve pegándome con un error en una Granja de MOSS 2007 SP2. Las búsquedas no funcionaban, y al revisar los diferentes servidores de la Granja se podían encontrar errores diversos: Errores con Event ID 1088 de ASP.NET 2.0 (Failed to execute request because the App-Domain could not be created. Error: 0x80070005 Access is denied) en un servidor de Búsqueda, errores con Event ID 6482 de Office SharePoint Server en el Index Server, mensaje Server Application Unavailable al acceder al Web Service SearchAdmin.asmx, etc. Incluso si nuestro trabajo se limita a la administración de SharePoint, disponer de un entorno de desarrollo de MOSS, nos resultará de gran utilidad en diferentes situaciones, tanto para poder resolver incidencias (ej: ver los WorkFlows de SharePoint Designer), como para realizar diferentes tareas administrativas (ej: consultar el tamaño de un SubSite desde SharePoint Designer, o exportar un Site sin incluir sus SubSites), o desarrollar nuestras propias Tools. Por ello, en esta ocasión vamos a explicar cómo montar un entorno de desarrollo de SharePoint, tanto para MOSS 2007 como para MOSS 2010. Un problema que nos podemos encontrar al trabajar con Jobs incrementales de Content Deployment en MOSS 2007 es el famoso error de violación de clave primaria: Violation of PRIMARY KEY constraint PK__#ExportObjects: Cannot insert duplicate key in object dbo.#ExportObjects. Este error, suele implicar la ejecución de consultas costosas y bloqueos en SQL Server, que producen que el Job tarde mucho tiempo en ejecutarse para finalmente finalizar con este error, e incluso bajo algunas circunstancias, producir una pérdida de servicio, requiriendo un reciclado de Application Pools, IISRESET, etc. ¿Qué hacemos? Bajo diferentes circunstancias nos puede interesar consultar en SQL Server sobre qué Base de Datos de Contenido de MOSS (y en que servidor SQL) se almacena una Colección de Sitios determinada, para lo cual, tan sólo tendremos que ejecutar una sencilla consulta SQL sobre la base de datos de configuración de MOSS (SharePoint_Config). Pero ¿Cómo lo hacemos? Un problema que nos podemos encontrar en una Granja de MOSS 2007 con Excel Services, es que algunos usuarios al intentar abrir un fichero Excel, en vez de abrirlo en su Microsoft Office Excel local, sólo puedan abrirlo en formato Web (con Excel Web Access, aún configurando las Bibliotecas de Documentos para utilizar la aplicación cliente Microsoft Excel), lo cual puede ser un serio inconveniente, ya que muchas funcionalidades de Excel no están soportadas por Excel Services, y en ese caso el intento de acceso a Excel terminará en un Error al usuario. Aún más frustrante, cuando a algunos usuarios les ocurre y a otros no. Una problemática típica en cualquier Granja de MOSS es la gestión de las Bases de Datos de Contenido y la creación de nuevas Colecciones de Sitios, especialmente cuando estamos utilizando múltiples Bases de Datos de Contenido en una misma Aplicación Web. En este caso ¿Cómo podemos controlar sobre qué Base de Datos de Contenido se va a crear una nueva Colección de Sitios? ¿Cómo podemos organizar las Bases de Datos de Contenido en una Aplicación Web sobre la que se crea una gran cantidad de Colecciones de Sitios de forma automática (ej: My Sites)? Hasta el momento, hemos visto cómo pueden producirse los eventos de traza Hash Warning / Sort Warning como resultado de la reutilización de un Plan de Ejecución con Operadores Costosos entre invocaciones con diferentes valores de los parámetros de entrada, incurriendo en una subestimación de Memoria de Consulta. El presente artículo muestra un caso diferente, en particular, la ocurrencia de eventos Hash Warning y Sort Warning como resultado de unas estadísticas incorrectas o poco actualizadas, para lo cual hemos falseado las estadísticas con UPDATE STATISTICS WITH ROWCOUNT o PAGECOUNT. En esta quinta entrega de la serie de artículos sobre los eventos de traza Hash Warning y Sort Warnings, vamos a realizar un ejemplo paso a paso para reproducir un evento Hash Warning y evidenciar la penalización de rendimiento por el acceso a TEMPDB (debido a la subestimación de memoria de consulta por la reutilización del Plan de Ejecución) y por la utilización de un Operador incorrecto en el Plan de Ejecución (Hash Match vs Merge Join). Todos sabemos que TEMPDB es una base de datos del Sistema que SQL Server utiliza para diferentes tareas internas, y que nosotros mismos podemos utilizar de forma explícita (ej: creación de tablas temporales). El presente artículo pretende presentar y diferenciar dos de los posibles tipos de acceso a TEMPDB que pueden realizarse como resultado del Plan de Ejecución de nuestras consultas, el acceso a TEMPDB por desbordamiento (spilling to TEMPDB) y la utilización de Tablas de Trabajo (Work Tables). En esta tercera entrega de la serie de artículos sobre los eventos de traza Hash Warning y Sort Warnings, vamos a realizar paso a paso un ejemplo sobre la base de datos de Adventure Works, para reproducir un evento Sort Warning y evidenciar la penalización de rendimiento por el acceso a TEMPDB (debido a la subestimación de memoria de consulta por la reutilización del Plan de Ejecución), para seguidamente reproducir el caso contrario (la sobrestimación de memoria de consulta por la reutilización del Plan de Ejecución). En esta segunda entrega de la serie de artículos sobre los eventos de traza Hash Warning y Sort Warnings, vamos a centrar nuestra atención en la concesión de memoria de consulta (Memory Grant) que se realiza al ejecutar consultas con Operadores Costosos (Expensive Operators) en el Plan de Ejecución como las Ordenaciones y operaciones Hash, incluyendo las variaciones en las necesidades de memoria en función del número de procesadores utilizados por la consulta, es decir, del paralelismo (DOP: Degree Of Parallelism). Para todo esto, utilizaremos un ejemplo práctico. Un problema que nos podemos encontrar en MOSS 2007 con el paso de los años, es que el certificado digital autofirmado del Site Office Server Web Services esté caducado. En este caso, obtendremos en el visor de sucesos de Aplicación multitud de entradas para el Event ID 6482 con origen Office SharePoint Server. Además, nos encontraremos con diferentes errores, como por ejemplo el error The remote certificate is invalid according to the validation procedure al intentar visualizar la configuración de Orígenes de Contenido en los Servicios Compartidos. Los Eventos de Traza Sort Warning y Hash Warnings, son un importante indicador de Problemas de Rendimiento en SQL Server, relacionados con la subestimación de memoria de consulta (Query Memory o Workspace Memory) en los Planes de Ejecución. Su ocurrencia, implica la ejecución de consultas SQL utilizando menos RAM de la recomendable, incurriendo en realizar la misma tarea en múltiples fases y escribiendo en TEMPDB (spilling to TEMPDB), en lugar de realizarlo en un único paso utilizando memoria RAM, y además, puede implicar problemas adicionales de Esperas (Waits) de consultas pendientes de adquirir memoria. Y todo esto, se complica más si tenemos muchos procesadores en SQL Server. Una problemática típica en el desarrollo de aplicaciones de bases de datos es la Paginación de Conjuntos de Registros, es decir, ejecutar una consulta mostrando los datos en páginas (ej: de 10 en 10). Quizás la forma más fácil sea llenar (Fill) un DataSet con todas las filas de la consulta, y en la presentación al usuario mostrarlas (maquillar) de forma paginada al utilizar las propiedades de paginación de los controles de datos como el DataGrid. El inconveniente, ejecutar la consulta completa y transferir todas las filas desde SQL Server a la aplicación. Pero ¿Cómo paginar eficientemente en SQL Server? En ocasiones necesitamos mover una gran cantidad de bases de datos de una instancia de SQL Server a otra instancia de SQL Server, como es el caso típico de las migraciones o de la promoción de bases de datos entre entornos (ej: Desarrollo, Pruebas, Pre-Producción, y Producción). En el siguiente artículo se describe e incluye un Script para generar de forma masiva las sentencias RESTORE de las bases de datos deseadas, incluyendo la correspondiente cláusula MOVE para cada fichero de Data y Log. Una de las particularidades de SQL Server 2008 R2, es que en caso de necesidad, podemos reconstruir sólo la Base de Datos del Sistema MSDB (sin necesidad de reconstruir también master y model), para lo cual deberemos utilizar el Script instmsdb.sql y el Trace Flag 3608. El presente artículo describe este proceso paso a paso e incluyendo las correspondientes pantallas capturadas. Una tarea en principio soportada (aparece en los BOL), aunque habría que ver hasta que punto recomendada. Una de las acciones que podríamos tener que realizar para devolver a la vida a una Instancia corrupta de SQL Server 2008 R2, un Reparar dicha instancia de SQL Server 2008 R2, lo cual corregirá claves del registro, valores de configuración y ficheros de SQL Server. Esto incluye también a la propia Base de Datos de Recursos del Sistema (mssqlsystemresource), ya que actualmente es considerada un fichero más de la instalación de SQL Server (ubicada en el directorio BINN), por lo que para Reconstruir la Base de Datos de Recursos (mssqlsystemresource) deberemos Reparar SQL Server. Una tarea que podemos necesitar realizar en alguna ocasión (aunque muy ocasionalmente) es reconstruir las Bases de Datos del Sistema (master, model, msdb) en SQL Server 2008 R2. Ya sea para cambiar la intercalación de nuestra Instancia de SQL Server, o para devolver a la vida una Instancia que no levanta (y no disponemos de un Backup de las Bases de Datos del Sistema), o por otros motivos, nos conviene estar algo familiarizados con este tipo de intervenciones, especialmente que implicaciones y consideraciones debemos tener en cuenta. El presente artículo describe cómo instalar paso a paso el Language Pack de MOSS 2010 sobre una Granja existente, utilizando como ejemplo, la instalación del Language Pack en español sobre una Granja de MOSS 2010 instalada en inglés. Gracias a la instalación de los Language Pack, poder incluir soporte para múltiples idiomas en MOSS 2010, imprescindible en cualquier Granja MOSS con alcance internacional. En este artículo último artículo de la serie de Database Mail en SQL Server 2008 R2, vamos a introducir las nociones básicas para saber cómo utilizar Database Mail en SQL Server 2008 R2, tanto para enviar correos electrónicos desde TSQL, como para configurar el SQL Server Agent con un perfil de correo de Database Mail, y así poder enviar Notificaciones por correo electrónico a Operadores, en caso de Alertas, finalizaciones de Jobs, etc. Continuando con la serie de artículos sobre Database Mail, en esta ocasión vamos a tratar como configurar Database Mail en un Cluster de SQL Server 2008 R2, paso a paso, incluyendo las correspondiente pantallas capturadas. Del mismo modo, también se detalla como modificar la configuración de Database Mail en SQL Server 2008 R2. En este artículo vamos tratar el Database Mail de SQL Server 2008 R2, una característica disponible desde SQL Server 2005, que facilita el envío de correo electrónico desde SQL Server, y que se presenta como una interesante mejora frente a su antecesor, el SQL Mail, con el que convivimos en anteriores versiones del producto, como SQL Server 2000. Una tarea típica en la administración de bases de datos SQL Server es la eliminación de ficheros de datos secundarios (NDF) en una base de datos SQL Server. Para ello, básicamente deberemos seguir dos pasos: primero vaciar el fichero de datos secundario (NDF), y seguidamente eliminar el fichero de la base de datos. Una tarea sencilla, pero que al trabajar con bases de datos grandes puede requerir de bastante tiempo y consumir una gran cantidad de espacio de LOG (incluso con el Modo de Recuperación SIMPLE). Una vez hemos realizado la instalación de MOSS 2010 y creado nuestra Granja MOSS, el siguiente paso es realizar la Configuración de nuestra Granja, que consiste en habilitar los diferentes Servicios de MOSS que necesitemos utilizar sobre los Servidores MOSS deseados, así como crear una Aplicación Web con la correspondiente Colección de Sitios. El presente artículo detalla paso a paso dicha configuración inicial de Servicios y Servidores en una Granja MOSS 2010 recién instalada, utilizando el Farm Configuration Wizard, e incluyendo las correspondientes pantallas capturadas. Un problema que nos podemos encontrar al trabajar con Content Deployment sobre Sites que contengan Librerías de Documentos con el versionado habilitado, es que la base de datos de contenido del Site destino del Content Deployment empiece a crecer de forma exagerada, especialmente si trabajamos con Jobs de Content Deployment que se ejecuten con cierta periodicidad (ej: diaria) y las Librerías de Documentos contienen documentos grandes. ¿Qué podemos hacer? Un problema que nos podemos encontrar si perdemos la cuenta de servicio del Axapta Object Server (AOS) en Dynamics 2009, es que el servicio de AOS no arranca mostrando el mensaje Error 1067 (The process terminated unexpectedly), y mostrando también algunos mensajes en el Application Event Log con el Event ID 110 (Object Server 01: The license information can not be decoded) y origen Dynamics Server. El presente artículo describe paso a paso cómo crear una Granja de MOSS 2010 sobre Windows Server 2008 R2, incluyendo las correspondientes consideraciones de diseño, datos necesarios, pasos de instalación, pantallas capturadas, y otros detalles relevantes para poder realizar una configuración de este tipo en MOSS 2010. MOSS 2010 junto con SQL Server 2008 R2, forman quizás la principal plataforma de Business Intelligence disponible actualmente en el mercado, cada día utilizado en más y más empresas. El presente artículo describe paso a paso la instalación de una Granja de SharePoint 2010 sobre Windows Server 2008 R2, incluyendo las correspondientes pantallas capturadas de todo el proceso de instalación, conforme se ha ido realizado en un entorno de laboratorio. Una problemática común al montar un entorno de laboratorio con Hyper-V y Windows Server 2008 R2 sobre un portátil, es cómo conectar nuestras Máquinas Virtuales a Internet a través de WiFi, ya que con Hyper-V no podemos crear una Red Virtual enlazada a una tarjeta de red WiFi. Una posible solución, configurar RRAS en el Host Hyper-V (es decir, en el propio portátil) para poder hacer NAT (o Routing, según convenga) y poder conectar de este modo nuestras Máquinas Virtuales a Internet a través de nuestra WiFi. Una configuración que podemos necesitar realizar por diferentes motivos, es la Autenticación de Kerberos sobre SQL Server 2008 R2 y Analysis Services, algo que puede complicarse levemente al trabajar con instancias con nombre en Cluster. El presente artículo detalla la configuración de la Autenticación de Kerberos para una instancia con nombre de SQL Server 2008 R2 y Analysis Services sobre un Failover Cluster de SQL Server 2008 R2. El presente artículo describe la instalación de SQL Server 2008 R2 y Analysis Services sobre un Failover Cluster de Windows Server 2008 R2, incluyendo una descripción paso a paso, las pantallas capturadas de la instalación, así como algunos consejos y recomendaciones. Una de las primeras tareas que deberemos realizar después de instalar un Failover Cluster de Windows Server 2008 R2, es crear o configurar el Distributed Transaction Coordinator (MS DTC) en Cluster. El presente artículo describe paso a paso cómo configurar el MS DTC en un Failover Cluster de Windows Server 2008 R2, utilizando una Aplicación o Grupo de Recursos exclusivo para dicho propósito (con su disco, nombre e IP), paso previo para muchas configuraciones, como por ejemplo para montar un Failover Cluster de SQL Server 2008 R2. Hace ya unos meses que Microsoft ha liberado su Target iSCSI para poder ser utilizado en Windows Server 2008 R2, ya que hasta entonces, tan sólo podía utilizarse sobre Windows Storage Server 2008. Gracias a Microsoft iSCSI Software Target 3.3 para Windows Server 2008 R2, podemos disponer de un almacenamiento compartido iSCSI que puede sernos de utilidad en diferentes casos, como por ejemplo, para crear un FailOver Cluster (tanto con máquinas físicas como virtuales). PowerPivot for Excel es una característica de SQL Server 2008 R2 que toma forma de un Add-in para Excel 2010 para facilitar la carga y análisis de grandes volúmenes de datos en Excel 2010, pudiendo encuadrarse dentro del conjunto de herramientas de Business Intelligence de Microsoft, y más en particular como Self-Service Analysis. El truco, darle una vuelta de rosca a las PivotTables y PivotCharts para que puedan apoyarse en una instalación in-process del motor VertiPaq de Analysis Services y además superar el límite de número máximo de filas de Excel. La caña. Una tarea que podemos necesitar realizar en alguna ocasión es recuperar la configuración de un Cluster, algo que en Windows Server 2008 y R2 podemos realizar desde un backup del System State. Sin embargo, para ello no es necesario recuperar el System State completo, sino que podemos recuperar tan sólo la base de datos de configuración del Cluster, eso sí, desde línea de comandos, utilizando el wbadmin. En estos días, estuve jugando un poco con Visual Studio 2010. Decidí instalarme la Ayuda de Visual Studio 2010 desde local, ya que el Proxy que da salida a Internet me daba problemas de autenticación, y además, es un canteo bajarse 3GB desde un Proxy que es utilizado por un montón de usuarios. La instalación de la ayuda de Visual Studio 2010 fue aparentemente bien, sin embargo, al probarla, me aparecía una página Web con el siguiente error: The topic you requested could not be found in local help. ¿Qué hacemos? En algunas ocasiones nos encontramos con Problemas de Rendimiento en SQL Server, que pueden ser debidos a diferentes motivos (muy variopintos), y que en ocasiones nos pueden traer de cabeza durante una temporadilla. En esta ocasión quería aprovechar para recopilar los artículos aquí publicados sobre Problemas de Rendimiento en SQL Server, para de este modo poder tener una página única para acceder a todos ellos (y actualizarla con el tiempo). Hace unos meses nos entregaron un par de máquinas con 48 CPUs y 72GB de RAM cada una, para montar un Cluster de SQL Server (Windows Server 2008 R2 y SQL Server 2008 R2, como Dios manda), en el que ejecutar una aplicación transaccional (es decir, un ERP, todo lo contrario a un Data WareHouse). Era la primera vez que trabajaba en SQL Server con una máquina con tal muestrario de procesadores, y evidentemente, tenía cierta curiosidad en si sería necesario realizar alguna configuración específica debida a tener que trabajar con tantas CPUs (¿muchas quizás?) en SQL Server. Pues resultó que SI. Una tarea de gran utilidad para cualquier DBA en el mantenimiento de SQL Server, es la creación, manipulación y consulta de Trazas de SQL Server utilizando código Transact-SQL. Esto nos va a dar mucha flexibilidad, ya no sólo para automatizar la creación de las Trazas SQL que necesitemos (bloqueos, deadLocks, consultas y procedimientos almacenados de larga ejecución, etc.), sino también para poder consultar la información de dichas Trazas SQL con simples consultas (filtrar o agregar esta información fácilmente), cargar esta información de Cubos de Analysis Services, etc. En más de una ocasión nos encontraremos con problemas de rendimiento en SQL Server producidos por Bloqueos (Blocks y Locks) e Interbloqueos (DeadLocks), que nos generarán esperas en nuestras consultas y procedimientos almacenados, en cuyo caso, al menos deberemos ser capaces de obtener un mínimo de información de diagnóstico, que nos pueda servir para enviar el equipo de desarrollo o fabricante del software que usa nuestra base de datos, o bien, para que nosotros mismos podamos buscar una solución. Por suerte, desde SQL Server 2005, resulta mucho más fácil obtener este tipo de información. Una tarea a realizar por quienes trabajen con Hyper-V y Virtual Machine Manager 2008 R2, es actualizar al SP1 ambos productos, ya disponibles desde hace varios meses, y así poder disfrutar de las últimas funcionalidades, como RemoteFX y la Memoria Dinámica. En el presente artículo se describe la actualización o instalación del Service Pack 1 de Virtual Machine Manager 2008 R2, tanto del VMM Server, como de la VMM Administrator Console y del VMM Agent en los Host de Hyper-V. En ocasiones, al montar una Granja de MOSS 2007 con varios frontales, ocurre que en el primer frontal que montamos instalamos la consola de administración de MOSS (Central Administration), mientras que en el resto de frontales la dejamos sin instalar, descubriendo este hecho posteriormente, y es entonces cuando deseamos instalar la Central Administration en otros servidores MOSS de la Granja. En el presente artículo se muestra la forma de realizar esta configuración, muy sencilla. Lo primero que deberemos implementar en una Instalación de Microsoft Dynamics AX 2009 son los denominados Componentes Base (Base Components), que en particular se corresponde con los siguientes cuatro elementos indispensables de toda instalación de Microsoft Dynamics AX 2009: la Base de Datos, los Application Files, el servicio de Application Object Server (AOS), y un Cliente AX. En este artículo, se muestra la instalación de estos componentes, conforme fue realizada en un entorno de laboratorio. Estos días me he estado pegando con un problema de red en un Failover Cluster de Windows Server 2008 R2 con dos instancias de SQL Server 2008 R2 y un FileServer en un Cluster de Windows Server 2008 R2. Tras gran cantidad de errores de backup y de monitorización (en los Agentes que se ejecutaban localmente en los Nodos del Cluster), errores de conexión con SQL Server Management Studio (a SQL Server y Analysis Services), y multitud de caídas sin motivo aparente del recurso de FileServer, al final, el problema fue el Data Collector. Alucina. Hace poco he estado pegándome con unos problemas de rendimiento, que aunque inicialmente se pensaba que estarían localizados en SQL Server, finalmente se encontró buena parte en la Virtualización, en particular, sobre el rendimiento de la red Máquinas Virtuales de VMWare con dispositivos de red ocultos en el Device Manager. Algo bastante absurdo, ya que si bien es conocido desde hace tiempos inmemoriables la existencia de problemas con los dispositivos de red ocultos (al menos, desde Windows 2000), otro tema es el rendimiento de pena que se produce con VMWare. Continuando con la serie de artículos relacionados con el tema de Virtualización y VDI, en esta ocasión vamos a mostrar la instalación paso a paso del Cliente de App-V 4.6 x64 sobre Windows Server 2008 R2 en un entorno de laboratorio, una arquitectura típica de virtualización de aplicaciones en entornos VDI con tecnología Microsoft. Continuando con la serie de artículos de Remote Desktop Services (Terminal Services, para los más melancólicos), en esta ocasión vamos a tratar la instalación y configuración básica de Remote Desktop Session Host en Windows Server 2008 R2, es decir, de un servidor Terminal de los de toda la vida, incluyendo la configuración del Licenciamiento del servidor RD Session Host con licencias de una subscripción MSDN. Tras tratar recientemente la instalación y configuración básica de MED-V Server v1.0 SP1, ahora llega el momento de tratar el Cliente MED-V, formado por Microsoft Virtual PC 2007 SP1 (junto con un par de HotFixes) y por el propio Cliente MED-V. Un detalle interesante, es que la consola de gestión de MED-V (MED-V Management Console) es parte del Cliente MED-V (que sólo se puede montar sobre un equipo de escritorio), por lo que en el presente artículo, trataremos la instalación completa paso a paso de un Cliente MED-V con consola de gestión, y posteriormente mostraremos por encima dicha consola. Continuando con nuestra serie de artículos de virtualización, y en particular, retomando el tema de MED-V (Microsoft Enterprise Desktop Virtualization), en esta ocasión vamos a presentar la instalación y configuración básica de MED-V Server 1.0 SP1 paso a paso, incluyendo la instalación y configuración inicial de los prerrequisitos de MED-V (.Net Framework, IIS, BITS, creación del Virtual Directory, añdir MIME Types, habilitar Directory Browsing, instalación de Microsoft SQL Server Management Objects para SQL Server 2008 y de Microsoft SQL Server System CLR Types para SQL Server 2008, etc). Estos días he estado preparando un entorno de Laboratorio de Microsoft Dynamics AX 2009, y como parte de estas tareas, he realizado algunas pruebas básicas de Alta Disponibilidad sobre dicho entorno, focalizadas en SQL Server, los Application Files de Axapta, los servicios AOS, y el Cliente de AX. En esta ocasión, quería aprovechar para presentar las pruebas de Alta Disponibilidad realizadas sobre Microsoft Dynamics AX, así como los resultados obtenidos, de interés para quienes tengan que empezar a pegarse con un entorno de estas características. Muchos de nosotros disponemos de una Subscripción MSDN, ya sea por ser empleados de un Microsoft Partner, por haber adquirido una Subscripción MSDN por nuestros propios medios, o bien por haberla obtenido a través de la empresa para la que trabajamos (aunque no seamos Microsoft Partner). En cualquier de estos casos, podemos activar nuestro propio servidor de licencias Remote Desktop Licensing utilizando nuestra Subscripción MSDN, siempre y cuando sea para su utilización bajo los términos de licencia de MSDN. Este artículo describe la forma correcta de configurar la Autenticación Integrada y la Delegación de Kerberos en una instalación de Alta Disponibilidad (Cluster NLB) de Microsoft Dynamics CRM 4.0 sobre Windows Server 2008 R2 (IIS7.5) utilizando una Granja independiente de Reporting Services 2008 R2. Esta compleja configuración de Kerberos, es la causante de errores conocidos como Error. An error has occurred, o también del error Reporting Error. The report cannot be displayed, y también del error Not Authorized. HTTP Error 401. The requested resource requires user authentication, todos ellos relacionados con CRM, IIS, Reporting Services y Kerberos. Recientemente me encontré con un aparente problema de rendimiento en un Failover Cluster de SQL Server 2008 R2 sobre Windows Server 2008 R2. En principio, todo estaba funcionando perfectamente, pero empezamos a observar que la creación de una nueva base de datos vacía tardaba unos 10 minutos, algo completamente anormal, en una máquina física de última generación recién instalada, sin carga de trabajo, con 48 Cores y 72 GB de RAM, y con una velocidad de copia de ficheros de 130MB/s (es decir, casi 8GB por minuto o casi 500GB por hora). ¿Cuál es el problema? Tras instalar Microsoft Dynamics CRM 4.0 RTM, muy probablemente deseemos actualizar a alguno de los últimos Update Rollup de CRM, para así incorporar las últimas actualizaciones liberadas de Microsoft CRM. Sin embargo, podemos encontrarnos que tras instalar un Update Rollup, aún finalizando con éxito dicha instalación, nos muestre un mensaje indicando que debemos realizar ciertas modificaciones manuales en el fichero Web.Config de la Aplicación Web de Microsoft CRM 4.0. A continuación, más detalles. Este artículo pretende ilustrar la instalación y configuración de un Cluster NLB dedicado para Reporting Services 2008 R2 en modo Nativo. Para ello se parte de dos máquinas con Windows Server 2008 R2, sobre las que se desea instalar Reporting Services 2008 R2 y el Network Load Balancing, y adicionalmente se dispone también de otra máquina que actuará como servidor de base de datos, ejecutando Windows Server 2008 R2 y SQL Server 2008 R2, con el objetivo de almacenar las bases de datos de Reporting Services. Ya hace tiempo que hablamos en bastante detalle del Network Load Balancing (NLB), en aquel momento, en lo relacionado con Windows Server 2003. En esta ocasión, retomamos el tema para describir el procedimiento de instalación y configuración del NLB en Windows Server 2008 R2, en particular, de un Cluster NLB realizado con Máquinas Virtuales de Hyper-V, y en consecuencia, configurado en Modo de Operación Multicast, con una única tarjeta de red. Los conceptos y las herramientas en esta última versión de Windows Server 2008 R2, soy muy parecidos. Por defecto, cuando SQL Server necesita espacio en disco, además de solicitárselo al Sistema Operativo, rellena todo el espacio solicitado con ceros, una operación de escritura costosa, que penaliza varias operaciones típicas en SQL Server como la creación de nuevas bases de datos, la adición y crecimiento ficheros de base de datos, y las operaciones de RESTORE. ¿Es posible evitar la escritura de ceros y optimizar la creación de bases de datos, RESTORE, y la adición y crecimiento de ficheros? Si, la respuesta es Instant File Initialization. Ayer, durante la creación de un nuevo entorno de Laboratorio para RDS y App-V, me encontré de nuevo con el error Error 25109 The installation program could not create the configuration data store. Este error, puede ser motivado por diferentes orígenes, sin embargo, en esta ocasión me costó un poco más detectarlo y corregirlo, y sobre todo, me llamó mucho la atención cuando encontré la raíz del problema (no me lo esperaba, en absoluto). A continuación el detalle. Siguiendo con la serie de artículos relacionados con Microsoft Dynamics CRM 4.0, en esta ocasión vamos a tratar una instalación básica de Microsoft Dynamics CRM 4.0 sobre Windows Server 2003, paso a paso, realizada sobre un entorno de laboratorio, incluyendo las pantallas capturadas durante la instalación, así como describiendo los diferentes pasos realizados. Microsoft Dynamics CRM 4.0 es la herramienta CRM de Microsoft, parte de la familia de productos Microsoft Business Solutions, un producto presente cada día en más empresas, como complemento ideal a otros productos de Microsoft con funcionalidades CRM más básicas como Microsoft Dynamics AX 2009 (Axapta) y Microsoft Dynamics NAV 2009. En el presente artículo se realizar un introducción de Microsoft Dynamics CRM 4.0, desde el punto de vista IT, presentando la arquitectura de producto y algunos consejos básicos de monitorización y mantenimiento. Una de las tareas típicas en la implantación de Microsoft Dynamics CRM 4.0, es la instalación de Cliente CRM para Microsoft Outlook. Si bien es cierto, que a priori se puede acceder de igual forma a Microsoft Dynamics CRM 4.0, tanto con Internet Explorer como con el Cliente CRM para Outlook, este último ofrece ciertas ventajas y comodidades frente al simple acceso desde un Explorador Web. Un error típico al instalar Microsoft Dynamics CRM 4.0 (sobre Windows Server 2008 R2 o sobre otra edición de Windows Server), es el error Service cisvc was not found on computer SERVERNAME The specified service does not exist as an installed service, referente a la existencia o no del servicio de Windows Indexing Service (requisito para poder instalar Microsoft Dynamics CRM 4.0). En el presente artículo se muestra el detalle de dicho error y la forma de solucionarlo en Windows Server 2008 R2 y en Windows Server 2003. Una de las comodidades de utilizar Microsoft iSCSI Software Target con Windows Storage Server 2008 para presentar discos compartidos (LUN) en Clusters sobre nuestros entornos de laboratorio (y también para discos que no sean compartidos), es la posibilidad de extender en caliente dichos discos (LUN) desde el Microsoft iSCSI Software Target, y seguidamente extender la partición para aprovechar el nuevo espacio asignado (inicialmente libre) en nuestro disco (LUN), y así poder empezar a utilizarlo, en vivo y en directo. Algo que tendremos que afrontar en cualquier implantación de App-V, es la instalación del App-V Sequencer, para posteriormente poder realizar el Secuenciamiento de Aplicaciones, es decir, la creación de Aplicaciones Virtuales para App-V. En el presente artículo, se presenta a modo de ejemplo la instalación del App-V Sequencer 4.6 x64 sobre Windows Server 2008 R2 así como se muestra la secuenciación de una aplicación. Recientemente he tenido que eliminar manualmente un Controlador de Dominio de un entorno de laboratorio, correspondiente a un DC que había fallecido un tiempo atrás. Este pequeño artículo trata la forma de eliminar manualmente de Directorio Activo y de DNS los restos de este Controlador de Dominio, de modo que también se eliminen los correspondientes errores del Visor de Sucesos, dejando el entorno en perfecto estado. Una de las tareas típicas a realizar en una instalación de Microsoft Application Virtualization (App-V) es la instalación del servicio de gestión, conocido como el App-V Management Server. En este pequeño artículo, se presenta la instalación del App-V Management Server 4.5 SP1 sobre Windows Server 2008 R2, realizada sobre un entorno de laboratorio, incluyendo los diferentes pasos y pantallas capturadas de la instalación. Una incidencia relativamente frecuente, es encontrarse una máquina SQL Server con la CPU al 100%, siendo el proceso de SQL Server el que se está llevando prácticamente toda la CPU (esto es lo que se llama un pequeño Problema de Rendimiento ;-). Si la instancia de SQL Server contiene una gran cantidad de bases de datos y de conexiones de usuario, nos resultará de interés poder conocer fácilmente qué procesos (SPID) de SQL Server se están llevando la CPU. En este pequeño artículo, tratamos esta situación e incluimos un pequeño trozo de código de ejemplo para realizar este tipo de diagnóstico. En ocasiones necesitamos ejecutar un mismo Script en varias bases de datos de SQL Server y posteriormente revisar su salida, algo que podemos hacer manualmente, por ejemplo utilizando SQL Server Management Studio. Sin embargo, cuando hablamos de varios cientos de bases de datos, la pereza predomina. ¿Cómo podemos hacer para ejecutar fácilmente el mismo Script en múltiples bases de datos? App-V permite transformar aplicaciones en servicios virtuales (Aplicaciones Virtuales) gestionados de forma centralizada, lo que facilita el despliegue rápido de aplicaciones bajo demanda a los equipos de escritorio y/o a los equipos Terminal Server, de forma dinámica, minimizando reinicios, minimizando los problemas de compatibilidad entre aplicaciones, facilitando la actualización de las aplicaciones, etc. En este artículo se introduce y describe Microsoft Application Virtualization (App-V) como producto, qué nos ofrece, cuáles son sus componentes, etc. Recientemente, al intentar realizar una instalación del App-V 4.5 SP1 Management Server sobre un entorno de pruebas basado en Windows Server 2008 R2 (arquitectura x64, en consecuencia), me encontré con el error 25120: El programa de instalación no pudo crear el directorio virtual de IIS necesario (en inglés: The installation program was unable to create the required IIS virtual directory). El error en sí, no deja muy claro que hacer para solucionarlo, pero Googleando un poco por los Interneses, encontré la solución. Microsoft Enterprise Desktop Virtualization (MED-V), uno de los productos de Microsoft Desktop Optimization Pack (MDOP), permite la creación, almacenamiento, despliegue, y administración de imágenes corporativas de Virtual PC 2007 (imágenes virtuales), así como incluye la capacidad para crear y ejecutar Aplicaciones Virtuales (Virtual Applications), de modo similar a como ocurre en Windows Virtual PC, pero en este caso utilizando la tecnología de Microsoft Virtual PC 2007 junto a una administración centralizada. Windows Virtual PC y Windows XP Mode son dos nuevas características de Windows 7 que acercan la Virtualización del Escritorio (Desktop Virtualization). Gracias a ambos, es posible ejecutar Máquinas Virtuales en Windows 7 con acceso a los dispositivos USB, es posible tener disponible una Máquina Virtual con Windows XP Professional SP3 x86 pre-activada y pre-configurada, y es posible ejecutar Aplicaciones Virtuales (Virtual Applications), más en concreto, RAIL: Remote Applications Installed Locally, es decir, aplicaciones instaladas sobre Máquinas Virtuales que se ejecutan en el propio escritorio del Host. Las Regular Expressions (Expresiones Regulares), cuyo diminutivo conocido suele ser Regex, son una simple cadena de texto que permite actuar como un patrón de búsqueda. Su utilidad es muy amplia, en primer lugar, por su gran potencia para poder describir patrones de búsqueda muy complejos, y en segundo lugar, por su amplia implementación tanto en diferentes entornos de desarrollo (.Net, Java, PHP, Perl, etc.) como en diferentes herramientas como puedan ser editores de texto avanzados. Una configuración habitual en toda implantación de MOSS 2007, es la importación de perfiles de usuario. Aunque existen varias alternativas, lo más normal es importar la información de los perfiles de usuario desde Directorio Activo, ya sea desde uno o múltiples Dominios. Sin embargo, por defecto se importará la información de todas las cuentas de usuario, cuando en muchas ocasiones tendremos cuentas en Directorio Activo en estado Deshabilitado que no deseamos importar. ¿Qué hacemos? En este tercer y último artículo de la serie relacionada con la instalación y configuración de un Cluster de Hyper-V R2 con Windows Server 2008 R2, vamos a ver entre otras cosas cómo crear una nueva Máquina Virtual en Cluster desde Hyper-V Manager y cómo configurar dicha Máquina Virtual en Alta Disponibilidad, y cómo configurar las redes para utilizar por Live Migration. Siguiendo con esta serie de artículos relacionados con la instalación y configuración de un Cluster de Hyper-V R2 con Windows Server 2008 R2, en esta segunda entrega, y dando continuación a la entrega anterior, vamos a ver entre otras cosas, cómo añadir un disco compartido al Cluster para utilizarlo como Quorum, cómo configurar el Quorum del Cluster, cómo añadir un disco de datos al Cluster para el almacenamiento de Máquinas Virtuales, cómo habilitar CSV en el Cluster, y cómo configurar un disco como CSV. El presente artículo, es el primero de una serie que describen paso a paso la instalación y configuración de un Cluster de Hyper-V R2 con Windows Server 2008 R2, incluyendo la configuración de los discos compartidos, de Cluster Shared Volume (CSV), de Live Migration, detalles específicos sobre la configuración de la Red, etc. En esta primera entrega, se detalla es escenario del laboratorio en el que se ha basado el artículo, la configuración de Red, la instalación del Failover Cluster en Windows Server 2008 R2, la Validación del Cluster, y la creación del Cluster. Hace poco me encontré un problema con las búsquedas en una Granja de MOSS 2007 SP2, en la cual, las búsquedas sólo estaban funcionando correctamente en los Sitios que tenían configurado un Centro de Búsqueda. Sin embargo, en los Sitios que no tenían un Centro de Búsqueda, al realizar una búsqueda, no aparecían resultados (aún cuando existían coincidencias). La indexación se ejecutaba correctamente (tanto la completa como la incremental), pero sin Centro de Búsqueda (a través de This Site o This List), no había forma de hacer funcionar las Búsquedas. ¿Qué hacemos? El particionamiento de tablas e índices es una importante técnica de base de datos, existente en SQL Server desde hace varios años. En el presente artículo, se explica a un nivel básico la forma de crear tablas e índices particionados (utilizando CREATE PARTITION FUNCTION y CREATE PARTITION SCHEME), cómo mover particiones de forma rápida entre tablas (conocido como Archivado, ejecutando ALTER TABLE SWITCH PARTITION), cómo añadir y eliminar particiones a una tabla o índice existente (SPLIT y MERGE), y otros detalles de interés, con ejemplos y vídeo demo incluido. Master Data Services (MDS) es una característica de SQL Server 2008 R2 que se instala por separado, sólo está incluido en x64, no se puede montar sobre Windows Server 2003, y requiere del Rol de IIS. El presente artículo detalla el procedimiento de instalación de Master Data Services (MDS) en SQL Server 2008 R2, paso a paso, incluyendo pantallas capturadas, requisitos de instalación, y tareas de post-instalación. Recientemente me he estado pegando con un error de ejecución de Jobs de Content Deployment en MOSS 2007 SP2. El Job en cuestión no finalizaba (exportaba pero no llegaba a importar, es decir, se quedaba en la transferencia). El mensaje de error, por desgracia algo genérico: Content deployment job [jobname] failed. The remote upload Web request failed. Curioseando por los Logs de MOSS, tanto del servidor origen como del servidor destino, encontré otro error que me ayudó en la solución: Content Deployment error: Maximum request length exceeded. Tras la creación de un Failover Cluster con Hyper-V R2, en caso de estar trabajando con Virtual Machine Manager 2008 R2, el siguiente paso sería agregar el Cluster a Virtual Machine Manager, para de este modo, poder gestionarlo desde dicha herramienta de gestión, ya sea para crear nueva Máquinas Virtuales en modo de Alta Disponibilidad (HAVMs), migrar Máquinas Virtuales de un Host a otro dentro del Cluster (esto es, moverlas con Live Migration), etc. Quizás la incorporación estrella en Windows Server 2008 R2 e Hyper-V, es el Cluster Shared Volume (CSV), uno de los pilares fundamentas en Alta Disponibilidad y Recuperación Rápida ante Desastres en entornos de Virtualización, es decir: Live Migration. De este modo, es posible mover una máquina virtual en ejecución sobre un Host Hyper-V a otro Host Hyper-V sin percepción de pérdida de servicio, y simplificar enormemente la gestión del Almacenamiento compartido, gracias a Hyper-V y Failover Clustering. Windows Server Failover Clustering (WSFC) de Windows Server 2008 ya introdujo bastantes novedades y mejoras al ya ancestral Microsoft Cluster (MSCS). Rizando el rizo, Microsoft ha mejorado un poquitín más este producto en Windows Server 2008 R2, incluyendo algunas importantes mejoras como Cluster Shared Volume (CSV). Este artículo presenta las novedades de Failover Cluster en Windows Server 2008 R2, haciéndonos una idea de la evolución del producto en esta versión. Windows Server Failover Clustering (WSFC) de Windows Server 2008, anteriormente conocido como Microsoft Cluster (MSCS), ha incorporado una cantidad notable de mejoras que ha repercutido en un producto más fácil y rápido de configurar, y además, susceptible de incurrir en menores interrupciones de servicio (es decir, más Alta Disponibilidad). En este artículo se presentan las novedades de Failover Cluster en Windows Server 2008, permitiendo hacernos una idea de la evolución del producto en esta versión. Una tarea típica a realizar en casi cualquier proyecto de Virtualización es la conversión de servidores físicos en virtuales, lo que se denomina comúnmente Physical To Virtual (P2V). A través del presente de artículo, se describe paso a paso el proceso de conversión de físico a virtual (P2V) con Virtual Machine Manager 2008 R2 a través de un ejemplo, incluyendo las pantallas capturadas así como algunos consejos y consideraciones de interés, para conseguir una satisfactoria migración de servidores físicos a virtuales con Hyper-V y Virtual Machine Manager 2008 R2. En muchos entornos, nos encontraremos diferentes Dominios de Directorio Activo separados por algún Firewall que requieran comunicarse entre sí (ej: por la existencia de relaciones de confianza), del mismo modo que podemos encontrarnos servidores MOSS que requieran comunicaciones con Controladores de Dominio existentes al otro lado de un Firewall. En ambos casos, es necesario realizar la apertura de los correspondientes puertos en el Firewall de turno, pero ¿Qué puertos son necesarios abrir para la comunicación entre Controladores de Dominio de Directorio Activo y MOSS? Recientemente, me he encontrado con la necesidad de crear un nuevo SubSitio basado en un SubSitio existente, para lo cual, quizás lo más apropiado es la creación de una Plantilla de Sitio desde el SubSitio deseado, aunque también podría ser una alternativa realizar un STSADM EXPORT del SubSitio original y un STSADM IMPORT sobre el SubSitio destino. En este artículo, quería aprovechar para comentar alguna diferencia entre ambas alternativas (Plantillas de Sitios vs STSADM EXPORT e IMPORT), así como algunos problemillas encontrados. Una funcionalidad bastante atractiva desde SQL Server 2005 es el Database Mirroring, mediante el cual, podemos tener una copia espejo de una base de datos en una instancia separada (por ejemplo, en otro CPD separado geográficamente), pudiendo configurarlo para que funciona de forma Síncrona (modo de Alta Disponibilidad) o Asíncrona, así como garantizar que se intercambien los roles (Principal y Espejo) automáticamente en caso de pérdida del servicio (ej: pérdida de un CPD, Síndrome del Cerebro Partido - Split Brain), gracias a una tercera instancia que actúa como árbitro (Witness). Pero ¿qué ocurre si se pierden las comunicaciones entre CPDs? Ayer Martes, aproveché para pasarme por el Kinépolis (Madrid), en esta ocasión para asistir al Virtualization Summit 2010, un evento de asistencia gratuita organizado por HP, Microsoft e Intel, a través del cual presentan la actualidad y tendencia en el mercado de la Virtualización, desde el punto de vista de sus productos y servicios. A continuación, aprovecho para incluir un pequeño resumen de algunas de las cosas vistas en el Virtualization Summit 2010 de Madrid, para quienes deseen recordarlo o quienes quisieron y no pudieron asistir. En unas recientes pruebas de Laboratorio, tuve que recuperar una versión anterior de los Controladores de Dominio, tras lo cual, tuve que sacar y meter todas las máquinas miembros del dominio (con sus excepciones - ej: una CA no se la puede sacar y meter en dominio, al menos, Windows Server 2003 ;-). Tras todo esto, quedó recuperado el entorno, sin embargo, a establecer una conexión remota con VMM Administrator Console se producía el siguiente error al conectar a Virtual Machine Manager 2008 R2: You cannot access Virtual Machine Manage server. Contact the Virtual Machine Manager administrator to verify that your account is a member of a valid user role and then try the operation again (ID 1604). ¿Qué hacemos? Este artículo pretende aclarar las típicas dudas que pueden producirse al intentar configurar VLAN Tagging (802.1Q) en Hyper-V, es decir, conseguir configurar el campo VLAN ID en nuestras Máquinas Virtuales para gestionar fácilmente la asignación a VLANes de las Máquinas Virtuales. Para ello se profundiza un poco en los principales requisitios necesarios para hacer funcionar VLAN Tagging (tarjetas de red, drivers y switches), y se muestra como ejemplo la configuración de red en un Switch SMC 8024L2 para comunicar dos Host Hyper-V dotados de tarjetas de red Intel Gigabit CT Desktop Adapter, utilizando Switch Trunking, y sin Trunks también. El presente artículo detalla y describe la instalación y configuración de VMM Self-Service Portal, un componente de System Center Virtual Machine Manager 2008 R2, que en formato de Aplicación Web, facilita la delegación de permisos de seguridad de Virtual Machine Manager 2008, vital para conseguir delegar permisos a usuarios a nivel de Máquina Virtual (ej: especificar qué usuarios puede iniciar qué Máquina Virtual, e idem con otras tareas como pausar, detener, Snapshots, Shutdown, etc). Una tarea que nos puede dar algo de guerra al trabajar con Hyper-V es la administración y configuración de permisos. Si somos Administradores del HOST, no tendremos problema en hacer cualquier tarea administrativa relacionada con Hyper-V. Las cosas cambian cuando deseamos afinar esta configuración, y deseamos asignar permisos más específicos y restringidos en Hyper-V (ya sea a nivel de Host o a nivel de Máquina Virtual), para lo que necesitaremos la ayuda de AzMan (ojo, que AzMan nos es un superhéroe de comic a lo Cálico Electrónico, no, es el Authorization Manager de Windows Server 2008 ;-). Claro, que la cosa cambia con Virtual Machine Manager 2008. Más detalles a continuación. Este artículo detalla paso a paso el procedimientos de instalación de Reporting Services 2008 sobre una Granja de MOSS 2007, esto es, en modo de integración con SharePoint (SharePoint integration mode), incluyendo las correspondientes pantallas capturadas, y explicando las acciones a realizar en los diferentes pasos. También se incluye la instalación y configuración de Reporting Services 2008 add-in for SharePoint y de Report Builder 2.0, como punto final, para convertir MOSS 2007 en un Portal de Business Intelligence (tiembla, Business Objects, jeje ;-). Un problema que nos podemos encontrar con MOSS 2007, es que la indexación (Crawling) de un origen de contenidos (o de varios) se quede en estado pausando (Pausing), de forma prolongada durante días y días. Esta situación puede impactar en los resultados de las búsquedas que aprecian los usuarios (ej: que al ejecutar búsquedas por ciertas palabras clave, no aparezcan resultados, que deberían aparecer). La gracia del asunto, es que no aparece ninguna opción para detener las búsquedas. En este caso, ¿Qué hacemos para solucionarlo? ¿Reiniciamos todos los servidores de MOSS? Si hay un mensaje de error en MOSS que joroba, es el mensaje de An unexpected error has occurred, que viene a traducirse como Algo le ha pasado a alguien. Se trata del típico mensaje de error genérico, que si bien avisa de que se ha producido algún tipo de error en alguna parte, ni indica qué error ni indica dónde se ha producido. Esto hace, que nos podamos encontrar el mensaje An unexpected error has occurred en un montón de situaciones de muy diversa naturaleza. Y entonces surge la duda ¿Cómo depurar el mensaje de MOSS An unexpected error has occurred? En ocasiones, puede ser de utilidad poder añadir o adjuntar una Máquina Virtual Hyper-V desde su fichero de configuración XML y ficheros VHD de Disco Duro Virtual. Sin embargo, esta tarea no es posible directamente desde el Hyper-V Manager, requiriendo realizar de forma previa un Export de la Máquina Virtual deseada, y así posteriormente poder realizar un Import de dicha Máquina Virtual. Sin embargo, si queremos adjuntar a Hyper-V una Máquina Virtual existente de un disco externo, o si hemos reinstalado el Sistema Operativo queremos volver a añadir las Máquinas Virtuales existentes (teniendo sólo el XML de configuración y los VHD), ¿Qué hacemos? VMAttach ;-) Una de las principales funcionalidades de Business Intelligence incluidas en MOSS 2007 son las Listas de KPI, un tipo especial de lista en MOSS, que permite la creación de elementos KPI, es decir, la creación de indicadores de negocio. El atractivo de esta funcionalidad (las Listas KPI de MOSS), es que puede alimentarse desde diferentes orígenes de datos (Analysis Services, Excel Services, listas de SharePoint, o información introducida manualmente) y su posibilidad de explotación a través de las Web Parts de Key Performance Indicators y de KPI Details, así como en los Dashboards de MOSS. ¿Quieres conocer mejor las KPI de MOSS 2007? Una tarea que nos puede hacer falta, especialmente en Proyectos de Business Intelligence y Data Warehousing con MOSS y Analysis Services, es la configuración de Autenticación y Delegación de Kerberos, de tal modo que el servidor MOSS sea capaz de obtener las credenciales de los usuarios, y realizar las peticiones a Analysis Services con las credenciales de los mismos (Double Hop), algo que podemos necesitar en situaciones diversas, como para hacer funcionar Indicadores KPI de MOSS desde KPIs definidas en Analysis Services. Así, evitaremos el error The connection either timed out or was lost y el error Autentication failed. Durante una migración de Máquinas Virtuales de Virtual Server 2005 a Hyper-V, existe el problema de migrar Máquinas Virtuales en Clusters de SQL Server 2005 o Exchange Server 2003 (por ejemplo), que utilizan Discos Virtuales VHD compartidos de Virtual Server 2005 (lo cual, no tiene equivalente en Hyper-V). Una solución alternativa, al menos para entornos de laboratorio, es utilizar Windows Storage Server 2008 y Microsoft iSCSI Target para almacenar y presentar los Discos Compartidos de los Clusters. Una de las primeras tareas a realizar después de instalar Virtual Machine Manager 2008 R2, es agregar algún Host Hyper-V a la infraestructura de virtualización de Virtual Machine Manager, una tarea bastante sencilla. A través de este artículo, se muestra el procedimiento a seguir para agregar un Host Hyper-V existente (con sus Máquinas Virtuales funcionando) a Virtual Machine Manager 2008 R2, de tal modo que pueda empezar a ser gestionado desde la VMM Administrator Console. Finalmente, se muestran las propiedades de un Host Hyper-V y de una Máquina Virtual, tal cómo se ven desde la VMM Administrator Console. Hace pocos días, estuve ayudando a unos compañeros en la instalación de un Array de ISA Server 2006, que no se dejaba, y que mostraba el siguiente error: ISA Server cannot connect to the Configuration Storage Server. Dicho error, quedaba también registrado en el Visor de Sucesos con Event ID 21238 y Event Source Microsoft ISA Server Control. El problema, es que uno de los ISA Server 2006 no sincronizaba con el CSS. Aunque Googleando no tuvimos suerte, finalmente, conseguimos corregir dicho problema. A continuación, los detalles. Este artículo presenta un procedimiento NO SOPORTADO para registrar o recuperar una Máquina Virtual de Hyper-V en Windows Server 2008 R2, una tarea, que inicialmente no sería posible si no disponemos de un Export de la Máquina Virtual o algún otro sistema de Copia de Seguridad (Backup). Por desgracia, en caso de desastre (ej: pérdida total o parcial del sistema y/o datos de un Host Hyper-V), puede que tengamos que recurrir a este tipo de triquiñuelas para salvar los trastos. El presente artículo se basa en un caso real, producido en un entorno de laboratorio. System Center Virtual Machine Manager 2008 R2 es una herramienta para la administración centralizada de Servidores de Virtualización Hyper-V (equivalente al Virtual Center de VMWare), que incluye soporte para máquinas Virtual Server 2005 y VMWare ESX (gracias a los Web Services de VMWare Virtual Center). A través de este artículo, se ofrece una introducción a Virtual Machine Manager 2008 R2, describiendo sus principales conceptos y componentes (VMM Server, VMM Administrator Console, VMM Library Server, VMM Self-Service Portal, VMM Database, etc.). A través de este artículo, se detalla el procedimiento de instalación paso a paso de una instalación básica de Virtual Machine Manager 2008 R2 sobre Windows Server 2008 R2, a modo de manual de instalación de VMM 2008 R2, e incluyendo las correspondientes pantallas capturadas y comentarios sobre las diferentes opciones de configuración propias de dicho procedimiento de instalación de VMM 2008 R2, así como pre-requisitos para la instalación, cuentas de usuario necesarias, y otros detalles de interés. ¿Quieres ver como instalar Virtual Machine Manager? Sigue leyendo. Una tarea típica a realizar al construir una infraestructura Hyper-V, es instalar la herramienta administrativa Hyper-V Manager en equipos de escritorio Windows Vista, para de este modo poder administrar de forma remota los servidores Hyper-V y sus Máquinas Virtuales. Para ello, la recomendación es instalar las Remote Server Administration Tools (RSAT), habilitar el grupo de programas Herramientas Administrativas (Administrative Tools), e instalar la actualización KB952627. Sin embargo, ¿Qué hacer si se produce el error The update does not apply to your system al instalar la KB952627? MOSS 2007 facilita el control y la gestión de los documentos y contenidos de SharePoint gracias a Information Rights Management (IRM), integrándose con Windows RMS (Rights Management Services). De este modo, es posible controlar, por ejemplo, si deseamos que un documento se pueda imprimir, incluso aunque el documento se descargue a una ubicación diferente y externa a MOSS. Adicionalmente, es posible configurar en MOSS políticas de gestión de la información (Information Management Policy Settings). Este artículo describe de forma básica la instalación de Windows Rights Management Services (Windows RMS) sobre un servidor Windows Server 2003, así como las posteriores tareas de configuración elementales para la construcción de una infraestructura básica de Windows RMS sobre Windows Server 2003, incluyendo la instalación de los Clientes Windows RMS. En este artículo describimos las primeras configuraciones básicas para empezar a funcionar con Microsoft iSCSI Software Target, como es el caso de la creación de los Targets y Discos Virtuales (LUNs), y la asignación de Discos Virtuales (LUNs) a los clientes (iSCSI initiators), aprovechando para explicar ciertas consideraciones de diseño básicas en la configuración de Targets y Discos Virtuales con Microsoft iSCSI Target, cara a organizar una infraestructura iSCSI basada en Windows Storage Server 2008. ¿Cómo configurar Microsoft iSCSI Software Target? Sigue leyendo. Los Snapshots son una funcionalidad aparentemente muy agradecida y sencilla para la administración y mantenimiento de Máquinas Virtuales Hyper-V. Sin embargo, al igual que ocurre en otros entornos de virtualización (ej: VMWare, Xen, etc) es muy recomendable conocer su funcionamiento para decidir si utilizar los Snapshots y como hacerlo. Este artículo describe los Snapshots en Hyper-V, ciertos detalles de su funcionamiento, casos de uso, y recomendaciones. Este Artículo describe la configuración del Hypervisor de Windows Server 2008, la principal tecnología de virtualización de Microsoft (Hyper-V), sobre Windows Server 2008 x64 SP2. Se incluyen los principales Requisitos de Hyper-V, algunas recomendaciones y buenas prácticas con Hyper-V, se detalla el procedimientos de intalación de Hyper-V (como agregar el Role Hyper-V en Windows Server 2008), se comenta la configuración básica de Hyper-V, la creación y configuración de Máquinas Virtuales Hyper-V, etc. Un detalle de Hyper-V que causa algo de confusión son las rutas de los Ficheros de Configuración XML de las Máquinas Virtuales ¿Existe diferencia entre utilizar la ruta por defecto para la creación de Máquinas Virtuales o utilizar una ruta alternativa? ¿Es posible mover o reubicar los ficheros de configuración de las Máquinas Virtuales de forma sencilla? ¿Cómo organizar la estructura de ficheros y carpetas en una instalación de Hyper-V? A continuación, se pueden leer algunas ideas al respecto. En esta ocasión, quería aprovechar para colgar un breve listado de tiendas de informática para particulares en la que poder comprar Hardware, desde componente habituales a buen precio como cajas, fuentes de alimentación, procesadores, memoria, discos duros, ordenadores portátiles, ultraportátiles, etc., hasta productos Hardware un poco más exquisito y difícil de encontrar, como puedan ser tarjeta de red gigabit de doble puerto, discos duros sólidos, conmutadores de red (switches) gigabit gestionables, etc., más propio de entornos empresariales. Los Discos Virtuales (Virtual Disks o Virtual Hard Disks) son una de las piezas claves de toda Máquina Virtual, tanto en Hyper-V, como en otros sistemas de virtualización (VMWare, Xen, etc.). A través de este Artículo se describen los diferentes tipos de Discos Virtuales (dinámicos, de tamaño fijo, Pass-through, y diferenciales), así como se describen las Controladoras Virtuales, y las operaciones que pueden realizarse sobre los Discos Virtuales (Compact, Convert, Expand, Merge, Reconnect). Se incluye un ejemplo práctico paso a paso de cómo crear un Disco Virtual de tamaño fijo, y otro de cómo extender un Disco Virtual existente (aumentar tamaño) con Hyper-V. Una de las principales y más importantes tareas a realizar en una instalación de Hyper-V es configurar las Redes Virtuales (Virtual Networks) con la utilidad Virtual Network Manager de la herramienta administrativa Hyper-V Manager, incluyendo la configuración de etiquetas VLAN o VLAN ID (VLAN Tagging, es decir, el protocolo IEEE 802.1Q), configuración de Trunking en el Switch de red, la configuración de redes internas, privadas y externas, etc. Una configuración sencilla, que se vuelve algo más confusa y complicada al intentar hacer uso de VLAN Tagging. Recientemente hablamos de cómo mover Máquinas Virtuales Hyper-V entre Host utilizando las operaciones de Export e Import de Hyper-V. A través del presente Artículo, mostramos una forma alternativa de mover o copiar Máquinas Virtuales Hyper-V, en este caso sin utilizar Export ni Import, es decir, utilizando simplemente los Discos Virtuales, y el fichero de configuración XML de la Máquina Virtual, proceso que nos puede servir en algún escenario de recuperación. Un práctica habitual al trabajar con Máquinas Virtuales, es la necesidad de copiar o mover una Máquina Virtual desde un servidor físico (Host) a otro (ej: después de redimensionar un servidor físico existente - ampliar capacidad de procesamiento, disco y/o memoria - , previo a decomisar un servidor físico antiguo, etc) o dentro de un mismo servidor físico (ej: reubicar una Máquina Virtual en lo relacionado con el almacenamiento local del servidor físico). ¿Cómo se puede copiar o mover Máquinas Virtuales de Hyper-V a un Host diferente? ¿Y dentro del mismo Host? ¿Es suficiente con copiar los Discos Virtuales? Una de las tareas típicas a realizar en la configuración de una Placa Base, es la configuración de la Memoria en la BIOS de la Placa, ya que en ocasiones al configurar todo en AUTO no permite aprovechar al máximo las características de nuestra memoria. Lo primero antes de realizar este tipo de configuraciones, es identificar la memoria que montamos (muy recomendable que todos los módulos sean iguales) así como sus parámetros de configuración (consultar al fabricante). También será necesario saber manejarse en la BIOS de la Placa Base. A continuación se explica la configuración de la memoria DDR2 800 Kingstone Hyper-X en la Placa Base Asus M2N-SLI Deluxe. Tras actualizar la BIOS de la Asus M2N-SLI Deluxe a la última versión disponible (la versión 1701), quedaba pendiente un tarea muy importante: sustituir el procesador original AMD Athlon 64 X2 5200+ (Dual-Core de 64 bits) por el AMD Phenom Quad Core 9650, y subirnos de este modo a la burra de los procesadores de 64 bits y Cuatro Núcleos, para aprovechar al máximo las posibilidades de Virtualización de AMD y el Hypervisor de Microsoft (Hyper-V) de Windows Server 2008 x64 (como dios manda ;-). Recientemente he actualizado la BIOS de las Placas Base Asus M2N-SLI Deluxe que tengo montadas en mis servidores de virtualización, por un lado como intento de correción de un problema que estaba teniendo (que finalmente, no tenía que ver con la Placa Base), y por otro lado, para poder sustituir los Procesadores AMD Athlon 64 X2 5200+ (Dual-Core de 64 bits) por unos AMD Phenom Quad Core 9650. En este artículo, muestro el procedimiento que he seguido para la actualización de la BIOS de las placas base Asus M2N-SLI Deluxe, incluyendo los problemillas que tuve y los WorkAround que apliqué. Un problema que podemos encontrarnos al trabajar con MOSS 2007, es el relativo de la sincronización de perfiles de usuario entre MOSS 2007 (en particular, desde los Servicio Compartidos) y las Bases de Datos de Contenido WSS. El motivo de este problema, y la principal causa de confusión, es que en MOSS 2007 se almacena la información de los perfiles de usuario en varias ubicaciones. En este artículo, aprovechamos para describir el comportamiento general de los perfiles de usuario en MOSS y algunos de los problemas de sincronización de perfiles de usuario entre Bases de Datos. Al trabajar con Sitios de Colaboración de SharePoint, antes o después nos encontraremos con la necesidad de trabajar con documentos grandes, que desearemos poder almacenar, recuperar e indexar en nuestras librerías de documentos de MOSS 2007. Sin embargo, poder trabajar correctamente en MOSS 2007 con este tipo de documentos tiene ciertos detalles que deberemos tener en cuentas, si no queremos sufrir una experiencia algo frustrante. A continuación se presentan varias recomendaciones de configuraciones para trabajar con datos grandes en MOSS 2007. La MetaBase de IIS es un componente de configuración fundamental en cualquier servidor que ejecute IIS (Web, FTP, SMTP, NNTP, etc), como es el caso general de Servidores Web de Microsoft, y en consecuencia, el caso particular de MOSS 2007, Reporting Services, etc. Este artículo describe qué es la MetaBase de IIS, así como explica alternativas de Backup y Restore de la MetaBase de IIS6, en particular, las operaciones de Backup, Restore, Export e Import de la MetaBase de IIS6. Cada vez es más habitual la publicación de Formularios InfoPath en SharePoint (MOSS) para su explotación desde Librerías de Documentos, pudiendo extender las funcionalidades básicas de los Formularios InfoPath con invocaciones a Web Services (por poner un ejemplo). El escenario se complica, cuando tenemos configurados MOSS en balanceo de carga (ej: en un Cluster NLB), y el acceso al Web Service requiere Autenticación. ¿Por qué no funciona esta configuración en NLB? Un error que nos podemos encontrar (en el Visor de Sucesos) al acceder al Directorio Virtual de ReportServer tras una instalación o configuración de Reporint Services 2008 es el error The application domain WindowsService_1 failed to initialize. Error: The endpoint cannot be created, que se manifiesta gráficamente a través del mensaje El servidor de informes ha encontrado un error de configuración (rsServerConfigurationError), o su equivalente en inglés The report Server has encountered a configuration error (rsServerConfigurationError) al acceder al directorio virtual de ReportServer. ¿A qué se debe este error de Reporting Services? ¿Cómo solucionar este error? Recientemente me volví a encontrar el Error 0x8007232B al intentar Activar un Windows Server 2008 descargado de mi subscripción MSDN. En esta ocasión, la solución (WorkAround) que tenía identificada no me funcionó, y al final, fui incapaz de activar dicha instalación de Windows Server 2008, incluso volviendo a introducir la clave MAK (Multiple Activation Key) correspondiente a la licencia de la Subscripción MSDN. Por desgracia, tuve que volver a instalar Windows Server 2008, consiguiendo entonces activar con éxito el producto. Pero ¿Qué diferencia había para poder Activar Windows Server 2008 en un caso, y que en el otro fuera imposible? Durante mis primeras pruebas de MOSS 2007 sobre Windows Server 2008 (y en consecuencia, sobre IIS7), tras la creación de los Servicios Compartidos (Shared Services), me encuentro que al acceder a MOSS (ej: a la Consola de Administración Central) se muestra un Error 503 (Service Unavailable). Seguidamente, compruebo que no tengo ping (se trata de un entornos de pruebas, es decir, tengo todo en una única máquina), y seguidamente compruebo que tras acceder a MOSS se cae el correspondiente Pool de Aplicaciones. ¿Qué está ocurriendo? ¿Cómo corregir el Error 503 (Service Unavailable)? Un tarea habitual en MOSS 2007 (y en sus antecesores también, claro está) es la instalación del iFilter de Adobe PDF. Los iFilter, son un componente software que contienen la información para poder interpretar determinados formatos de ficheros. De este modo, al instalar y configurar el iFilter de Adobe PDF en MOSS 2007, conseguiremos que MOSS 2007 sea capaz de indexar el contenido de ficheros PDF, y así, consigamos ejecutar búsquedas sobre el contenido de los ficheros PDF publicados en nuestra Granja MOSS. Este breve artículo muestra el procedimiento de instalación de Directorio Activo (Active Directory Domain Services ó AD DS) en Windows Server 2008, en particular, la creación de un nuevo Bosque de Directorio Activo desde la nada, es decir, sobre un Windows Server 2008 recién instalado en una infraestructura de red vacía (no hay otros Controladores de Dominio, ni servidores DNS, etc.), incluyendo las pantallas capturadas del procedimiento de instalación realizado. Este artículo describe los pasos a seguir para instalar el Service Pack 2 de MOSS 2007, a través de un ejemplo, incluyendo las pantallas capturadas y explicando el procedimiento de instalación. El ejemplo utilizado, es una Granja MOSS de 32-bit montada en inglés con el Language Pack en español, y formada por un único servidor, aunque se incluyen las consideraciones necesarias para instalar el Service Pack 2 de MOSS 2007 en una Granja MOSS de múltiples servidores. Por último, se incluye un listado de las diferentes versiones de MOSS 2007 y WSS3, así como la forma de comprobar la versión que tenemos. En muchas instalaciones de MOSS se aprovechan sus funcionalidades de creación de contenidos (Páginas Web) para la publicación de artículos, noticias, etc. MOSS 2007 ofrece principalmente dos alternativas de creación de contenidos: Creación manual de Páginas Web y Creación automática de Páginas Web a través de Document Conversion. En este artículo, explicamos las ventajas e inconvenientes de cada una de estas alternativas, así como algunos detalles cara a su utilización. Una tarea muy habitual al trabajar con MOSS y WSS3, es trabajar con Páginas Web. Podemos pensar en un principio, que en MOSS y WSS3 sólo existen Páginas Básicas (Basic Pages) y Páginas de Web Parts (Web Part Pages). Sin embargo, esto es sólo parte de la historia, que se empieza a complicar con las Páginas Maestras (Master Pages), Hojas de Estilo CSS, y sobre todo al activar la característica Office SharePoint Server Publishing, introduciendo las Páginas de Publicación (Publishing Pages), las Páginas Plantilla (Layout Pages), los Controles de Campo (Field Controls), etc. En muchas ocasiones, al trabajar con máquinas virtuales en entornos de Virtualización, necesitamos montar un disco virtual (VHD) para acceder a su contenido, ya sea en modo lectura o en modo escritura. Microsoft Virtual Server 2005 R2 SP1 incluye la utilidad de símbolo del sistema VHDMount.exe (que también puede instalarse por separado, sin Virtual Server) mientras que Windows 7 y Windows Server 2008 R2 incluyen una versión mejorada de DiskPart.exe, siendo ambas herramientas nuestros compañeros para esta batalla. Recientemente, tuve un problema de corrupción sobre la base de datos de configuración de MOSS que se puso en estado Sospechoso (Suspect), en un entorno de laboratorio. Es la primera vez que me encuentro una base de datos Sospechosa (Suspect) en SQL Server 2005, ya que en veces anteriores, lo había experimentado en SQL Server 7 y SQL Server 2000. Me sorprendió, que encontré algunas diferencias durante el procedimiento de recuperación de la base de datos Sospechosa, y en especial, en cómo reconstruir el Log en SQL Server 2005 (DBCC REBUILD_LOG no existe en SQL Server 2005), aunque finalmente recuperé la base de datos y la Granja de MOSS. Aquí va el detalle... Este Artículo realiza una introducción a las funcionalidades de Desprotección y Protección de Documentos en Librerías de Documentos MOSS, así como también trata otras funcionalidades relacionadas como el Versionado (en sus distintos tipos) y la Aprobación de Contenidos (Content Approbal) de MOSS. ¿Cómo utilizar la Desprotección y Protección de Documentos en MOSS? ¿Cómo utilizar el Versionado y la Aprobación de Contenidos (Content Approval) de MOSS? ¿Qué diferencia existe entre versiones Major y Minor? ¿Qué es la local draft folder? MOSS 2007 y WSS3, al igual que sus antecesores SPS2003 y WSS2, almacenan todo su contenido en Listas y Librerías de Documentos, pudiendo considerar las Librerías de Documentos como un tipo de Lista especial (para SharePoint, todo son Listas). Entonces, ¿Qué diferencia existe en Listas y Librerías de Documentos? ¿Qué es conceptualmente una Lista? ¿Qué es conceptualmente una Librería de Documentos? ¿Qué son los Tipos de Contenido? ¿Cómo habilitar la gestión de Tipos de Contenidos? Un error que podemos encontrarnos al publicar Sitios Web de IIS a través de ISA Server 2004 o ISA Server 2006 por HTTPS (es decir, con SSL), es el Error Code: 500 Internal Server Error. The target principal name is incorrect. (-2146893022). Este error es algo desconcertante, pues el mismo sitio publicado por HTTP funciona, y al publicarlo por HTTPS (con SSL) se muestra este error, que a priori, no da muchas pistas para su resolución. ¿Cómo solucionar este error de publicación de ISA Server? Un error relativamente típico al trabajar con ISA Server, es intentar crear un Web Listener utilizando SSL, pero sin haber instalado ningún certificado previamente, o bien, habiendo realizado una importación incorrecta del certificado SSL. En ambos casos, podemos encontrarnos con error To select a certificate, you must install at least one identical certificate on each member server. ¿Cómo solucionamos este error? ¿Cómo importar un certificado SSL en ISA Server para crear correctamente un Web Listener? Habitualmente, los certificados se expiden para un nombre (subject o CN) específico, como podría ser www.guillesql.es. En consecuencia, si deseamos tener múltiples servicios Web, deberíamos solicitar o comprar múltiples certificados (ej: correoweb.guillesql.es, extranet.guillesql.es, download.guillesql.es, etc.). Sin embargo, es posible solicitar un único Certificado para utilizarlo en múltiples Sitios Web, gracias a los Certificados Wildcard, pudiendo especificar un comodín en el subject o CN del certificado (ej: *.guillesql.es). Sin embargo, los certificados Wildcard, esconden otros detalles de interés. Habitualmente, utilizamos ISA Server como servidor Proxy, configurando nuestros navegadores con la dirección del mismo (o también utilizando el cliente Firewall o por SecureNat, esto es, enrutando). Sin embargo, puede ocurrir que en alguna ocasión deseemos utilizar nuestro ISA Server para enrutar. Esta configuración no esconde ningún secreto cuando las subredes a enrutar corresponden a las subredes propias de las tarjetas del servidor ISA. Sin embargo, ¿cómo configurar ISA Server para enrutar peticiones de subredes remotas? Recientemente, he tenido que pegarme con varias configuraciones de Kerberos, relativas a los Service Principal Name (SPN) de Directorio Activo, tanto en entornos de SQL Server como en entornos de Aplicaciones Web con IIS. En ambos casos, he acabado utilizando la herramienta setspn.exe. Sin embargo, es posible utilizar la herramienta administrativa Active Directory Users and Computers (ADUC) para realizar este tipo de configuraciones, pero ¿Cómo utilizar ADUC para configuraciones SPN de Kerberos? ¿Cómo mostrar la pestaña Delegation en el diálogo de propiedades de una cuenta de equipo en ADUC? Un error de conexión habitual en SQL Server es el error Cannot generate SSPI context. Para mi, siempre ha sido una incógnita, que en algunas instalaciones ocurre y en otras no, sin motivo aparente y ningún patrón de comportamiento. Sólo que el error Cannot generate SSPI context se produce durante la autenticación de Inicios de Sesión Windows (de Directorio Activo, es decir, Autenticación Integrada) al conectar a la instancia de SQL Server con TCP/IP. ¿Por qué ocurre el error Cannot Generate SSPI context? ¿Qué es SSPI? ¿Tiene que ver con Kerberos? ¿Qué es un Service Principal Name (SPN)? ¿Cómo se crea un Service Principal Name (SPN)? ¿Cómo usar setspn.exe? El pasado 8 de Junio de 2009, me pasé por las oficinas de Microsoft en La Finca (Madrid), a pasar la mañana en el primer evento SQLFEST realizado en Espña. En este primer SQLFEST, disfrutamos de la compañía de Alfonso, Jesús, Marcos, e Inmaculada, todos ellos empleados de Microsoft Ibérica especializados en SQL Server, que ofrecieron un estupendo Overview de diferentes aspectos de SQL Server 2008. ¿Quieres conocer lo más interesante del primer evento SQLFEST en España? Sigue leyendo... Este breve artículo se limita a mostrar el proceso de instalación de Microsoft iSCSI Software Target sobre Windows Storage Server 2008 x64, con el objetivo de convertir Windows Storage Server 2008 en una SAN, es decir, en un iSCSI Target por Software. En este caso, hemos instalado Windows Storage Server 2008 x64 sobre una máquina virtual de Hyper-V, corriendo sobre Windows Server 2008 Datacenter. ¿Quieres conocer el proceso de instalación de Microsoft iSCSI Software Target para convertir Windows Storage Server 2008 en una SAN iSCSI? Este artículo explica como funciona la Seguridad y los Permisos en las Colecciones de Sitios de MOSS, incluyendo en sus SubSitios, Librerías de Documentos, Listas, Carpetas, SubCarpetas, Documentos, etc. Se explican las configuraciones de Directivas de Aplicación Web (Policy for Web Application), la configuración de Administradores de Colecciones de Sitios, como comprobar la Herencia de Permisos (así como la forma de romper la Herencia o restablecerla), cómo funcionan los Grupos de SharePoint, etc. Vaya paradoja con el Usuario y Contraseña de Windows Storage Server 2008. Por fin he sacado tiempo para instalar Windows Storage Server 2008. El proceso de instalación, no tiene nada de especial, en general es como la instalación de un Windows Server 2008 de toda la vida. Sin embargo, finalizada la instalación, uno espera poder establecer la contraseña del usuario Administrator ¿Verdad? Pues NO, ya viene puesta la Contraseña del usuario Administrator hardcodeada en Windows Storage Server 2008 (a diferencia de en Windows Server 2008). ¿Cuál es la password en Windows Storage Server 2008 para el usuario Administrator? Pequeño detalle... Una de las primeras pruebas que quería hacer con Windows Storage Server 2008 era probar la Virtualización, es decir, añadir el Role Hyper-V a Windows Storage Server 2008, con el fin de poder tener un Host de Hyper-V y a la vez un iSCSI Target (un servidor de almacenamiento SAN) en la misma máquina, bajo mi punto de vista, muy cómodo para entornos de laboratorio. ¿Es posible añadir el Role Hyper-V a Windows Storage Server 2008? ¿Como añadir el Role Hyper-V a Windows Storage Server 2008? Este Artículo pretende ser un Manual de Almacenamiento a nivel básico, donde introducir los principales conceptos de Almacenamiento, arquitecturas de Almacenamiento, tecnologías de Almacenamiento, etc., tanto desde un punto práctico como desde un punto de teoría universitaria, actuando también como Glosario de términos de Almacenamiento: SAN, NAS, DAS, NFS, SMB, CIFS, Fiber Channel, HBA, Switch Fabric, iSCSI, IQN, MPIO, LUN, Snapshot, Switch Zoning, LUN Masking, WWN, WWNN, WWPN, FCIP, iFCP ¿Qué significa y qué son cada uno de estos términos de Almacenamiento? Uno de los últimos errores que me he encontrado al realizar exportaciones e importaciones de MOSS 2007 (STSADM export e STSADM import) es el error The file cannot be imported because its parent web does not exist, que en español, se muestra como No se puede importar el archivo porque no existe el sitio Web primario. Una vez más, los pelos como escarpias ¿A qué se debe este error de importación? ¿Cómo solucionar este error de importación? ¿Es algo personal? En alguna ocasión, me ha resultado necesario mover o transferir las contraseñas de los Inicios de Sesión de SQL Server entre Instancias. Lo suyo (en muchos casos), es crear los Inicios de Sesión en destino con el mismo SID y Password que en origen, pero si esto no se hizo así, y queremos mantener las mismas contraseñas, deberemos cambiarlas a posteriori, y surge la duda ¿Cómo mover contraseñas de SQL Server entre Instancias? En este artículo, se incluye Scripts de ejemplo para mover contraseñas de SQL Server, considerando las casuísticas de SQL Server 2000 y SQL Server 2005. Una tarea algo habitual para un DBA de SQL Server es tener que corregir los Usuarios Huérfanos pertenecientes a Inicios de Sesión de SQL Server, como por ejemplo ocurre, al mover bases de datos entre Instancias de SQL Server sin utilizar sp_help_revlogin. El problema de los Usuarios Huérfanos (Orphaned Users) toma una mayor magnitud en el caso de migraciones y consolidaciones de Instancias y Bases de Datos SQL Server, momento en el que nos preguntamos ¿Cómo listar todos los Usuarios Huérfanos de una Instancia de SQL Server? ¿Cómo corregir todos los Usuarios Huérfanos de una Instancia de SQL Server? Esta claro que picarse una a una las llamadas a sp_change_users_login es un poco rollo. Un par de servicios de gran utilidad en Windows Server 2003, son los servicios SMTP y POP3, que permiten construir una infraestructura de correo electrónico (básica y algo limitada) de una forma económica, y fácil a la par que sencilla (haciendo equipo con DNS y Directorio Activo), ideal para entornos de laboratorio, donde en muchos casos estamos ajustados de recursos hardware para montar una infraestructura de correo electrónico basada en Exchange Server. ¿Cómo instalar y poner en marchar los servicios SMTP y POP3 de Windows Server 2003? ¿Cómo configurar el Relay SMTP en IIS6? En ocasiones resulta de gran utilidad cargar los ficheros de Log de IIS a una base de datos SQL Server, con el fin de poder consultar la información de los Log de IIS, generar estadísticas de los Logs de IIS, etc., algo relativamente sencillo, pues los ficheros de Log de IIS, son ficheros de texto plano, cuyas columnas están separadas por espacios. En este artículo se muestra como cargar ficheros Log de IIS en SQL Server con OPENROWSET BULK, incluyendo un fichero de formato (FMT) de ejemplo, ejemplos de consultas SQL y código Transact-SQL, para la creación de un DataMart con los Logs del IIS. Un error que nos podemos encontrar al realizar una importación con STSADM -o import es el mensaje Error: Value cannot be null, poco descriptivo, la verdad. En mi caso, además de detectar el Error de Value cannot be null, al comprobar el Sitio recién importado, descubrí que no se había importado ningún documento, aunque por el contrario, si se habían importado el resto de objetos, como Listas, Librerías de Documentos, Carpetas, etc. ¿A qué puede deberse el Error Value cannot be null? ¿Cómo puede solucionarse el Error Value cannot be null? Bodegas Arzuaga, además de elaborar uno de los mejores vinos de la Ribera del Duero, posee un Hotel 5 estrellas y Restaurante en las propias bodegas, el cual, recientemente ha sido ampliado, con más habitaciones y un Vino-SPA, para el disfrute de sus inquilinos. De este modo, Bodegas Arzuaga ofrece lo que denomina el Paquete Gran Reserva, que consiste en un fin de semana completo en su Hotel 5 estrellas de la Ribera del Duero, junto con un circuito SPA, una cena incluida en su estupendo Restaurante, y otras actividades varias (visita La Finca de Arzuaga, cata de vinos, y otros visitas culturales en la Ribera del Duero). ¿Te apetece? Este artículo describe el desarrollo y programación de Control de Errores con Transact-SQL (TSQL) en SQL Server 2000 y SQL Server 2005 (y superiores), una práctica muy recomendada y necesaria para el desarrollo y programación de procedimientos almacenados y transacciones con SQL Server. Se describe la utilización de la función del sistema @@ERROR, la opción del sistema XACT_ABORT, la sentencia RAISERROR, la utilización de errores definidos por el usuario (sp_addmessage), y los bloques TRY/CATCH (disponible desde SQL Server 2005). SQL Server 2005 incluye el nuevo tipo de datos XML capaz de almacenar documentos XML ó fragmentos XML, que es posible utilizar tanto en variables como en campos de tablas, y que a diferencia de otros tipos de datos, ofrece métodos (si, si, métodos, como en la programación orientada a objetos ;-) con los que poder interactuar con este nuevo tipo de dato XML, de una forma extraordinariamente potente, junto con consultas XQuery (lenguaje estándar del W3C para consultas XML), posibilidad de creación de índices sobre campos XML, posibilidad de almacenar hasta 2GB (es un tipo de dato LOB ó BLOB), etc. Es importante recordar que XML es susceptible de mayúsculas y minúsculas, algo que tendremos que tener en cuenta al interactuar con datos XML. Database Mirroring es una solución de Alta Disponibilidad en SQL Server, disponible desde SQL Server 2005 y sensiblemente mejorada en SQL Server 2008, mostrándose como una alternativa a los sistemas de Alta Disponibilidad basados en Microsoft Cluster y/o Replicación de Almacenamiento Datos (ej: Cluster Geográficos o GeoClusters), siendo también una alternativa interesante a otras tecnologías como Log Shipping o a la Replicación de SQL Server (según en qué caso). ¿Quieres conocer Database Mirroring? Pues sigue leyendo... STSADM incluye operaciones para mover Colecciones de Sitios completas (STSADM -o backup y STSADM -restore) y operaciones para mover Subsidios o Web Sites (STSADM -export y STSADM -import), en ambos casos con sus particularidades. Sin embargo, STSADM no incluye operaciones para mover Listas de MOSS ni carpetas, algo de gran utilidad para automatizar despliegues de aplicaciones MOSS y como técnica de recuperación de documentos. ¿Cómo podemos cubrir esta necesidad? ¿Podemos utilizar las extensiones de Gary Lapointe? ¿Qué son las extensiones de Gary Lapointe? ¿Cómo instalar las extensiones de Gary Lapointe? Un error que podemos encontrar en MOSS 2007 al realizar una exportación con STSADM -o export es el error Exception from HRESULT: 0x80041050 que encontraremos (si se nos produce) en el log asociado de la exportación de STSADM (en el directorio de destino del export). El error 0x80041050 es producido por la existencia o detección de virus en algún documento o versión de documento en MOSS, a través de Microsoft ForeFront o de otras soluciones de Antivirus para MOSS de terceros. En cualquier caso ¿Qué podemos hacer si encontramos el error 0x80041050? ¿Cómo conseguir finalizar la exportación con éxito? Una de las tareas típicas de administración de MOSS, es la exportación e importación de Sites con la utilidad STSADM -o export y seguidamente con STSADM -o import. Sin embargo, esta tarea que puede resultar bastante sencilla y rápida con Sites pequeños, empieza a complicarse cuando el Site tiene gran tamaño (por ejemplo, por el almacenamiento de una gran cantidad de documentos y de sus versiones), que puede llegar a dejar sin espacio al disco C del servidor MOSS (error There is not enough space on the disk) durante la exportación (STSADM -o export) y/o durante la importación (STSADM -o import). ¿A qué se debe este comportamiento? ¿Cómo podemos evitar este error de espacio en disco? Este artículo muestra una problemática algo habitual al desarrollar consultas SQL, el problema de convertir múltiples filas en una única fila (pasar filas a columna) con todos los valores de las anteriores (por ejemplo, separados por punto y coma), una forma de construir un acumulado (no confundir con las funciones PIVOT y UNPIVOT de SQL Server). El motivo por el que he decidido incluir esto como artículo, es porque quiero mostrar como es posible desarrollar dicha consulta SQL y calcular dicho acumulado concatenando todas las filas, SIN CURSORES (como dios manda ;-) a través de un ejemplo. En muchos proyectos de consultoría desembarcamos con nuestros portátiles con Windows XP configurados en Grupo de Trabajo (y nuestras deseadas máquinas virtuales de laboratorio, imprescindible), encontrándonos con la necesidad de acceder a los recursos y servidores de la red del Cliente (formada por sus Dominios de Directorio Activo). Un problema típico, es no poder acceder directamente desde nuestra estación de trabajo a carpetas compartidas, conectarnos con consolas MMC, o conectarnos a SQL Server con Autenticación Integrada desde nuestra estación de trabajo. ¿Cómo lo solucionamos? Este pequeño artículo tan sólo pretende introducir algunos de los conceptos básicos necesarios desde el punto de vista de arquitectura e infraestructuras de Microsoft Office SharePoint Server 2007 (MOSS 2007). ¿Qué es una Aplicación Web en MOSS 2007? ¿Cuándo es necesario extender una Aplicación Web de MOSS? ¿Qué es una Colección de Sitios (Site Collection)? ¿Cómo se organizan las Bases de Datos de Contenido en MOSS 2007? ¿Para qué sirven los Accesos Alternativos en SharePoint (Alternate Access Mapping)? Recientemente me he comprado un MiniPortatil BLUSENS FREEPC 10P, uno de esos enanísimos Ultraportátiles de 10,2" sobre los que se puede montar unas Windows Vista o Windows XP y tus aplicaciones preferidas. Este tipo de MiniPortátiles se están convirtiendo en un producto muy interesante para personal técnico (ej: cubrir una Guardia con un Ultraportátil es más cómodo que con un portátil grandote, total, si sólo queremos una VPN y un cliente RDP o un Putty ;-) y personal no técnico (ej: para labores periodísticas, navegar por Internet, presentaciones y formación, etc.), y en particular el BLUSENS FREEPC 10P (junto al Asus EEE PC 900) es una de las soluciones más atractivas. Un error frecuente al intentar Activar Windows (tanto al Activar Windows Server 2008 como al Activar Windows Vista), es el error de activación código 0x8007232b (0x8007232b DNS Name does not exist). Este error lo he encontrado en algunas máquinas con Software Windows original descargado de MSDN con Licencia MAK (Multiple Activation Key) original propia de la Subscripción MSDN, al activar Windows por Internet (en mi caso, saliendo a través de un Proxy), con máquinas Sysprepeadas (es decir, maquetas sobre las cuales se ha ejecutado Sysprep). La solución, utilizar slmgr.vbs. En este pequeño artículo quería sólo comentar un error típico en instalaciones de MOSS (al menos con MOSS 2007 SP1, que es con lo que he trabajado) que nos podemos encontrar en el Registro de Sistema del Visor de Sucesos. Se trata del error Event ID 10016 que tiene como Source DCOM, cuya descripción es la siguiente: The application-specific permission settings do not Grant Local Activation permission for the COM Server application with CLSID {61738644-F196-11D0-00C04FD919C1} to the user MOBILE\MOSSSvc SID (S-1-5-21-4272600387-1540970223-723699561-1122). This security permission can be modified using the Component Services administrative tool. Este Artículo pretende ser un Manual de instalación de Microsoft Office SharePoint Server 2007 (MOSS 2007), con el que aprender Conceptos básicos de MOSS, Requisitos de MOSS, Consideraciones de Diseño básicas de MOSS, Operaciones Básicas de MOSS, y el propio Procedimiento de Instalación de una Granja MOSS 2007 (Cómo instalar MOSS, Cómo crear una Granja MOSS, Cómo agregar Nodos a una Granja MOSS, Cómo crear un Aplicación Web de MOSS, etc.). A través de este Tutorial de Instalación de MOSS 2007, se puede adquirir un conocimiento básico suficiente para poder realizar con soltura una implantación de MOSS y el despliegue de una Granja MOSS inicial. Un error habitual al instalar Microsoft .Net Framework 3.0 SP1, es el conocido como XPSEPSC Installer, que muestra el mensaje Requirements and Software Prerrequisites: XPS must be installed before you start the installation process. Install XPS and run setup again. Este breve artículo describe como descargar .XML Paper Specifications Shared Components Pack 1.0 (XPSEPSC) y conseguir finalizar con éxito la instalación de Microsoft .Net Framework 3.0 SP1 Este artículo describe las instrucciones SELECT INTO e INSERT INTO de SQL Server, como alternativas para cargar tablas en un Data Warehouse de SQL Server. Se explica la diferencia entre SELECT INTO e INSERT INTO (funcionalmente hablando), el consumo de LOG de SELECT INTO e INSERT INTO en función del Modo de Recuperación (recovery) utilizado (Simple, Registro Masivo ó Bulk-Logged, y Completo ó Full), la importancia en el rendimiento de un correcto dimensionamiento de los ficheros de datos y log de SQL Server (con ausencia de fragmentación, my god ;-), así como un buen dimensionamiento de la memoria de SQL Server, consideraciones en la eliminación y creación de índices, particionamiento, etc. Excel Services es uno de los principales pilares de Business Intelligence en MOSS 2007. Disponible únicamente en MOSS 2007 Enterprise Edition, Excel Services junto a Excel Web Access (la Web Part encargada de acceder a hojas Excel a través de Excel Services), permite ejecutar hojas Excel en MOSS 2007 (en vez de ejecutarlas en Microsoft Excel 2007) y mostrarlas en formato HTML en una página Web de MOSS. Todo esto, junto a las Pivot Table de Excel, la posibilidad de acceder a datos externos desde Excel (ej: SQL Server) a través ficheros ODC (Office Data Connection), etc., ofrecen una base interesante para proyectos de Business Intelligence. Una tarea imprescindible en el desarrollo y programación con SQL Server es la depuración de Procedimientos Almacenados, Desencadenadores (Triggers) y Funciones (UDF), una tarea que realizaremos con Visual Studio. El hecho de poder ejecutar paso a paso código Transact-SQL (T-SQL) de SQL Server, poder establecer Puntos de Interrupción (Break Point), examinar el contenido de las variables locales, globales y de sistema, modificar el valor de variables en tiempo de depuración, etc., resulta de gran ayuda. ¿Cómo depurar código SQL Server 2005? ¿Cómo depurar Transact-SQL SQL Server 2008? ¿Qué permisos o requisitos son necesarios para depurar SQL Server? ¿Cómo depurar desde SSMS? Este artículo describe la vulnerabilidad SQL Injection a través de varios ejemplos de ataques SQL Injection a páginas ASP y html que acceden a SQL Server, realizados en el Laboratorio de GuilleSQL. Se describen posibilidades adicionales del atacante (Hacker) a través de SQL Injection para atacar y comprometer una aplicación de base de datos SQL Server, y se incluyen diversas alternativas para evitar ataques SQL Injection (utilizar Procedimientos Almacenados en SQL Server, evitar código SQL Dinámico, validar los datos de entrada, sustituir cadenas peligrosas en las entradas, etc.), que también hemos probado en el Laboratorio de GuilleSQL. Este artículo describe el concepto de Clave Subrogada (Surrogate Key) respondiendo a preguntas típicas (¿Qué es una Clave Subrogada (Surrogate Key)?, ¿Cómo crear una Clave Subrogada?, etc), mostrando ejemplos de uso de Claves Surrogadas, etc. También se explican otros conceptos relacionados a las Claves Subrogadas, como son las Claves de Negocio (Business Key), y las tablas Slowly Changing Dimension (SCD), prestando especial atención a la aplicación de Claves Subrogadas a las tablas SCD Tipo 2, aunque también se introducen las tablas SCD de Tipo 1 y las tablas SCD de Tipo 3. Este artículo describe las funcionalidades de la edición Visual Studio 2005 Team Edition for Database Professional (conocido simplemente como Visual Studio for Database Professional ó como DBPro), y en consecuencia también de Visual Studio Team System 2008 Database Edition (prácticamente idénticos), una herramienta fundamental para incorporar a las bases de datos SQL Server en el Ciclo de Vida de Software. Describiremos sus principales características: trabajar con el esquemas de base de datos SQL Server sin conexión, soporte para refactorizar (esto es la caña!!), comparar esquemas de bases de datos SQL Server (buenísimo !!), comparar datos de bases de datos, generación de datos de pruebas, implementación de cambios de base de datos, etc. Este artículo describe el proceso de instalación de zLinux sobre una máquina de arquitectura IBM zSeries (z/Architecture), es decir, sobre un HOST o Mainframe de IBM (típicas máquinas con Sistema Operativo IBM z/OS - antiguamente MVS y os390 -, junto con aplicaciones COBOL/CISC/DB2 y/o Natural ADABAS, sobre hardware IBM). Para la realización de éste artículo, he utilizado el Emulador Hercules para emular las arquitecturas System/370, ESA/390 y z/Arquitecture (de los actuales procesadores IBM zSeries), emulador gratuito (es Open Source) para Sistemas Operativos como IBM MVS, IBM z/OS, o IBM z/VM, o alternativas ASCII como ediciones Linux para entornos HOST sobre procesadores zSeries (es decir, zLinux). En particular, instalaremos Red Hat Linux 7.2 s390. Este Artículo describe la utilización de tablas con versiones de filas (tablas versionadas con Fecha Desde y Fecha Hasta), muy habitual en bases de datos de sistemas transaccionales (OLTP) independentemente del Motor de Base de Datos utilizado (SQL Server, ORACLE, DB2, Informix, MySQL, etc.), y también en entornos de Data Warehouse (DW) y Business Intelligence (BI), donde se conocen como Slowly Changing Dimension (SCD) de Tipo 2, utilizándose tanto para Reporting como para OLAP. ¿Cómo trabajar con tablas Slowly Changing Dimensiones (SCD) de tipo 2? ¿Cómo diseñar un Modelo de Versionado? ¿Cómo funciona el Versionado en tablas SCD Tipo 2? ¿Cómo desarrollar en SQL Server consultas sobre tablas versionadas SCD de Tipo 2? ¿Cómo consultar con SQL una tabla Versionada SCD de Tipo 2? ¿Cómo comprobar la existencia o no de Versiones Solapadas? Este pequeño Artículo describe Error 4294967294 que nos podemos encontrar al abrir un Proyecto de Reporting Services 2005 enlazado con una base de dato de Visual Source Safe. En particular, se trata del siguiente mensaje error de Visual Studio 2005 (BIDS): El elemento de proyecto '4294967294' no representa un archivo, que en inglé se muestra como Project item '4294967294' does not represent a file. Recientemente me he encontrado con un pequeño problema al Desfragmentar un fichero grande con el Desfragmentador de disco de Windows XP Service Pack 2. Aún con una gran cantidad de espacio libre en disco (100GB libres en un disco de 150GB), el Desfragmentador de disco de Windows XP no es capaz de desfragmentar un fichero de 20GB. La solución, muy sencilla, realizar una copia del fichero (como describo en éste artículo): Picaresca VS Tecnología ;-) Consigo reducir 40.000 fragmentos a sólo 8 fragmentos !! Este Manual de Instalación describe cómo instalar SQL Server 2005 en un Cluster MSCS, cómo instalar Analysis Services 2005 (SSAS) en un Cluster MSCS, y cómo instalar Integration Services 2005 (SSIS). Se detalla el proceso de instalación (incluyendo pantallas capturadas) explicando los pasos a realizar y sus motivos e implicaciones, se describen las principales consideraciones a tener en cuenta, principalmente las relacionadas con Microsoft Cluster (MSCS) y Directorio Activo (Active Directory), se discuten alternativas de Diseño, se incluyen varias Recomendaciones de Configuración inicial para su realización inmediatamente después de la instalación, se se incluyen enlaces a otros artículos de interés, etc. Este Artículo presenta una práctica habitual en el desarrollo de base de datos SQL Server con Transact-SQL (T-SQL): obtener las filas de una tabla que no existen en otra tabla relaciona. Algo habitual cuando no existe Integridad Referencial y en proyectos de Data Warehouse (Business Intelligence). ¿Cómo podemos realizar este tipo de consultas SQL? ¿Qué opción ofrece un mejor Rendimiento en SQL Server? Las alternativas son claras: Utilizar NOT IN junto a una SubConsulta, en la cláusula WHERE; Utilizar LEFT JOIN o LEFT OUTER JOIN en la cláusula FROM, y comprobar nulidad (IS NULL) en la tabla externa; Utilizar NOT EXISTS junto a una SubConsulta, en la cláusula WHERE; Resumiendo, ¿qué alternativa nos da mejor rendimiento? ¿NOT IN, NOT EXISTS, o LEFT JOIN / LEFT OUTER JOIN)? Los problemas con los Caudalímetros en motores TDI del Grupo Volkswagen (Skoda, Seat, Audi y Volkswagen) resultan tan incómodos, como peligrosos y habituales. En este Artículo comparto toda mi experiencia sobre Caudalímetros, como sufridor, pues soy propietario de motor TDI del Grupo Volkswagen. Explico qué es el Caudalímetro, que fúnción realiza el Caudalímetro en el coche, cómo solucionar el problema del Caudalímetro, cómo cambiar el Caudalímetro BOSCH por un Caudalímetro Pierburg (el del Mercedes CDI, en mi caso el Caudalímetro de referencia 6110940048), dónde comprar el Caudalímetro BOSCH, dónde comprar el Caudalímetro Pierburg en Madrid (ref. 6110940048 u otros), dónde comprar la llave TORX (TORC) inviolable de 5 puntas en Madrid para cambiar el Caudalímetro (o para limpiarlo), etc. Este Artículo presenta un problema típico asociado a los Procedimientos Almacenados con Parámetros y la generación del Plan de Ejecución (compilación) y la reutilización del Plan de Ejecución generado (pues el Plan de Ejecución se almacena en caché y se intenta reutilizar). Se trata del problema de Parameter Sniffing. Del mismo modo, se explican distintas soluciones: utilizar variables locales (DECLAREs), utilizar SQL Dinámico con sp_executesql ó EXEC(@sql), utilizar WITH RECOMPILE al invocar al Procedimiento Almacenado, utilizar la sugerencia de consulta WITH(RECOMPILE), utilizar la sugerencia de consulta WITH(OPTIMIZE FOR), utilizar la sugerencia de consulta USE PLAN, utilizar Plan Guides (sp_create_plan_guide), etc. Ya me ha hecho falta varias veces acceder a Informix a través de ODBC de 64-bit y MSDASQL de 64-bit desde servidores Microsoft Windows 64-bit (desde SQL Server 2005 64-bit con OPENROWSET u OPENQUERY a través de Servidores Vinculados - Linked Servers). Esta tareas ya es posible, tanto por la disponibilidad de Driver ODBC 64-bit para IBM Informix (ej: IBM Informix Client Software Development Kit 3.50.FC3) como por la disponibilidad del Proveedor MSDASQL de 64-bit (proveedor puente OLEDB a ODBC), ambos disponibles desde hace pocos meses. En este Artículo relato los detalles a tener en cuenta para poner en marcha dicha configuración de acceso a base de datos. Cada día es más habitual necesitar consultar orígenes de datos ODBC (DSN) desde SQL Server 2005, ya sea para importar, para exportar, o simplemente consultar dichos datos. Esto se hace en muchos casos utilizando el proveedor MSDASQL, que se trata de un proveedor OLEDB para acceder a orígenes de datos ODBC (es decir, es un puente OLEDB a ODBC), y en SQL Server utilizar OPENROWSET o un Servidor Vinculado (Linked Server) y OPENQUERY para acceder a dicho origen de datos (DSN). De hecho, este proveedor OLEDB (MSDASQL) también se utiliza en Aplicaciones Web y WinForms, etc. Sin embargo, "de serie" sólo existe la edición MSDASQL de 32-bit. Por ello, si una instalación de SQL Server 2005 64-bit sólo puede acceder a los proveedores OLEDB de 64-bit registrados en dicho servidor ¿Qué hacer para consultar un origen de datos ODBC a través SQL Server 2005 64-bit? Este Artículo pretende mostrar las consideraciones a tener en cuenta para diseñar un Plan de Contingencias (una recuperación completa) de BusinessObjects Enterprise XI R2 o con BusinessObjects Enterprise XI (sin el R2 ;-). ¿De qué es necesario realizar copia de seguridad (Backup) en BusinessObjects Enterprise XI R2? ¿Qué pasos se deben seguir para recuperar nuestro servidor BusinessObjects Enterprise XI R2? ¿Y si teníamos personalizado InfoView? ¿Y si necesitamos recuperar en otro servidor? Quizás no sea éste el mejor método, pero lo que si puedo asegurar, es que ha funcionado ;-) Ah! Y no es un método soportado... aunque funciona ;-) Network Load Balancing (NLB) ofrece una solución de alta disponibilidad para aplicaciones de servidor basadas en TCP/IP, capaz de ofrecer escalabilidad y alto rendimiento. Este Artículo pretende descubrir los secretos y virtudes de Microsoft Network Load Balancing (NLB) y responder a preguntas típicas como ¿Qué modo de operación del Cluster NLB debo elegir? ¿Unicast ó Multicast? ¿Qué modo de Afinidad debo elegir? ¿None, Single ó Class C? ¿Qué diferencia existe entre los modos de Afinidad? ¿Existen soluciones NLB por Hardware? ¿Barracuda, Cisco Arrowpoint, WebMux, F5 Big IP? Desde Microsoft SQL Server 2000 Service Pack 4 (SP4) se incluye este nuevo mensaje de advertencia (ojo, que NO es un error) en el ERRORLOG de SQL Server, con el fin de ayudar a detectar problemas de entrada/salida a disco. Es decir, éste mensaje NO indica que no se ha podido leer o escribir, sino que por el contrario, indica que después de 15 segundos no se ha podido leer o escribir, pero muy probablemente dicha operación de lectura o escritura finalizase después en el tiempo (quizás 16 segundos después... quizás 90 segundos después...), excepto que aparezca adicionalmente, un mensaje de error de entrada/salida. Recientemente, como parte de un estudio de rendimiento en que participé, estuve realizando un estudio del consumo de Red de un producto de Microsoft. Para realizar dicho estudio, decidimos realizar un ciclo de pruebas, y en cada prueba utilizar un Sniffer (o Analizador de Protocolos de Red) para capturar el tráfico de red en modo promiscuo y analizarlo posteriormente. Elegimos como Sniffer el WireShark (antes conocido como Ethereal) en la versión 0.99.8 (la disponible para descarga en aquel momento), al tratarse de un producto con años en mercado y gratuito. En este Artículo pretendo compartir con vosotros los problemas encontrados de consumo de memoria y de medición de paquetes Bogus IP. Quienes me conocen, me habrán oido hablar de mi Laboratorio de casa. Entre otras cosas, dispongo de dos servidores gemelos dedicados a Microsoft Virtual Server 2005 R2 SP1, sobre los cuales monto mis máquinas virtuales para escribir mis artículos, realizar pruebas de laboratorio para los proyectos en que participo, etc. En este artículo, relato mi experiencia en la Migración a Windows Server 2008 RTM con Hyper-V, sobre uno y sólo uno de mis dos servidores gemelos dedicados Microsoft Virtual Server 2005 R2 SP1... y como siempre, en Español !! Hyper-V (Microsoft Virtualization) es la alternativa de Microsoft a las soluciones VMWare y XEN Virtualization (tanto la versión XEN de Open Source como la XEN de Cytrix). Este Artículo presenta la herramienta Security Configuration Wizard (SCW), disponible desde Windows Server 2003 Service Pack 1. Esta herramienta nos facilita la tarea de securizar nuestros servidores, incluso podremos generar Políticas de Directorio Activo (GPO) con dichas configuraciones. De forma adicional, Security Configuration Wizard (SCW) está preparada para considerar configuraciones particulares de productos como Microsoft Exchange Server 2003, Microsoft Biztalk 2004, Microsoft Operation Manager 2005, Microsoft Host Integration Server 2004 (HIS), Microsoft SQL Server 2000, Microsoft Sharepoint Portal Server, etc., gracias a su base de datos de configuraciones (Security Configuration Database). Este Artículo describe el procedimiento de instalación de Microsoft Exchange 2003 en Cluster (MSCS) de servidores Windows Server 2003 Enterprise R2 SP2. Se supone que se dispone de dos servidores Windows Server 2003, instalados y configurados formando un Cluster (MSCS) de dos Nodos, conforme se indica en el anterior Artículo Instalar y Configurar Microsoft Cluster (MSCS) en Windows Server 2003. En consecuencia, si ya está instalado Microsoft Cluster, es evidente que está instalado y configurado Directorio Activo y el servicio de resolución de nombres DNS, los cuales son requisitos para la instalación de Microsoft Exchange Server 2003 (tanto en Cluster como en un servidor independiente). Este Artículo es de utilidad para el examen 70-284 (Implementing and Managing Microsoft Exchange Server 2003). Hace varios años (entre mayo y junio de 2002) publiqué este Artículo en mi antigua Web. Tuvo bastante éxito, así que, aunque no pueda sacar tiempo para re-editarlo y actualizarlo, al menos, quiero dejarlo incluido tal cual estaba en el año 2002 (se redactó en el 2001). Se trata de un Manual en Español para la preparación del examen Cisco CCNA 640-507, correspondiente a la certificación CCNA (Cisco Certified Network Associate), que ya obtuve en su día. Contiene conocimientos básicos de enrutamiento (y muy de lejos, de conmutación) con dispositivos Cisco. Habla de Protocolos de Red, de Protocolos de Enlace, de comandos IOS, etc. La Autenticación Integrada y la Delegación de Kerberos, se trata de una configuración típica utilizada en Aplicaciones Web (Aplicaciones ASPNET, Aplicaciones Sharepoint, Sincronización Web de la Replicación de Mezcla de SQL Server 2005, etc.). Sin embargo, ¿Para qué sirve la Autenticación Integrada y la Delegación de Kerberos? ¿Qué pasos se deben seguir para configurarlo? ¿Y en caso de un Cluster NLB? El otro día me vino a la cabeza aquel copión de discos duros que desarrollé en Octubre de 1995, con mis 18 añitos recién cumplidos... Aquellos maravillosos años... No llevaba mucho tiempo trabajando, aunque aún duré otros 9 años en aquella empresa. Necesitábamos un copión de discos duros, ya que en aquella época no existía el Ghost, ni otras alternativas (o al menos no se conocían). La necesidad era clara: había que montar muchas máquinas iguales para distintos clientes, y entregarlas con el software pre-instalado y configurado, pero el tiempo de instalación llevaba muchas horas (Windows NT, drivers, Software Corporativo, etc.), y como siempre, el tiempo era un bien escaso. Es cada día más habitual trabajar con entornos de prueba virtualizados, aprovechando así al máximo los recursos hardware de que disponemos, y pudiendo simular configuraciones como la de Microsoft Cluster (MSCS), Balanceo de Carga (NLB), etc., o de productos como Microsoft SQL Server o Microsoft Exchange. Un problema típico es quedarse sin espacio libre en el disco C: o en cualquier otro disco de alguna de nuestras máquinas virtuales. En esta situación ¿qué podemos hacer? ¿Cómo podemos aumentar de tamaño un disco VHD? Sin embargo, también se produce el problema inverso: Si tenemos un disco VHD demasiado grande ¿Cómo podemos reducir un disco VHD? Al empezar un proyecto con Windows Sharepoint Services 2003 (WSS2) se producen muchas dudas existenciales (sólo las primeras veces) que desde aquí intentaremos resolver: ¿Qué diferencia hay entre sitios de primer nivel y subsitios? ¿Cómo se puede personalizar WSS2? ¿Qué son las Páginas Fantasma (Ghosted Pages)? Durante la creación de un nuevo Sitio (Site) o de un nuevo Espacio de Trabajo (Workspace) en Windows SharePoint Services 2003 (WSS2), debemos elegir que Plantilla de Sitio deseamos aplicar, decisión que NO puede cambiarse a posteriori: Una vez creado el nuevo Sitio o Espacio de trabajo utilizando una determinada Plantilla, no podremos cambiar por otra Plantilla en un futuro. Podremos cambiar el Tema, crear Contenidos, etc., pero no cambiar la Plantilla empleada. Cada día es más habitual instalar o configurar el servicio Microsoft Cluster (MSCS) en servidores Windows Server 2003, con el fin de dotar de alta disponibilidad a nuestras soluciones de infraestructura. Especialmente es importante para Microsoft SQL Server y Microsoft Exchange. El presente Artículo describe el procedimiento de instalación y configuración de Microsoft Cluster (MSCS) en Windows Server 2003, y muestra consideraciones varias de interés, como la configuración de red (Networking), Almacenamiento (Storage), Directorio Activo (Active Diretory), etc. y en Español ! Este Artículo es de utilidad para el examen 70-292 y el examen 70-296 de las certificaciones MCSA y MCSE. Al empezar a trabajar con Microsoft SQL Server, existen muchas dudas comunes, tanto para programadores como administradores, indiferentemente de su experiencia con otros motores de base de datos. En este Artículo, intentaremos dar respuesta a las preguntas más comunes de SQL Server para aquellos que se inician... y en Castellano. Así, este Artículo intenta servir como un Manual de SQL Server, un Tutorial de SQL Server dónde poder aprender de las preguntas más comunes sobre SQL Server. Habitualmente trabajamos con datos alfanuméricos y fechas. Sin embargo, cada día es más frecuente encontrarnos en SQL Server con tipos de datos grandes (LOBs - Large Objects; BLOBs - Binary Large Objects) como IMAGE, TEXT, NTEXT, VARBINARY(max), VARCHAR(max) y NVARCHAR(max). Pero... ¿Qué podemos tener en cuenta al trabajar con ellos en SQL Server? ¿Cómo podemos importarlos o exportarlos? BULK OPENROWSET, BCP.EXE, BULK INSERT, BULK IMAGE IMPORT - BII.EXE, TEXTCOPY.EXE, Linked Servers, SSIS, ADO, ADO.NET, etc... |