Backup & Restore con archivos.bat

septiembre 18, 2016

Luego de haber publicado algún tiempo atrás, un código de como crear un backup por medio de un archivo .bat, me solicitaron si podia enseñar algún código que mostrara como, aparte de hacer un backup, poder realizar un restore de ese mismo backup pero en otro servidor.

Para ello utilizaremos el mismo código del artículo anterior para que sea mas comprensible todo, así que, sin más preámbulos comencemos:

1> SQLCMD -S 192.168.2.120,1433 -U SQLBackup -P QWEasd123* 
2> -Q "BACKUP DATABASE AdventureWorks2012 
3> TO DISK = '\\192.168.2.120\respaldos\esta.bak' WITH INIT, 
4> NAME = N'Backup Automatico de database', STATS = 10" 
5> -o E:\esta\11.txt

El código mostrado arriba es el código que utilizamos para hacer el backup así que no lo explicaremos acá ya que este ha sido explicado anteriormente.

Por ello, vamos a pasar al código que nos interesa para poder hacer el RESTORE en otro servidor:

1> SQLCMD -S 192.168.2.125,1433 -U SQLBackup -P QWEasd123* 
2> -Q "RESTORE DATABASE Adventureworks2012 
3> FROM DISK = '\\192.168.2.120\respaldos\esta.bak' 
4> WITH MOVE 'AdventureWorks2012' 
5> TO 'E:\esta\AdventureWorks2012.mdf', 
6> MOVE 'AdventureWorks2012_log' 
7> TO 'E:\esta\AdventureWorks2012.ldf', REPLACE, STATS = 10; " 
8> -o E:\esta\22.txt

Este código al igual que el otro es bastante sencillo, solo debemos seguir los pasos establecidos y comprender lo que hace cada línea de código:

Línea 1: nos conectamos a nuestro servidor por medio de SQLCMD, establecemos la dirección IP de nuestro servidor al igual que el puerto de conexión que utiliza (Recordemos que el puerto de conexión por defecto es el 1433), luego por medio de -U establecemos quien es el usuario que se utiliza como usuario con privilegios de administración para crear la base de datos (en este ejemplo usamos al usuario SQLBackup), por último pero no menos importante con -P establecemos la contraseña del usuario SQLBackup para que pueda conectarse al servidor sin problemas.

-Q «RESTORE DATABASE: podemos fijarnos que esta línea comienza también con -Q pero en vez de ser «Backup» la sentencia es RESTORE, la cual va acompañada del nombre de la base de datos a restaurar.

FROM DISK:  especifica el directorio desde el cual vamos a buscar el backup de la base de datos realizado en el primer código.

WITH MOVE: la instrucción MOVE hace que se restauren los datos y el archivo de registro en las ubicaciones especificadas en la línea 5 TO ‘E:\esta\.

MOVE ‘AdventureWorks2012_log’: indica que se debe retaurar el archivo de registro «.log» en el directorio especificado en la línea 7 de la misma manera en que lo indicamos en las líneas 4 y 5.

Línea 7: indicamos el directorio explicado en el punto anterior, utilizamos la sentencia REPLACE para indicar que se deben reemplazar los datos antiguos por los nuevos que estamos restaurando y por último utilizamos la sentencia STATS para que nos indiquen el porcentaje de ejecución cada 10% secuencialmente.

-o E:\esta\22.txt: al igual que en el código del artículo anterior, indicamos que se cree un archivo de texto plano llamado 22.txt, donde almacenaremos la información de la ejecución de nuestro RESTORE, ya sea correcta o si ha existido alguna falla, nos lo indique en dicho archivo.

Al finalizar de crear el archivo 22.txt nos deberá mostrar la información de esta manera:

10 percent processed.
21 percent processed.
30 percent processed.
40 percent processed.
51 percent processed.
60 percent processed.
71 percent processed.
80 percent processed.
90 percent processed.
100 percent processed.
Processed 448 pages for database 'Adventureworks2012', 
file 'AdventureWorks2012' on file 1.
Processed 2 pages for database 'Adventureworks2012', 
file 'AdventureWorks2012_log' on file 1.
RESTORE DATABASE successfully processed 450 pages in 4.652 seconds (0.754 MB/sec).

Ahora; para que todo esto funcione, los dos fragmentos de código deberán estar dentro del mismo archivo con extensión .bat y ejecutarlo con privilegios de administrador.

Saludos!

Roberto Pozo

Backup SQL Server 2014 con archivos .bat

septiembre 7, 2016

Hace unos días, me preguntó un amigo si existía alguna forma de poder crear Backups de nuestras bases de datos de SQL Server 2014 de manera automática y luego de creado el backup obtener un archivo de formato plano con el resultado de la operación y que todo esto fuera realizado por medio de un archivo de extensión .bat.

Para poder lograr esto solo debemos seguir algunos sencillos pasos:

  • Abrir un bloc de notas: en este bloc de notas escribiremos el código necesario para convertirlo luego en un archivo de extensión .bat
  • Utilizar el SQLCMD para comunicarnos con el servidor de bases de datos.
  • Conocer el nombre del servidor y/o su dirección IP. En este ejemplo utilizaremos la dirección IP de nuestro SQL Server en lugar del nombre de instancia.

Código de ejemplo:

