Archivo de la categoría: MSSQL

Plan de ejecución, un lenguaje gráfico.

De alguna manera, aprender a leer un plan de ejecución es como aprender un nuevo lenguaje, salvo que en este caso el lenguaje está basado en íconos, y el número de íconos es acotado. Cada ícono representa una operación específica en el plan de ejecución.

bookmark2005

En total son 79 los diferentes íconos que se pueden encontrar en una consulta, sin embargo, esto no quiere decir que debemos memorizarlos todos antes de interpretar lo que hay detrás de la ejecución de una query. Muchas consultas sólo útilizan un subconjunto de estos íconos y nos simplifica todo mucho más.

Son cuatro los distintos tipos de operadores que podemos encontrar en una plan de ejecución gráfico:

  1. Operadores gráficos y físicos: También llamados iteradores, son desplegados como un ícono azul y representan la ejecución de una declaración DML.
  2. Operadores físicos de paralelismo: También son representados por íconos azules y representan operaciones de paralelismo, de cierta forma, son un subconjunto de los operadores gráficos y físicos, pero se consideran en otro grupo porque estan en un nivel del plan de ejecución completamente distinto.
  3. Operadores de cursor: Son íconos amarillos y representan la operacion de cursores en transact-SQL.
  4. Elementos del lenguaje: Se encuentran como íconos de color verde y representan elementos propios del lenguaje Transact-SQL. Como Assign,Declare,If, While, entre otros.

 

Para mayor información podemos dirigirnos a los BOL de microsoft en el siguiente enlace.

 

 

 

Restaurar una base de datos desde un recurso en red

Hay ocasiones en que se hará estrictamente necesario restaurar una base de datos desde un archivo que no se encuentre en nuestra maquina, sino en un lugar dentro de la red <dominio>

Lo primero que debemos asegurar es el enlace entre las maquinas que estarán interactuando, de aquí en adelante: Maquina A  y Maquina B. Para efectos de este ejemplo la Maquina A será la que debe ser restaurada en base al archivo generado por la base de datos que se encuentra en la Maquina B.


CONFIGURACIONES PREVIAS A NIVEL DE SISTEMA OPERATIVO

  1. La carpeta de nuestra Maquina B que contiene el archivo a partir de donde comenzaremos a restaurar debe estar compartida en la red, de tal manera que la Maquina A pueda leer y escribir sobre ella (read/write)
  2. En la Maquina A debemos montar una unidad de red que tenga acceso a la carpeta compartida por la Maquina B

PROCESO DE RESTAURACION EN MSSQL

Primero es necesario establecer la conexión entres mas las maquinas, si no realizamos la siguiente sentencia podríamos recibir un error del tipo:

LOGONERROR

XP_CMDSHELL 'NET USE Y: \MAQUINABACKUP /user:usuario Password '

Luego de lo anterior estamos en condiciones de utilizar nuestro comando de restauración


USE MASTER
ALTER DATABASE MYDB
  SET SINGLE_USER With ROLLBACK IMMEDIATE
GO

RESTORE DATABASE MYDB
	FROM DISK = '\IP_HOSTRUTAmydb.BAK'
	WITH REPLACE, RECOVERY,
		MOVE 'MYDB_DATDATOS'		TO 'F:MSSQLDataMYDB.mdf',
		MOVE 'MYDB_LOGREGISTRO'	        TO 'E:MSSQLLogMYDB_log.ldf'	

GO

Unable to connect to SQL Server ‘(local)’

diegoxfs.com - Unable to connect to SQL Server ‘(local)’

Unable to connect to SQL Server ‘(local)’ es un error aislado que se da sobre todo cuando se programan tareas(jobs) que en el proceso interno utilizan la base de datos en estado single user, de esta manera luego del error la tarea falla y eso podría acarrear problemas de disponibilidad de datos.


Receta

MSSQL nos está advirtiendo que tenemos errores de conexión por lo que como primera medida debemos revisar la conexión al servidor y el estado de la base de datos, esto último se hace con un simple select a una vista de sistema

use master
go

select
 compatibility_level,
 state_desc,
 user_access_desc
from sys.databases
where database_id = db_id('mydb')
go

Como probablemente nuestro resultado sea que la base de datos se encuentra en estado singe_user , primero debemos saber que proceso, o sentencia esta ejecutando la conexión, terminar con ella y volver a configurar nuestra base para que acepta multiples conexiones simultaneas.

  1. Asegúrate de estar conectado a la base máster
  2. Revisar que conexión tiene acceso exclusivo a la base de datos
  3. Revisar que esta ejecutando la conexión
  4. Eliminar la conexión
  5. Configurar la base de datos en estado multi usuario.

Saludos.
SQLNODE