sp_executesql vrs sp_sqlexec

Estos procedimientos son utilizados comúnmente para ejecutar codigo Transact de manera dinamica; es codigo que armamos a partir de hileras para producir un producto que de otra forma seria un poco complicado.

sp_sqlexec esta en desuso, es un procedimiento que MSSQL ya no soporta y por tanto se deberia de reescribir cualquier codigo que lo este utilizando en este momento.

Cuando ejecutamos codigo dinamico podemos usar sp_executesql o bien exec. Con la diferencia de que el sp_executesql probablemente creara un plan de ejecucion que se pueda reutilizar para ejecuciones posteriores.

Sintaxis


USE master
GO

DECLARE @vsql NVARCHAR(max)

SET @vsql = 'select top 210 * from sys.tables'

EXEC(@vsql)

EXEC sys.sp_sqlexec @vsql

EXEC sys.sp_executesql @vsql

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

Data Files – Espacio Reservado y libre

De ahora en adelante quiero compartir un poco mas frecuentemente lo que uso a diario o lo que aprendo de una u otra forma. Ciertamente he estado un poco acalambrado y ocupado por muchos cambios que se avecinaron en los últimos meses.

Espero que esta consulta para listar los archivos de una base de datos, su espacio reservado y el espacio libre para en ambos en MB, por data file les sea de utilidad

SELECT a.fileid,
       CONVERT(DECIMAL(12, 2), Round(a .size / 128.000, 2)) AS [FILESIZEINMB],
       CONVERT(DECIMAL(12, 2), Round(Fileproperty (a. NAME, 'SpaceUsed') / 128.000, 2)) AS [SPACEUSEDINMB],
       CONVERT(DECIMAL (12, 2), Round ((a. SIZE - Fileproperty (a. NAME, 'SpaceUsed')) / 128.000, 2)) AS [FREESPACEINMB],
       a.NAME AS [DATABASENAME],
       a.filename AS [FILENAME],
       b .NAME
FROM sys. sysfiles a
LEFT OUTER JOIN sys. filegroups b ON a.groupid = b. data_space_id


Publicado en MSSQL Administration

Como exportar los diagramas de bases de datos de MSSQL

Esta semana estuvimos trabajando en presentaciones en el trabajo y estuve buscando una manera rápida de exportar los diagramas de base datos a una aplicación donde pudiese modificarlos de una mejor manera; lo aprendido en dos simples lineas.

1. Si se piensa o se necesita mover estos diagramas a otra base de datos, lo mejor es crearlos en una herramienta como el MS Visio que te permite crear diagramas entidad relación o relacionales y de ahí exportarlos a SQL.

2. Si ya se crearon los diagramas, no existe una manera simple de exportarlos a ninguna herramienta después del Visio 2010, el Visio 2013 a mi entender es menos robusto en estas funcionalidades. No queda mas que copiar el diagrama, para hacer esto simplemente se tiene que editar el diagrama, ya cuando estamos en modo de edición simplemente vamos al menú Diagrama de Bases de datos [Database Diagram] y elegimos la opción Copiar el diagrama al porta papeles [Copy Diagram to Clipboard]; esto nos genera una imagen a partir del diagrama no es editable pero sirve para presentaciones.

Espero sea útil.

Tagged with: , , , , ,
Publicado en Utilitarios

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
Busca por:
  • Que clase de castigo con sueledo pago! Y seguimos preguntando el porque estamos asi! nacion.com/el-pais/magist… 1 week ago
  • Helped nearby drivers by reporting a heavy traffic jam on Ruta 39 / Circv., Rohrmoser, Pavas, San José on @waze - Drive Social. https://g... 4 weeks ago
  • Helped nearby drivers by reporting a stand still traffic jam on Ruta 39 / Circv., Rohrmoser, Pavas, San José on @waze - Drive Social. htt... 4 weeks ago