1> SQLCMD -S 192.168.2.120,1433 -U SQLBackup -P QWEasd123* 
2> -Q "BACKUP DATABASE AdventureWorks2012 
3> TO DISK = '\\192.168.2.120\respaldos\esta.bak' WITH INIT, 
4> NAME = N'Backup Automatico de database', STATS = 10" 
5> -o E:\esta\11.txt

Explicación del código de ejemplo. Línea 1, SQLCMD:

Como comentamos un poco más arriba debemos utilizar el SQLCMD para conectarnos a nuestro servidor.

-S 192.168.2.120, 1433 : corresponde al nombre de nuestra instancia y su respectivo puerto de conexión. Podemos utilizar el nombre del servidor y la instancia directamente, pero es mejor utilizar la dirección IP de cada instancia para evitar confusiones y/o choques entre los servidores, el puerto utilizado por defecto es el 1433 sin embargo este puede cambiar según las necesidad y configuración que haya realizado nuestro DBA.

-U SQLBackup: Corresponde al usuario que tiene los privilegios de poder realizar copias de seguridad, creación y escritura dentro de nuestro SQL Server, el usuario puede ser «sa» o cualquier otro que hayamos creado con los privilegios necesarios, en este ejemplo nuestro usuario es SQLBackup.

-P QWEasd123*: Pertenece a la contraseña que utiliza nuestra usuario SQLBackup para conectarse al servidor.

Líneas 2 hasta la 4 pertenecen a una sola sentencia que ocupa una sola línea, la cual trataremos de explicar lo mejor posible:

-Q «BACKUP DATABASE: Estamos indicando una consulta directa sobre el servidor y estamos estableciendo que debe hacer un Backup de la base de datos AdventureWorks, este nombre lo cambiaremos por el que corresponda a la base de datos que vamos a respaldar.

TO DISK = 192…. Indicamos la dirección física en donde queremos alojar el backup y establecemos el nombre que tendrá el respaldo al finalizar, en este caso el nombre de nuestro respaldo será «esta.bak«.

WITH INIT: especifica que se deben sobrescribir todos los conjuntos de copia de seguridad, pero conservando el encabezado de los medios.

NAME: especificamos un nombre para identificar el backup que estamos realizando, en este ejemplo lo hemos identificado como «Backup Automatico de database».

STATS = 10: para mostrarnos el porcentaje completado desde el umbral para informarnos del próximo intervalo, es decir cada 10 porciento cubierto nos indicará el siguiente.

Línea 5, -o E:\esta\11.txt: indicamos el directorio y el nombre del archivo mas su extension en la cual almacenaremos la información de los resultados de la operación de respaldo.

Ahora para finalizar solo necesitaremos guardar nuestro archivo del bloc de notas con la extensión .bat, para ello vamos al menú archivo, guardar como, escribir el nombre que le daremos a nuestro archivo y no olvidar colocarle la extensión .bat, en tipo seleccionar todos los archivos y por último damos clic en el botón guardar.

backupbat-01

Ahora para ejecutar nuestro archivo .bat para crear nuestros backups solo debemos seleccionarlo con el botón derecho de nuestro mouse y ejecutarlo como administrador.

Con nuestro archivo se ejecutará con los privilegios de administrador y creará nuestro backup «esta.bak» en el directorio establecido.

Saludos!

Roberto Pozo

 

SQL Transactions

julio 14, 2016

El otro día (costumbre muy venezolana de decirlo así cuando uno no se acuerda de la fecha exacta), estábamos hablando en la Universidad acerca de como se manejan las transacciones en SQL Server y utilizamos en la conversación el típico ejemplo de las cuentas bancarias.

Ahora vamos a explicar esa misma conversación pero con sus respectivos códigos para que sea más comprensible la forma en que se manejan las transacciones en SQL Server.

Para este tema debemos comenzar por definir que es una transacción… En pocas palabras, las transacciones se encargan de mantener la integridad de los datos almacenados dentro de nuestras bases de datos.

Una transacción es un grupo de comandos que cambian la data almacenada en una base de datos, y se asegura que todos los comandos se completen y finalicen con éxito, esto se conoce como COMMIT y en caso de existir alguna falla que no se ejecute ninguno de ellos.

Si alguno de los comandos falla, todos los demás comandos fallarán y por ende ningún dato será modificado en la base de datos, esto se conoce como ROLLBACK.

Bien, ya definido a grosso modo lo que son las transacciones vamos a ver el código y lo explicaremos para comprender mejor esa definición.

Toda transacción comienza con BEGIN TRANSACTION, esto es el indicativo de que se trata de una transacción y está comenzando el proceso de la misma.

Luego de esta primera línea se agrega una segunda con la sentencia T-SQL que deseamos sea ejecutada.

Posteriormente se escribe la función COMMIT TRANSACTION para indicar que finaliza la transacción y si todo ha salido bien se almacenen los datos perdurablemente, caso contrario recurrimos al ROLLBACK TRANSACTION para deshacer cualquier cambio, es decir:

Supongamos que tenemos varias cuentas bancarias (ahora sí estamos hablando del ejemplo comentado anteriormente), Antonio y Claudio son dos amigos que tienen cuenta bancaria en el mismo banco y Claudio le pide prestado a Antonio por medio de una transacción la cantidad de 1250 BsF. (pueden ser bolívares, pesos, marcos, libras, quetzales, rupias, etc… Eso queda al gusto de ustedes el tipo de moneda jejeje).

transacciones-01.jpg

