1 0 Tag Archives: Bases de Datos
post icon

Importar archivos CSV con C# y SqlBulkCopy

Unos meses atrás vimos como Importar datos de un fichero CSV en SQL Server y ahora lo veremos como hacerlo desde una aplicación cliente. Principalmente nos servirá si pretendemos que el usuario no tenga acceso a rutas que pueda acceder directamente el servidor, ya sean locales o remotas.

Existen varias maneras de procesar este tipo de archivos, pero lo mejor es utilizar la clase SqlBulkCopy que ofrece el framework de .net a partir de la versión 2.0, por su velocidad y bajo consumo de recursos. (Continuar Leyendo sobre Importar archivos CSV con C# y SqlBulkCopy)

post icon

Funciones útiles con fechas y horas en SQL Server

Crear un sólo post por cada función útil que podemos tener sobre tipos de datos datetime, date, time, y otros semejantes en SQL Server terminaría en un sin fin de artículos, así que he considerado agrupar varias funciones comunes y casi cotidianas para operar con éstos tipos de datos.

Hay que tener en cuenta que pondré funciones que podrían sólo funcionar desde la versión 2008 en adelante, aunque la mayoría lo hará con versiones anteriores. (Continuar Leyendo sobre Funciones útiles con fechas y horas en SQL Server)

post icon

Parameters.Add vs Parameters.AddWithValue

Pareciera trivial usar uno u otro método para enviar parámetros desde .Net a las bases de datos, pero no lo es. Uno utiliza un método implícito (Parameters.AddWithValue) de conversión de datos y otro explicito (Parameters.Add)

Utilizar el método implícito es más sencillo pero puede acarrear varios problemas y a muchas veces no son fáciles de detectar:

Cuellos de botellas

Cuando escribía el post sobre las diferencias entre NVARCHAR y VARCHA de SQL Server hacía mención sobre el rendimiento que pueden tener  los tipos de datos y el envío de parámetros sin tipificarlos (Continuar Leyendo sobre Parameters.Add vs Parameters.AddWithValue)

post icon

[TSQL] NVARCHAR vs VARCHAR

Esta es una pregunta muy común entre los que comienzan a utilizar el motor de Microsoft, y no por ello trivial. A muchos le parece trivial, pero en base de datos medianas y grandes puede tener un impacto fuertemente negativo si no se lo utiliza correctamente.

Lo común entre ambos es que son de longitud variable, definidas siempre por un tope máximo. (Continuar Leyendo sobre [TSQL] NVARCHAR vs VARCHAR)

post icon

Restringir conexión a usuarios de SQL Server basados en su IP como en MySQL

Ayer un usuario del foro del MSDN hacía una pregunta más que interesante, como podía crear un modelo de seguridad semejante al que ofrece MySQL de restringir a ciertos usuarios que puedan acceder únicamente desde ciertas direcciones IP, es decir, por más que las credenciales de autenticación (usuario y password) sean válidos, si éstos no se conectan de las direcciones IP permitidas no podrán loguearse a la base de datos.

Lo típico en un ambiente Windows + SQL Server es que las conexiones sean restringidas por direcciones IP desde el Firewall de Windows, pero este sistema carece de la capacidad de detectar que usuarios de base de datos (Continuar Leyendo sobre Restringir conexión a usuarios de SQL Server basados en su IP como en MySQL)

post icon

Como simular las funciones analiticas LAG y LEAD en SQL Server 2005 y 2008

Dos de las nuevas funciones analíticas que introduce SQL Server 2012 son LAG y LEAD que permiten obtener el valor de la fila anterior y posterior respectivamente, ésta función es sumamente útil en operaciones de análisis de datos.

Es realmente sencillo implementarlo en la versión 2012 del motor, si nos fijamos en la documentación de Microsoft podemos ver el ejemplo el cual sería así (utiliza la base de datos AdventureWorks) (Continuar Leyendo sobre Como simular las funciones analiticas LAG y LEAD en SQL Server 2005 y 2008)

post icon

Configurar Linked Server desde SQL Server a Oracle

Tiempo atrás vimos como configurar los servidores vinculados desde SQL Server con MySQL y Firebird hoy nos toca hacerlo con Oracle.

A mi parecer es mucho más sencillo que en los otros casos. Como prerrequisito necesitaremos instalar el cliente de Oracle y configurar el TNS Name, el cual pueden ver aquí como lograrlo.

Una vez configurado lo necesario vamos al SSMS, y preparamos el proveedor OLEDB de ésta manera, habilitando las siguientes opciones (Continuar Leyendo sobre Configurar Linked Server desde SQL Server a Oracle)

post icon

Habilitar e inhabilitar usuarios en SQL Server

Para habilitar o inhabilitar un login especifico en el motor SQL Server es realmente sencillo, y en muchas ocaciones podríamos no necesitar eliminar un login/usuario en concreto ni alterarle los permisos, entonces podemos recurrir a ésta tecnica.

También en el caso especifico del usuario ‘sa‘ no es posible cambiarle los permisos, por lo que es conveniente deshabilitarlo para evitar posible ataques de seguridad. (Continuar Leyendo sobre Habilitar e inhabilitar usuarios en SQL Server)

post icon

Como configurar las transacciones distruibuidas en Windows [MSDTC]

Cuando trabajamos con servidores de bases de datos, configurados como linked server y otros casos similares necesitamos tener correctamente configurado el Coordinador de Transacciones Distribuidas. También pudo ser que llegaste aquí porque te apareció el siguiente error:

El proveedor OLE DB “SQLNCLI” para el servidor vinculado “MISERVIDOR” devolvió el mensaje “El administrador de transacción asociada ha deshabilitado su soporte para transacciones de red o remotas.

(Continuar Leyendo sobre Como configurar las transacciones distruibuidas en Windows [MSDTC])

post icon

Como configurar un cliente de Oracle con TNSNames y ODAC

Este articulo es bastante sencillo y trata de como configurar una instalación cliente de Oracle, específicamente el TNSNames.

Mucha ciencia no hay pero a mucha gente confunde, más a los que vienen de motores que realizan conexiones directas, si bien en Oracle también se puede crear conexiones directas, sigue siendo la forma más difundida y con mayor soporte de características el método con TNS.

Lo primero que se debe es descargar el software cliente, del sitio oficial: (Continuar Leyendo sobre Como configurar un cliente de Oracle con TNSNames y ODAC)