Habilitar conexiones remotas en SQL Server 2014

Quizás necesitemos conectarnos a una base de datos SQL Server 2014 que esté en un servidor remoto. Por defecto cuando instalamos SQL Server 2014 éste no viene habilitado para que éste acepte peticiones remotas, con lo que tendremos que hacer este proceso a mano. Para ello tenemos este sencillo manual que habilitará las conexiones remotas.

  1. Abrimos el Administrador de configuración de SQL Server 2014
    administrador-configuracion-sql-server-2014
  2. Seleccionamos la instancia (en caso de que tuviéramos más de una) de SQL Server que queremos habilitar las conexiones remotas.
    administrador-configuracion-sql-server-2014-tcp-ip
  3. Comprobamos si el Protocolo TCP/IP está Habilitado, en la pestaña “Protocolo”. En caso de que esté deshabilitado, haremos doble click y donde pone habilitado lo pondremos en “SI”.
  4. En la segunda pestaña en la de “Direcciones IP”, vamos al apartado IP4 e introducimos la IP de nuestro servidor. Ponemos el puerto TPC 1433. Dejamos en blanco los Puertos dinámicos TCP.
    habilitar-ip4
  5. Realizaremos un reinicio del servicio de SQL Server para que los cambios que hemos efectuado se apliquen a nuestro servidor.
  6. Con esto debería de ser suficiente para conectarnos remotamente. Pero si todavía no conseguimos hacerlo, tendremos que habilitar los puertos en el firewall de Windows.
    Los puertos a abrir son TCP 1433 y 1434 y UDP 1434.
  7. Si todavía no conseguimos conectarnos, podemos mirar que el servicio “Sql server Browser” esté en ejecución.

La mayor parte de este artículo vale tanto para la versión SQL Server 2014 como anteriores (e imagino que posteriores por la dinámica de Microsoft).

 

 

Uso y diferencias con TRUNCATE y DELETE en SQL Server

Parar borrar el contenido de una tabla podemos utilizar las sentencias TRUNCATE Table o DELETE. Una de las principales diferencias entre estas dos sentencias es que TRUNCATE es más rápida y deja un log más limpio por lo que si tenemos que borrar muchos datos está es la opción más recomendada. Otra gran diferencia es que DELETE es selectivo, es decir, puedes borrar todo o parte del contenido de la tabla mientras que TRUNCATE borraría todo el contenido.

Para poder utilizar la sentencia TRUNCATE el usuario necesitará tener uno de estos roles , sysadmin,, db_owner,  db_ddladmin. El más recomendado sería el último que sirve para ejecutar cualquier comando del lenguaje de definición de datos (DDL) en una base de datos y sería más restrictivo que los otros.

Sin ninguno de estos roles SQL nos reportaría un error de tipo “No se encuentra el objeto XXX o no tiene permisos”.

Ejemplos de consultas JOINS para SQL

Para las personas que no tienen claros los conceptos de JOINS en SQL, y como bien dice el dicho; más vale una imagen que mil palabras, aquí hay un documento que explica gráficamente cual es el uso de cada consulta JOIN SQL.

Hay ejemplos de LEFT y RIGTH, INNER, OUTER Y FULL.

Ejemplo de consultas sql con Joins

Consulta Update desde una consulta Select

Logo SQL Server

A veces nos interesa actualizar un campo o varios de una tabla, pero en lugar de hacerlo a mano buscamos una opción mucho más rápida y sin posible error. Para ello hacemos un Update con los valores de una consulta Select.

En este ejemplo es de SQL Server, pero para los demás gestores de bases de datos la consulta es muy parecida:

Acualizamos el nombre del producto de la tabla productos, con la descripción del artículo.

Update Productos SET Producto.Nombre = (SELECT Articulos.Descripcion FROM Articulos WHERE Articulos.Id = Productos.ArticuloId)

Como formatear una cadena con ceros en SQL

Logo SQL Server

A verces para que queden mas bonitos los reports que asociaremos a una consulta SQL, necesitamos formatear ciertas cadenas de número con ceros a la izquierda.

Por ejemplo: tenemos el cliente 670 y el cliente 23755. En un listado quedarían un poco feos por la diferencia de longitud, por lo que deberíamos poner 00670 y 23755 para que quedaran bien alineados.

Para ello dentro de la consulta pondremos lo siguiente.

Select left(replace(str(campoDelIdDelCliente, 5), ‘  ‘, ‘0’), 5) as IdClienteFormateado * from Clientes