El banco debe asegurarse de restarle a Antonio los 1250 de su cuenta y abonarlos a la cuenta de Claudio, en caso contrario, deshacer la transacción y devolverle los 1250 a Antonio, esto lo hace por medio del siguiente código:

BEGIN TRY
     BEGIN TRANSACTION
          UPDATE cuentas SET balance = balance - 1250 WHERE nombreCliente = 'Antonio';
          UPDATE cuentas SET balance = balance + 1250 WHERE nombreCliente = 'Claudio';
     COMMIT TRANSACTION  
     PRINT 'Transacción completada'
END TRY
BEGIN CATCH
     ROLLBACK TRANSACTION
     PRINT 'Transacción cancelada'
END CATCH

El resultado es el siguiente:

transacciones-02

transacciones-03

Revisando el código notamos lo siguiente:

BEGIN TRY con esto estamos haciendo la prueba de errores, es decir, indicamos que ejecute todo el script que hay dentro de BEGIN TRY hasta END TRY, si no ha surgido ningún problema en ninguno de los dos UPDATE entonces lanza el COMMIT e imprime en pantalla el mensaje, como se puede observar en la imagen superior y al hacer un select podemos notar los cambios de balance en cada una de las cuentas.

Si hubiera existido algún error o falla en la transacción entonces se lanzaría el CATCH y por ende se dispararía el ROLLBACK y su respectivo mensaje.

Ahora generaremos un error apropósito para ver como funciona el ROLLBACK. Lo primero que haremos es suponer el caso siguiente:

Claudio le pide al banco que devuelva los 1250 a Antonio y que al mismo tiempo le abone 250 para pagarle un total de 1500 como agradecimiento del favor que Antonio le hizo.

El banco sin embargo, en vez de enviarle el dinero a Antonio (por error de dedo) coloca en el nombre del cliente el número de cuenta, esto provocaría, si no existieran los ROLLBACK, que ambos (Claudio y Antonio) perdieran el dinero.

Veamos entonces el nuevo código y su funcionamiento para ver que sucede:

BEGIN TRY
     BEGIN TRANSACTION
          UPDATE cuentas SET balance = balance + 1250 WHERE nombreCliente = 'Claudio';
          UPDATE cuentas SET balance = balance - 1250 WHERE nombreCliente = 1234;
     COMMIT TRANSACTION
     PRINT 'Transacción completada'
END TRY
BEGIN CATCH
     ROLLBACK TRANSACTION
     PRINT 'Transacción cancelada'
END CATCH

transacciones-04transacciones-05

Como podemos observar, la primera transacción se efectúa, sin embargo, la segunda falla haciendo que se dispare el ROLLBACK y su respectivo mensaje. Esto origina que la primera transacción sea deshecha y los datos queden sin modificación alguna.

Saludos!

Roberto Pozo

Comprobar y configurar protección de páginas

junio 13, 2016

Cuando estamos revisando las páginas de nuestras bases de datos, debemos estar pendientes de comprobar que la configuración de protección de páginas esté bien y que sea correcta.

Muchas veces, cuando creamos una base de datos no nos preocupamos por revisar su condición y eso nos puede ocasionar que si falla la protección de páginas podamos tener problemas mayores.

La opción PAGE_VERIFY CHECKSUM de la base de datos nos puede ayudar a detectar problemas de coherencia de la base de datos con la ruta de entrada / salida  (E / S) del sistema. por eso es muy importante estar siempre pendiente que en las opciones de recuperación el valor de Page Verify sea CHECKSUM.

page_verify-01.jpg

Esto lo podemos revisar por medio de nuestro SQL Server Management Studio seleccionando con un clic derecho la base de datos que queremos comprobar, luego haciendo clic en Propiedades y finalmente daremos clic en la página Opciones.

La otra manera y mas recomendable para poder comprobar el status de nuestras páginas es por medio del siguiente código:

SELECT
 [page_verify_option],
 [page_verify_option_desc]
FROM
 sys.databases
WHERE
 [name] = N'Pruebas';
GO

Donde; por medio de la sentencia SELECT solicitamos la opción de verificación de páginas y su descripción respectivamente, luego indicamos que esta información la obtendremos desde de la información existente en sys.databases y por último establecemos la condición WHERE para indicar el nombre de la base de datos a la que queremos comprobar su estatus (en este ejemplo sería la base de datos prueba).

page_verify-02.jpg

Pero, y si nos encontramos con que nuestra base de datos no está en CHECKSUM? Es algo que podemos acomodar rápidamente con unas simples líneas de código T-SQL:

ALTER DATABASE [Pruebas]

SET PAGE_VERIFY CHECKSUM

GO

Expliquemos cada una de estas líneas:

  • Línea 1: Indicamos el nombre de la base de datos que debemos acomodar
  • Línea 2: Establecemos que el valor de la página de verificación debe ser CHECKSUM
  • Línea 3: Ejecutamos la sentencia.

Como podemos observar, el comprobar y configurar la protección de las páginas es algo realmente sencillo.

Saludos!

Roberto Pozo

SQL Server Row_number

junio 9, 2016

En algunas ocasiones, por esas ciertas condiciones extrañas que pasan en nuestros trabajos como administradores de datos, debemos enumerar ciertos datos que tengamos almacenados en nuestras bases de datos.

Para ello podemos valernos de la función ROW_NUMBER() que nos permitirá  sin mucho esfuerzo enumerar las filas que tengamos almacenadas.

