This is Microsoft’s surprising ‘Plan B’ for mobile

Cambio de estrategia!

Publicado en MSSQL Administration

Script para listar permisos

Esto no es algo nuevo, en realidad tengo mucho tiempo de tener este codigo. Y otras veces me fue super util. Hoy de hecho me funciono en el trabajo cuando necesitaba replicar permisos de una base de datos que tuvimos que cambiar de un servidor a otros.

SELECT 
		[Permisos] = state_desc 
			+ ' ' + permission_name 
			+ ' on [' + c.name
			+ '].[' + b.name 
			+ '] to [' + ar.name 
			+ ']' COLLATE latin1_general_ci_as
FROM 
	sys.database_permissions AS a
	INNER JOIN sys.objects AS b 
		ON a.major_id = b.object_id
	INNER JOIN sys.schemas AS c 
		ON b.schema_id = c.schema_id
	INNER JOIN sys.database_principals AS ar 
		ON a.grantee_principal_id = ar.principal_id
UNION
SELECT 
		[Permisos] = state_desc 
			+ ' ' + permission_name 
			+ ' on Schema::['+ c.name 
			+ '] to [' + ar.name 
			+ ']' COLLATE latin1_general_ci_as
FROM 
	sys.database_permissions AS a
	INNER JOIN sys.schemas AS c 
		ON a.major_id = c.schema_id AND a.class_desc = 'Schema'
	INNER JOIN sys.database_principals AS ar 
		ON a.grantee_principal_id = ar.principal_id
		
Tagged with: , , , ,
Publicado en MSSQL Administration, Utilitarios, Vistas de Sistema

Automatic Index Tuning in SQL Server Using the Missing Index Dynamic Management Views

Este es un artículo de lo más interesante. Talvez no sea lo que uno quisiera hacer en sus ambientes. Pero en casos en los que no podes mejorar el rendimiento de las consultas por no tener acceso a la maquina

Justin M. Dority on Development

In many cases, a DBA may not have access to your deployed databases (if they are deployed to customer sites), may not be able to predict which indexes will help most in ad-hoc reporting databases, or simply may not have the time to hand-tune indexes on all of your databases. To help DBAs with tuning indexes, the missing index Dynamic Management Views (DMVs) were introduced in SQL Server 2005, but they only provide suggestions, there is no built-in facility to automate index tuning. However, with a small T-SQL script, you can put some of your databases on autopilot, and hopefully provide a better experience for your users.

Once again, there is no replacement for an experienced DBA with knowledge of your data and usage patterns performing tuning, but if you don’t have a DBA available for your database, just want a little guidance in which indexes are needed, or you…

Ver la entrada original 383 palabras más

Tagged with:
Publicado en MSSQL Administration

Cual job se esta ejecutando???

Hoy ocupaba una consulta rápida para una validación, y la verdad buscando en red me encontré un código rápido y bastante útil para encontrar los jobs o tareas programadas en ejecución, el original esta en esta pagina (http://www.sanssql.com/2013/08/t-sql-query-to-find-currently-running.html), la verdad lo único que modifique fueron las etiquetas. No es postear por postear, la verdad si me fue bastante útil en lo que ocupaba, tal ves lo sea para alguien mas

SELECT
j.name AS 'Nombre del Job',
ja.start_execution_date AS 'Inicio a las:',
Datediff(ss, ja.start_execution_date, Getdate()) AS 'Ha corrido por: (Segundos)'
FROM   msdb.dbo.sysjobactivity ja
INNER JOIN msdb.dbo.sysjobs J
ON j.job_id = ja.job_id
WHERE  job_history_id IS NULL
AND ja.start_execution_date IS NOT NULL
ORDER  BY start_execution_date
Tagged with: , , , , , , , , ,
Publicado en MSSQL Administration, Utilitarios, Vistas de Sistema

Como medir el progreso del rollback de una transaccion

Muchas veces nos encontramos con casos de consultas (queries) que estan modificando datos por largos periodos de tiempo y honestamente lo ultimo que quiero hacer en esos momentos es terminar el proceso; si se da el caso que el Log de la base de datos se lleno es preferible crear un log temporal en otra unidad y esperar a que la transacción termine por si misma. Pero si se da el caso que no podemos esperar y hay que terminar o matar la transacción ya tenemos a nuestro jefe o cliente presionando por ello, siempre es util saber cual es el % del progreso del rollback, para ello utilizamos el mismo comando KILL <SPID> WITH STATUSONLY, este comando nos dara un estimado del porcentaje.

Para reproducir, generar un ciclo de inserción en cualquier tabla, en este ejemplo insertamos texto infinitamente:


CREATE TABLE tprueba
(
id    INT NOT NULL IDENTITY(1, 1),
texto VARCHAR(15),
CONSTRAINT pk_tprueba PRIMARY KEY (id)
)

WHILE EXISTS(SELECT 1
FROM   sys.tables
WHERE  name = 'Tprueba')
BEGIN
INSERT INTO tprueba
VALUES      (' Es Una Prueba ')
END

Una vez que tengamos el código en ejecución procedamos a matar o terminar la transacción que recien iniciamos


KILL <SPID>

Una vez en estado rollback ejecutamos la misma instrucción de KILL con el parámetro [statusonly]

KILL <spid> WITH statusonly


Tagged with: , , , , , , , ,
Publicado en MSSQL Administration, Utilitarios

Errores comunes al comprimir archivo de una base de datos MSSQL

Personalmente, creo que como DBA el hecho de borrar datos es algo de por si malo, pero en algunas ocasiones hay que borrar información de manera masiva ya que son parte de los históricos de una base de datos muy grandes. En mi experiencia el borrado de datos se asocia a bases de datos que ocupan varios TB de disco duro.
Comprimir mi base de datos va a generar ciertos problemas como fragmentación de mis índices; con el tiempo he encontrado dos errores frecuentes cuando trato de comprimir archivos de base de datos utilizando el DBCC SHRINKFILE:

  1. Could not adjust the space allocation for file ‘<file name>’. Este error esta bien documentado en muchos foros, la solucion mas sencilla es modificar el tamaño del archivo que estamos comprimiendo, se le asignan unos cuantos mega bytes mas de su tamaño actual y listo.
  2. [Cannot use the PAGE granularity hint on the table “<table name>” because locking at the specified granularity is inhibited.], en este caso tenemos que analizar la tabla que nos esta generando el problema, habitualmente esta asociado a tablas sin un primary key o sin un indice clustered. En dado caso tenemos dos opciones:
  • Defragmentar los indices de la tabla cuando existe un clustered.
  • Crear un primary key para la tabla que nos genera el problema.

Espero les sea util

Tagged with: , , , , , , , , , ,
Publicado en MSSQL Administration
Busca por: