Python en SQL Server 2017

Python en SQL Server 2017

Con la llegada de SQL Server 2017 (aka vNext) junto con el hype del data science Microsoft está “abriendo la puerta” a otros los lenguajes dentro de SQL Server. Si nos remontamos a la época anterior a SQL Server 2005 las opciones disponibles resultaban complejas (código C nativo) y potencialmente peligrosas al basarse en la carga de DLLs sin limitaciones, sin sandboxing, etc. Con la llegada de SQL Server 2005 se abrió la puerta al uso de .NET con la integración CLR que aportaba una mayor sencillez a la hora de programar y mayor seguridad. A día de hoy el uso de la integración con CLR sigue siendo una herramienta muy potente e infravalorada en muchos escenarios.
(más…)

Cache Redis vs SQL Server In-Memory OLTP

Cache Redis vs SQL Server In-Memory OLTP

La llegada de SQL Server 2016 SP1 ha “democratizado” el acceso a la tecnología In-Memory OLTP pasando a estar disponible en la versión Standard y Express. Al facilitarse el acceso normalmente aumenta la cantidad de preguntas respecto a las posibilidades que ofrece una tecnología. Un posible caso de uso para In-Memory OLTP es utilizarla como caché de datos de forma que datos que son pesados de obtener/calcular puedan estar disponibles de forma más rápida. Además existen múltiples casos de éxito asociados a esta tecnología en empresas de renombre como bwin.

(más…)

Rendimiento de funciones escalares (UDF) (1/2)

Rendimiento de funciones escalares (UDF) (1/2)

Las funciones de usuario (UDFs) son un recurso ampliamente utilizado por cualquier desarrollador hoy en día. Es lógico ya que nos ayudan a encapsular lógica, nos dan claridad de código y nos permiten ver nuestras consultas como en nuestro lenguaje de programación procedural favorito :). Lamentablemente no en pocas ocasiones esas inofensivas e inocuas funciones, mal utilizadas son los focos de problemas de rendimiento que lastran la escalabilidad de nuestro sistema. Dado que la aparición de SQL Server 2016 es mas o menos reciente y que en esta edición del motor disponemos ahora del recurso de “UDFs nativamente compiladas”…vamos a ver qué tal rinden este tipo de funciones. Para este primer post, vamos a centrarnos únicamente en funciones UDF sin acceso a datos.

(más…)

Generación de código para proyectos de base de datos

Generación de código para proyectos de base de datos

En ingeniería de software, hace bastantes años que Microsoft nos hizo un gran aporte con las herramientas de gestion de proyectos de base de datos a través de Visual Studio. Gracias a ello, los administradores y desarrolladores de BBDD podemos utilizar Visual Studio para gestionar el ciclo de vida de las BBDD en entornos corporativos, permitiéndonos hacer el mismo seguimiento y evolución con nuestras BBDD al que están acostumbrados los equipos de desarrollo cuando hablamos de aplicaciones. Ya sabes…integración continua, despliegues con tests unitarios,….

Al hilo de esto, en un proyecto bastante grande en el que estoy metido últimamente ha surgido la necesidad de generar automáticamente ciertas partes de código, y dado que es un proyecto siguiendo una metodología de desarrollo Agil con Scrum y Visual Studio con proyectos de BBDD, he podido aprovechar una de las características que siempre me han gustado mas de Visual Studio…las plantillas de generación de código T4.

(más…)

Optimiza consultas like con SQLCLR

Optimiza consultas like con SQLCLR

Desde hace algún tiempo, siempre que lo veo factible intento exprimir el rendimiento de SQL Server mediante SQLCLR. Es una característica que bien usada aporta muchísimos beneficios (aunque mal usada es un auténtico desastre y fuente de numerosos problemas de rendimiento).

En este caso, voy a comentar un uso de SQLCLR muy recomendable para optimizar consultas con múltiples operadores LIKE a columnas que contienen mucho texto (nvarchar(max)). Para realizar el ejemplo voy a utilizar la función ::fn_trace_gettable(…), ya que es un ejemplo muy sencillo de realizar y que estoy seguro que aportará valor a cualquiera de los lectores que utilice SQL Server Profiler.

(más…)

Lista de Sinónimos

Para un proyecto que tiene un ODS virtual estamos usando sinónimos de SQL, y la verdad funciona de maravilla, pero en ocasiones es difícil determinar la fuente de problemas de rendimiento cuando el objeto referenciado no es un objeto local de la base de datos.

(más…)

Activando los metadatos administrados en SharePoint Online

Hace unos días configurando un entorno de intranet en SharePoint Online me encontré con la necesidad de crear una columna de tipo Metadatos Administrados (Managed Metadata). Para crear esta columna es necesario que la característica de Taxonomía (Taxonomy Feature) esté activada a nivel colección de sitios, lamentablemente esta característica es una característica oculta y solo es posible activarla manualmente mediante PowerShell o modelo de objetos de servidor.

(más…)

Mostrar el título del sitio actual en SharePoint 2010 desde ASP.NET

Mostrar el título del sitio actual en SharePoint 2010 desde ASP.NET

Recientemente me he encontrado con la necesidad de querer mostrar el nombre del sitio actual (SPWeb), desde la maquetación (Layout que dirían los ingleses) de una página, es decir, desde un documento ASP.NET. En un principio, cual programador ciego, pensé en desarrollar un control muy sencillo, que simplemente hiciera un SPContext.Current.Web, etc. pero en vez de eso, aparté las manos del teclado un momento, y pensé, ¿existe algún control de serie (Out-Of-The-Box, que volverían a decir los ingleses) de SharePoint que haga esto mismo? Y sí, si que existe:

(más…)