Para este ejemplo hemos creado una base de datos llamada Pruebas y en ella hemos creado una tabla pedidos;

row_number-01.jpg

Al hacer una consulta estándar a esta tabla, obtendremos todos los datos almacenados en ella sin obtener todavía una numeración:

row_number-02.jpg

Lo que deseamos hacer es que se enumeren las veces que se lista el código de un cliente, que en este caso están en la columna idcliente, pero que al momento de listar otro cliente la numeración comience desde el número uno (1) nuevamente con ese nuevo cliente y así sucesivamente.

Ahora para poder enumerar las filas, usaremos la función ROW_NUMBER() de la siguiente manera dentro de nuestra sentencia:

SELECT idcliente, ROW_NUMBER() over (partition by idcliente order by idcliente) FROM pedidos;

Ya que hemos visto como es la estructura de la sentencia vamos a explicarla para que se comprenda mejor la misma.

Al establecerse la función ROW_NUMBER() ésta debe ir acompañada seguidamente de una instrucción OVER en la cual estableceremos sobre que campo queremos que se haga la partición del conteo que en este ejemplo es en la columna idcliente y debe ir acompañado por ORDER BY que es la misma columna en que se realiza la enumeración.

Al ejecutar nuestra sentencia obtendremos el siguiente resultado:

row_number-03.jpg

Como podemos observar en la imagen anterior ahora todos los códigos de los clientes se encuentran numerados y al comenzar un nuevo código vuelve a comenzar la secuencia de enumeración.

Saludos!

Roberto Pozo

Instalando SQL Server 2016 en Windows 10

May 20, 2016

En este nuevo paso a paso veremos un tema que me han solicitado mucho.

¿Cómo instalar SQL Server 2016 en windows 10?

Lo primero que haremos será, luego de descargar SQL Server, abrir la carpeta donde tenemos los archivos o abrir el archivo .iso, y buscaremos el instalador «setup».

install_sql_svr_2016_01

Una vez ubicado el archivo «setup» , lo ejecutaremos con derechos de administrador, para ello damos clic derecho encima de este archivo para que aparezca el menu contextual y damos clic en la opción «Ejecutar como administrador».

install_sql_svr_2016_02 Luego de esta acción aparecerá en pantalla un mensaje que nos solicita que esperemos unos instantes mientras el instalador procesa la operación.

install_sql_svr_2016_03.jpg

A los pocos instantes, nos aparecerá la ventana del Centro de Instalación de SQL Server 2016 mostrándonos un menú en el lado izquierdo. En este menú haremos clic en la opción «Installation» y luego en la «New SQL Server stand-alone installation or add features installation».

install_sql_svr_2016_04.jpg

Esta acción nos abrirá el instalador de SQL Server para comprobar las reglas globales que se encargan de identificar cualquier problema que nos pueda impedir la instalación.

Si se encontrara algún error o faltara alguna de las reglas, se nos informará en la pantalla, y esto deberá ser corregido antes de poder continuar al siguiente paso de la instalación. Caso contrario, nos mostrará el estatus de cada regla con la leyenda «Passed» o aprobado y una marca verde al lado de cada regla.

install_sql_svr_2016_05.jpg

Al finalizar la comprobación de la las reglas globales, el asistente pasará por dos opciones más, Actualizaciones de Producto y Archivos de Instalación. En la opción actualizaciones de producto podemos elegir que se busquen las actualizaciones del producto para que sean instaladas a medida que se instala SQL Server, o pasar por alto esta opción para descargarlas mas tarde.

Luego de la actualización pasa automáticamente a archivos de instalación (generalmente no se puede observar esta pantalla ya que el cambio es extremadamente rápido) y de ahí comienza inmediatamente a revisar las reglas de instalación que también se encargan de revisar posibles errores o fallas que puedan existir en el equipo en que instalaremos SQL Server.

install_sql_svr_2016_06.jpg

Si algo fallara en este paso, se deberá corregir antes de continuar con la instalación, sin embargo podemos notar una advertencia en esta pantalla que nos indica que la misma existe en el Firewall de Windows. En vista de que esto es solo una advertencia y no un error podemos continuar con la instalación sin problemas (en otra ocasión veremos como solucionar el firewall).

Al presionar el botón «siguiente» pasaremos a la pantalla Clave del producto en la cual podremos elegir entre dos opciones:

  • Especificar una edición libre: en donde podremos seleccionar entre las opciones Evaluación (para SQL Server Enterprise), Developer o Express.
  • Ingresar clave del producto: en donde ingresaremos la clave de activación de nuestra licencia de SQL Server Enterprise, en caso de poseerla.

install_sql_svr_2016_07.jpg

Al presionar el botón «Siguiente» deberemos aceptar los términos de la licencia para poder continuar a la pantalla siguiente «Feature Selection» selección de características en don seleccionaremos todos los componentes y características que deseamos instalar.

install_sql_svr_2016_08.jpg

Como podemos observar en la imagen superior, en este paso a  paso se seleccionaron todos los componentes y características a excepción de PolyBase Query Service for External Data, esto debido a: para instalar dicha tecnología se debe tener instalado el SDK de Java, por ello este paso lo omitimos y lo veremos en otro tutorial.

Luego de haber seleccionado las características que conformaran nuestro entorno de SQL Server y luego haber dado clic en «Siguiente» pasaremos a la pantalla donde podremos comenzar con la Configuración de nuestra Instancia, es acá donde estableceremos el nombre con el que llamaremos a nuestra instancia.

install_sql_svr_2016_09.jpg

Por defecto el nombre de la instancia es MSSQLSERVER sin embargo nosotros podemos modificar ese nombre seleccionando la opción «Named instance» nombre de instancia y en el campo de texto Instance ID escribir el nombre que deseemos para distinguir a nuestra instancias de otras.

Después de haber asignado el nombre de instancia, daremos clic en «siguiente» para acceder a la pantalla de Configuración del Servidor, es en esta pantalla donde podremos automatizar los servicios del servidor seleccionando la opción auto en cada uno de ellos o dejarlos que el usuario los active de forma manual según sea su necesidad.

install_sql_svr_2016_10.jpg

Al mismo tiempo podemos establecer los tipos de cuenta para cada servicio y sus respectivas contraseñas. recordemos que todo esto es en función de como queremos manejar nuestro servidor y que personas tienen privilegios de administrar ciertas características y cuales no.

Al pasar a la siguiente pantalla procedemos a configurar el motor de bases de datos, en esta pantalla encontramos dos opciones Modo de autenticación Windows y Modo Mixto.

install_sql_svr_2016_12.jpg

La primera opción nos permite iniciar sesión en el motor de bases de datos directamente con los datos de acceso de nuestra cuenta en el PC, la segunda opción nos permite iniciar sesión especificando el usuario y la contraseña que hayamos asignado, generalmente el usuario «sa» utiliza estos datos.

Al mismo tiempo debemos especificar un usuario (o varios según sea el caso) que fungirá como administrador de nuestro servidor de bases de datos, para ello hacemos clic en el botón Add Current User o en el botón Add para abrir la ventana de usuarios y elegir el que necesitemos o al que tendrá estos privilegios. Luego daremos clic en «Siguiente».

En la siguiente pantalla configuraremos el Analysis Services, en esta pantalla solo escogeremos entre tres opciones: Modo Multidimensional and Data Mining, que es el más utilizado y que viene seleccionado por defecto, Modo Tabular o Modo PowerPivot, también deberemos asignar un usuario que tenga permisos administrativos de la misma manera en que se hizo en la pantalla anterior.

install_sql_svr_2016_13

Para la pantalla siguiente Reporting Services Configuration seleccionamos de igual manera al usuario que tendrá los derechos administrativos así como en la pantalla Distributed Replay Controller seleccionamos al usuario que tendrá los permisos para este servicio.

install_sql_svr_2016_14

En la versión de SQL Server 2016 tenemos ahora la posibilidad de instalar Microsoft R Open sin embargo para poder instálalo deberemos primero dar clic en el botón Aceptar para que se descarguen e instalen los pre-requisitos necesarios para su funcionamiento.

install_sql_svr_2016_15.jpg

Al finalizar la descarga y todo el proceso se activará el botón «Siguiente» para poder continuar con nuestro siguiente paso de instalación.

Posteriormente, luego de dar clic en «Siguiente», se realizará otra consulta de reglas de configuración y después se nos mostrará la pantalla Ready to Install la cual nos mostrará un pequeño resumen de las características que hemos seleccionado al principio para instalar. Simplemente daremos clic en el botón Instalar para que ahora sí se comience a instalar nuestro SQL Server 2016 en nuestro equipo.

 

install_sql_svr_2016_16

Todo el proceso de instalación lleva varios minutos en completarse, así que hay que ser pacientes en esta parte. Al finalizar nos mostrará el resumen de la instalación enseñándonos las característica y sus estatus, si todo ha salido bien veremos algo parecido a lo mostrado en la siguiente imagen.

install_sql_svr_2016_17.jpg

En este paso ya tenemos instalado SQL Server 2016, solo nos queda dar clic en el botón «Cerrar» y comprobar en nuestro menú de aplicaciones que el mismo aparezca instalado.

Para ello vamos a la parte inferior izquierda de nuestra pantalla y damos clic en el botón Inicio, bajamos hasta donde esté la carpeta Microsoft SQL Server 2016 y comprobamos que aparezcan las herramientas en la misma.

 

install_sql_svr_2016_18

Para reconfirmar que ya está en funcionamiento SQL Server 2016 podemos abrir una consola (bash) y hacer un llamado a SQLCMD.

Saludos!

Roberto Pozo

 

 

Datos de prueba en Azure SQL Database

May 11, 2016

En algunas ocasiones necesitaremos crear una base de datos en Azure que nos permita hacer pruebas antes de cargar datos reales en nuestras aplicaciones.

Para ello podemos crear una Azure SQL Database con datos de prueba basados en AdventureWorksLT.

Para crear nuestra base de datos con estos datos de prueba, simplemente procedemos a realizar los siguientes pasos:

En el menú izquierdo de nuestro portal Azure hacemos clic en SQL Databases.

datosprueba01

Al mostrarse la página de SQL Database que muestra todas las bases de datos que hemos creado, haremos clic en el botón agregar.

datosprueba02

Esto desplegará una nueva página de Base de datos SQL donde rellenaremos los campos solicitados para poder crear nuestra Base de datos.

En Nombre de la base de datos, escribiremos un nombre para identificar nuestra nueva base de datos de las demás que tengamos dentro de nuestra cuenta. Para este ejemplo hemos utilizado el nombre datosprueba para así saber que es en ella donde tendremos almacenados los datos proporcionados por AdventureWorksLT.

datosprueba03

En Suscripción, seleccionaremos la cuenta que tengamos asignada para nuestro proyecto. Si tuviéramos más de una cuenta deberemos hacer clic en el nombre de la suscripción para que se despliegue la lista con los nombres de nuestras suscripciones y seleccionar la correcta.

En la sección Grupo de recursos podemos utilizar un grupo de recursos que hayamos creado anteriormente o podemos crear uno nuevo. Para utilizar un grupo existente simplemente hacemos clic en el nombre de recurso para que se despliegue la lista de recursos y seleccionar el que deseamos.

Seleccione un origen nos permite por medio de su lista desplegable seleccionar entre tres opciones; Base de datos en blanco, Muestra o Copia de seguridad. Para este ejemplo utilizaremos Muestra ya que nos permitirá seleccionar AdventureWorksLT como base de datos de ejemplo.

datosprueba04

Una vez seleccionada Muestra como origen, podremos elegir en el campo Seleccionar muestra entre dos opciones; AdventureWorksLT(v12) y AdventureWorksLT.

datosprueba05

La diferencia entre estas dos muestras es que AdventureWorksLT(V12) es la versión actualizada  mejorada para trabajar con servidores de bases de datos Azure V12.

En el campo servidor podemos utilizar un servidor que ya esté creado o podemos, si es necesario, crear un servidor nuevo. Si necesita ayuda para crear el servidor nuevo puede revisar Creando Azure SQL Database donde se explica con detalle como crear un servidor para nuestras bases de datos.

En este ejemplo utilizaremos un servidor creado con anterioridad en otro ejemplo.

El campo Inicio de sesión del administrador del servidor nos solicitará el nombre de usuario que administrará nuestra base de datos, en el campo contraseña escribiremos la contraseña asignada al usuario administrador.

Los demás campos los dejaremos con sus valores por defecto y daremos clic en el botón Crear. Luego de unos instantes se creará nuestra base de datos de ejemplo con todos los datos de AdventureWorksLT y estará lista para poder utilizarla.

Conexión remota Azure SQL Database

May 10, 2016

En algunas ocasiones necesitaremos conectarnos a Azure SQL Database de manera remota, para ello deberemos seguir ciertos pasos necesarios para lograr establecer la conexión entre Azure y SQL Server Management Studio (SSMS).

Al ingresar al portal de Azure buscaremos el menú lateral y daremos clic en SQL Database.

remote_azuredb01

Se abrirá la página que nos muestra todas las bases de datos que hayamos creado en nuestra cuenta. Dentro de esta página seleccionaremos la base de datos a la que deseamos crear la conexión remota dando clic en ella, esto nos mostrará la información general de nuestra base de datos. Buscaremos «Nombre del servidor» y daremos clic en el enlace que aparece debajo.

remote_azuredb02

Esto desplegará otra página que nos mostrará la información de nuestro servidor de bases de datos, buscaremos dentro de esta página «Firewall» y daremos clic en «Mostrar configuración del firewall».

remote_azuredb03

Una vez abierta la nueva página configuración de firewall deberemos fijarnos que la opción «Permitir el acceso a servicios de Azure» esté como activado.

remote_azuredb04

Buscamos la Dirección IP de cliente que se encuentra un poco mas abajo en esa misma página y observamos el IP que nos muestra, es importante fijarse bien en esta dirección IP ya que ella es la que nos va a indicar los patrones de acceso  por medio de las conexiones IP.

remote_azuredb05ahora procederemos a rellenar los siguientes campos:

  • Nombre de regla: colocaremos un nombre para identificar la regla que vamos a crear, para este ejemplo se le ha colocado ConexionRemota.
  • IP Inicial: debido a que la IP de cliente que se nos ha asignado es la 190.199.46.43, en este campo colocaremos como IP Inicial los valores 190.0.0.1.
  • IP Final: en este campo escribiremos 190.255.255.255.

Al finalizar de llenar los campos hacemos clic en el botón Guardar ubicado en la parte superior.

remote_azuredb06

Debido a que estas direcciones IP han sido creadas para este servidor de bases de datos en particular, es probable que la dirección que les aparezca a ustedes sea distinta, sin embargo acá lo importante es observar el rango de valores a ingresar en los campos.

Por ejemplo: si la IP cliente que les asignaran  a ustedes fuera 193.23.45.134, los rangos serian para IP Inicial 193.0.0.1 | IP Final 193.255.255.255

Si todo ha salido bien y no se ha producido ningún problema, aparecerá un mensaje en pantalla indicándonos que las reglas del firewall han sido actualizadas correctamente.

remote_azuredb07Ahora simplemente damos clic en el botón Aceptar.

Con estos pasos ya hemos configurado nuestro firewall en Azure para poder conectarnos a nuestra Azure SQL Database remotamente. Ahora veamos los pasos para poder realmente conectarnos a nuestra Azure SQL Database desde SQL Server Management Studio.

Como bien recordaremos, en la página información general de nuestra base de datos aparece el nombre del servidor, anteriormente habíamos dado clic en ese nombre, sin embargo, ahora notemos que justo al lado derecho aparece un icono copiar.

Daremos clic en el icono copiar para que se copie la dirección de nuestro servidor en el portapapeles.

remote_azuredb08Una vez copiada la dirección de nuestro servidor en el portapapeles procederemos a abrir nuestro SQL Server Management Studio.

Cuando aparezca la ventana de conexión al servidor ingresaremos los siguientes datos:

  • Tipo de servidor: Motor de bases de datos
  • Nombre del servidor: copiaremos la dirección de nuestro servidor en azure, que para este ejemplo es; rpozo.database.windows.net, el nombre de servidor de ustedes será el que hayan escogido al momento de su creación.
  • Autenticación: Autenticación SQL Server.
  • Login: acá colocaremos el nombre del usuario administrador de nuestra Azure SQL Database, para este ejemplo se ha creado el usuario rpozo.
  • Contraseña: escribiremos la contraseña asignada al usuario administrador, en este ejemplo es la contraseña que se le asignó al usuario rpozo.

remote_azuredb09

Luego de haber completado los campos, daremos clic en el botón Conectar para poder conectarnos a nuestra Azure SQL Database de forma remota a través de nuestro SQL Server Management Studio.

Si todo ha sido correcto, dentro de unos instantes estaremos conectados a nuestra base de datos y estaremos listos para poder trabajar con ella.

remote_azuredb10

Si necesitan conocer más acerca de como crear nuestras Azure SQL Database los invito a revisar el paso a paso Creando Azure SQL Database dentro de este mismo blog.

Saludos!

Roberto Pozo

Creando Azure SQL Database

abril 30, 2016

Cuando deseamos crear bases de datos en Azure utilizamos SQL Database que nos permite de una manera bastante cómoda y ágil crear nuestras bases de datos para nuestros proyectos en la nube.

En primer lugar, debemos iniciar sesión en el portal de Azure con nuestras credenciales de cuenta para la nube.

Una vez dentro del portal, buscaremos en el menú lateral la opción SQL Database y daremos clic en ella.

azure_sql_database_1

Esta acción abrirá una nueva página dentro del portal en donde se mostrarán todas las bases de datos que se hayan creado en nuestra cuenta.

Para crear una nueva base de datos damos clic en el botón Agregar

azure_sql_database_2

Se desplegará una nueva página que nos pedirá todos los datos necesarios para la construcción de nuestra Base de datos, los cuales son:

  • Nombre de la Base de datos

En este campo deberemos escribir el nombre con el que identificaremos a nuestra base de datos, este nombre debe ser único y puede estar compuesto por letras y números.

azure_sql_database_3

Si el nombre con el que deseamos identificar nuestra base de datos es único y no está siendo utilizado por ningún otro servicio en Azure, se mostrará un check o palomita en color verde como se muestra en la imagen superior, caso contrario mostrará un signo de exclamación en rojo indicándonos que dicho nombre no puede ser utilizado y deberemos utilizar otro.

 

  •  Suscripción

Este campo está compuesto por una  lista desplegable en la cual seleccionaremos la suscripción de nuestra cuenta Azure en donde crearemos nuestra base de datos.

azure_sql_database_4Si contamos con más de una cuenta Azure, deberemos estar pendientes de seleccionar la suscripción correcta para evitar inconvenientes.

 

  • Grupo de recursos

En esta sección del formulario contamos con dos opciones: Crear nuevo y Usar existente;

Si seleccionamos la opción Crear nuevo, podemos crear un nuevo grupo de recursos para utilizarlo con nuestra nueva base de datos. Este grupo de recursos debe tener un nombre único de identificación, si el nombre no está siendo utilizado aparecerá a su lado un check o palomita en color verde indicándonos que podemos identificar nuestro grupo de recursos con ese nombre, caso contrario aparecerá un signo de exclamación en color rojo.

Azure_SQL_database_5.jpgSi seleccionamos la opción Usar existente, el campo de texto se transformará en una lista desplegable de la cual podremos seleccionar el grupo de recursos necesario.

 

  • Seleccione un origen

En esta lista desplegable encontraremos tres opciones: Base de datos en blanco, Muestra y Copia de seguridad.

azure_sql_database_6

Base de datos en blanco: nos permite crear una base de datos completamente en blanco.
Muestra: crea por nosotros una base de datos de muestra de AdventureWorksLT para Azure. Copia de seguridad: nos permite crear una base de datos a partir de una copia de seguridad existente. Para este ejemplo hemos seleccionado la primera opción.
  • Servidor

Cuando creamos una base de datos Azure debemos alojarla en un servidor, para ello contamos con dos opciones, utilizar un servidor que hayamos creado anteriormente o Crear un servidor nuevo. En este ejemplo utilizaremos la segunda opción.

azure_sql_database_7

Para crear un servidor que nos permita alojar nuestra Azure SQL Database deberemos rellenar los datos solicitados en el formulario:

  1. Nombre del servidor: como en los casos anteriores, éste debe ser un nombre único.
  2. Inicio de sesión del administrador del servidor: en este campo escribiremos el nombre de usuario administrador del servidor.
  3. Contraseña y confirmar contraseña: en estos dos campos escribiremos una contraseña que permita al administrador de servidor conectarse al mismo (se recomienda utilizar las normas mínimas de seguridad de una contraseña segura).
  4. Ubicación: este campo es una lista desplegable que nos muestra todas las ubicaciones de los Centros de datos de Azure a nivel mundial. De esta lista deberemos seleccionar el centro de datos más próximo a nuestra ubicación física o a la ubicación de los usuarios de nuestros servicios.
  5. Crear servidor V12 (última actualización): esta opción nos permite elegir si deseamos crear nuestro servidor con la última actualización de servidores llamada V12 o dejarla en la versión estable anterior.
  6. Permitir que los servicios de Azure accedan al servidor: esta opción está siempre activa por defecto, si por algún motivo se necesita deshabilitarla se puede cambiar en la configuración del firewall o en el SQL Server de la base de datos.

Luego de completar todos los campos deberemos dar clic en el botón Seleccionar, esto configurará nuestro servidor para poder establecerlo a nuestra base de datos.

 

  • Grupo elástico
En este ejemplo seleccionaremos la opción Ahora no, sin embargo veamos lo que dice la ayuda acerca de estos grupos elásticos para poder tener la idea general de este concepto:
«Los grupos elásticos son una solución sencilla y rentable para administrar el rendimiento de varias bases de datos con un presupuesto fijo. Un grupo elástico proporciona recursos de proceso (eDTU) y de almacenamiento que se comparten entre todas las bases de datos que contiene. Las bases de datos de un grupo solo usan los recursos que necesitan, cuando los necesitan y dentro de unos límites configurables. El precio de un grupo se basa solo en la cantidad de recursos configurados y es independiente del número de bases de datos que contiene.«
  • Plan de tarifa

En esta opción seleccionaremos el plan de tarifa que deseamos utilizar para nuestra base de datos.

azure_sql_database_8Para poder seleccionar el plan que utilizaremos damos clic en Plan de tarifa y se desplegará una nueva ventana con todas los planes tarifarios con los que podemos contar para nuestros proyectos, al mismo tiempo nos muestra dos opciones Ver todo y Recomendado.

Al hacer clic en Recomendado, se visualizarán los planes más idóneos para nuestro proyecto basados en rendimiento, costos y sobre todo en nuestro tipo de suscripción Azure.

azure_sql_database_9

Al presionar Ver todo se mostrarán todos los planes disponibles en Azure con la variedad de servicios, rendimiento y costos que cada uno de ellos ofrece.

 

  • Intercalación

Este campo lo dejaremos en este ejemplo con los valores por defecto, sin embargo es importante recordar que  la intercalación no puede cambiarse una vez creada la base de datos.

 

  • Anclar al panel

Esta opción nos permite un acceso directo en nuestro panel principal para mayor comodidad al momento en que tengamos que administrar nuestra base de datos, en este ejemplo hemos activado esta opción.

Para finalizar la creación de nuestra Azure SQL Database procedemos a dar clic en el botón Crear. Luego de unos instantes se creará nuestra base de datos y nos mostrará una ventana con toda la información de la misma, así como multiples opciones de configuración.

azure_sql_database_10

Después de haber sido creada nuestra base de datos y haber mostrado la información esencial de la misma, ésta aparecerá anclada en nuestro panel.

azure_sql_database_11a

Con esto ya estamos listos para poder crear conexiones remotas a nuestra nueva base de datos a través de SQL Server Management Studio así como configurar las cadenas de conexión que utilizaremos en nuestros programas y/o apps por medio de código.

Saludos!

Roberto Pozo

Stored Procedure con parámetros

abril 27, 2016

Hace unos días conversábamos de lo fácil que puede ser un STORED PROCEDURE, sin embargo era un ejemplo bastante sencillo utilizando Stored Procedure simples para servir de introducción a este maravilloso mundo de los scripts.

En aquella ocasión mencionamos que con STORED PROCEDURE podíamos manejar parámetros de entrada y de salida, pues bien, de eso hablaremos hoy, de Procedimientos almacenados con parámetros que ingresaremos nosotros mismos.

Como recordarán la estructura es sencilla, pero esta vez, haremos unos cambios para complicar un poco mas las cosas e irnos adaptando poco a poco a procedimientos mas complejos.

Sin mas preámbulos veamos el código:

CREATE PROCEDURE P_insertEmpleado
@id varchar(6), @nombre varchar(20), @departamento varchar(120)
AS
INSERT INTO empleados (id, nombre, departamento) VALUES (@id, @nombre, @departamento)
GO

En la segunda línea (imagino que ya no hace falta explicar la primera), pedimos los parámetros. Los parámetros en SQL Server se manejan con el símbolo @ y hay que especificar sus tipos de datos.

Luego en la cuarta línea, en vez de escribir los valores como tradicionalmente los haríamos, solicitamos que ingrese los parámetros que estamos pidiendo (son los mismos de la línea dos pero sin el tipo de datos).

Una vez escrito el script lo ejecutamos, si todo ha salido bien nos mostrará el mensaje «Command(s) completed successfully» como podemos observar en la siguiente imagen.

sp_params-01.jpg

Una vez creado nuestro STORED PROCEDURE lo ejecutamos, pero hay una modificación en la llamada, en vez de pedir que se ejecute de manera tradicional como vimos en el artículo anterior, esta vez, después de colocar el nombre del procedimiento, enviaremos los parámetros con la solicitud de ejecución de esta manera:

EXECUTE P_insertEmpleado 'GDRPS2', 'Hercules', 'Mitologia'

sp_params-02.jpg

Ahora solo nos queda confirmar que está correcto el procedimiento haciendo una consulta a la tabla empleados como podemos observar en la siguiente imagen.

sp_params-03.jpg

Como hemos podido observar, trabajar con STORED PROCEDURE es realmente sencillo, solo hay que comprender su estructura y tener clara la idea de qué es lo que deseamos que éste realice.

Saludos!

Roberto Pozo