Este proceso es referido como extracción, transformación y carga (ETL). Recientemente, algunos equipos de almacenamiento de información han cambiado el orden en que hacen ciertas cosas y lo llamarían ELT (extracción, carga, transformación).
El proceso de “transformación” de ETL es con frecuencia el que lleva más tiempo, particularmente cuando sistemas múltiples, dispares, están involucrados. Códigos inconsistentes (ID del producto, ID del cliente), manejo de información incompleta, cambio de códigos a términos significativos (1= no enviado, 2 = enviado) son todos parte del proceso de transformación.
Con el siguiente script podemos saber el puerto que esta utilizando una instancia en sql server.
set nocount on
go
DECLARE @SqlPort Nvarchar(10)
DECLARE @instance_name Nvarchar(30)
DECLARE @reg_key Nvarchar(500)
Declare @value_name Nvarchar(20)if left(CAST(SERVERPROPERTY(‘ProductVersion’)AS sysname),1) = ‘9’
BEGIN
select @instance_name = CAST(SERVERPROPERTY(‘instancename’)AS sysname)if @instance_name is NULL
BEGIN
set @reg_key = ‘SOFTWARE\Microsoft\MSSQLServer\MSSQlServer\SuperSocketNetLib\Tcp’
END
ELSE BEGIN
set @reg_key = ‘SOFTWARE\Microsoft\Microsoft SQL Server\’ + @instance_name + ‘\MSSQLServer\SuperSocketNetLib\Tcp’
ENDEXEC master..xp_regread @rootkey=’HKEY_LOCAL_MACHINE’,
@key=@reg_key, @value_name=’TcpPort’,
@value=@SqlPort outputselect CAST(SERVERPROPERTY(‘ServerName’)AS sysname) as ServerName, @SqlPort as Port
END
if left(CAST(SERVERPROPERTY(‘ProductVersion’)AS sysname),1) = ‘8’
BEGINCreate table #Port_2000 (value nvarchar(20),Data nVarchar(10))
insert into #Port_2000 exec master..xp_instance_regread ‘HKEY_LOCAL_MACHINE’, ‘SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\Supersocketnetlib\tcp’, ‘tcpPort’
select @SqlPort = Data from #Port_2000
select CAST(SERVERPROPERTY(‘ServerName’)AS sysname) as ServerName, @SqlPort as Port
drop table #Port_2000END
Resultado:
El siguiente script nos muestra como eliminar todas las conexiones activas de la base de datos.
CREATE PROCEDURE dbo.EliminarConexiones
@nombre_db SYSNAME
AS
BEGIN
SET NOCOUNT ONDECLARE @spid INT,
@cnt INT,
@sql VARCHAR(255)SELECT @spid = MIN(spid), @cnt = COUNT(*)
FROM master.dbo.sysprocesses
WHERE dbid = DB_ID(@nombre_db)
AND spid != @@SPIDPRINT ‘Eliminando ‘+RTRIM(@cnt)+’ procesos.’
WHILE @spid IS NOT NULL
BEGIN
PRINT ‘Eliminando Proceso ‘+RTRIM(@spid)
SET @sql = ‘KILL ‘+RTRIM(@spid)
EXEC(@sql)
SELECT @spid = MIN(spid), @cnt = COUNT(*)
FROM master.dbo.sysprocesses
WHERE dbid = DB_ID(@nombre_db)
AND spid != @@SPID
PRINT RTRIM(@cnt)+’ Procesos por eliminar.’
END
END
Saludos.
Esta tabla ayuda mucho, nos muestra los diferentes formatos de fechas y la forma de usarlos.
Ejemplos:
select convert(varchar(10),getdate(),101)
Resultado
09/25/2012
select convert(varchar(10),getdate(),102)
Resultado
2012.09.25
select convert(varchar(10),getdate(),103)
Resultado
25/09/2012
select convert(varchar(10),getdate(),108)
Resultado
09:02:49
select convert(varchar(10),getdate(),111)
Resultado
2012/09/25
select convert(varchar(10),getdate(),114)
Resultado
09:04:33:7
Funciones:
Ademas existen funciones para trabajar con fechas y horas:
getdate(): retorna la fecha y hora actuales. Ejemplo:
select getdate()
Resultado
2012-09-25 09:09:00.140
datepart(partedefecha,fecha): retorna la parte específica de una fecha, el año, trimestre, día, hora, etc.
select datepart(month,getdate())
Resultado
9
select datepart(day,getdate())
Resultado
25
select datepart(hour,getdate())
Resultado
9
datename(partedefecha,fecha): retorna el nombre de una parte específica de una fecha. Los valores para «partedefecha» pueden ser los mismos que se explicaron anteriormente.
select datename(month,getdate())
Resultado
Septiembre
select datename(day,getdate())
Resultado
25
dateadd(partedelafecha,numero,fecha): agrega un intervalo a la fecha especificada, es decir, retorna una fecha adicionando a la fecha enviada como tercer argumento, el intervalo de tiempo indicado por el primer parámetro, tantas veces como lo indica el segundo parámetro. Los valores para el primer argumento pueden ser: year (año), quarter (cuarto), month (mes), day (dia), week (semana), hour (hora), minute (minuto), second (segundo) y millisecond (milisegundo).
select dateadd(day,3,’1980/11/02′)
Resultado
1980-02-14 00:00:00.000
select dateadd(month,3,’1980/11/02′)
Resultado
1980-05-11 00:00:00.000
select dateadd(hour,2,’1980/11/02′)
Resultado
1980-02-11 02:00:00.000
Nuevas Funciones en SQL SERVER 2012
DATEFROMPARTS: Devuelve un tipo de datos Date al pasarle el año, mes y día.
Select DATEFROMPARTS(2012,09,25) AS Fecha
Resultado
2012-09-25
DATETIME2FROMPARTS: Devuelve un tipo de datos Datetime2 al pasarle el año, mes, día, horas, minutos, segundos, milisegundos y precisión.
Select DATETIME2FROMPARTS(2012,09,25,23,26,00,345,4)
Resultado
2012-09-25 23:26:00
DATETIMEFROMPARTS: Esta función es idéntica a la anterior con la diferencia de que esta última devuelve un valor de tipo Datetime.
Select DATETIMEFROMPARTS(2012,09,25,23,50,0,010)
Resultado
2012-09-25 23:50:00.0:10
SMALLDATETIMEFROMPARTS: Devuelve un tipo de dato smalldatetime pasando la fecha, horas, minutos y segundos.
Select SMALLDATETIMEFROMPARTS(2012,09,025,12,01)
Resultado
2012-09-25 12:01
EOMONTH: Esta función devuelve el último día del mes de la fecha que introduzcamos. La síntasis es la siguiente: EOMONTH(Fecha, Mes)
— Mes actual
Select EOMONTH(GetDate())
— Mes anterior
Select EOMONTH(GetDate(),-1)
— Mes siguiente
Select EOMONTH(GetDate(),1
Resultado
2012-09-25
2012-08-25
2012-10-25
Saludos.
Cuando desarrollamos aplicaciones la mayoría de las veces generamos los script de los procedimientos almacenados con el usuario SA o con algún usuario con permisos de ejecución.
Un ejemplo claro es cuando desarrollas 100 script (procedimientos, funciones, etc) y te das cuenta que tienes que darles permisos de ejecución a un grupo en especifico, ejemplo el grupo public.
Primero es recomendable tener un standard en los nombre de los procedimientos en mi caso utilizo la siguiente sintaxis P_SIGLA_APP_NOMBRE_PROCEDIMIENTO.
Ej: P_RDA_USUARIOS_BITACORA_INS.
El siguiente script nos facilitara la vida con los permisos:
SELECT ‘GRANT EXECUTE ON ‘ + NAME + ‘ TO PUBLIC’ FROM SYSOBJECTS
WHERE NAME LIKE ‘%P_RDA%’
El resultado es el listado de los objectos:
Esta simple consulta, nos entrega información valiosa sobre los respaldos realizados en el servidor. Nos muestra el listado de las bases de datos que posee el servidor, la cantidad de días desde su ultimo respaldo y su fecha.
Select BD.NAME as NombreBD,
ISNULL(STR(ABS(DATEDIFF(day,GetDate(), MAX(Backup_finish_date)))), ‘Nunca’) as DiasDesdeUltimoRespaldo,
ISNULL(Convert(char(10), MAX(backup_finish_date), 101), ‘Nunca’) as FechaUltimoRespaldo
from master.dbo.sysdatabases BD
left join msdb.dbo.backupset BK
ON BK.database_name=BD.NAME AND BK.TYPE=’D’
GROUP BY BD.NAME ORDER BY BD.NAME
Saludos 😀
Este script es uno de los que mas utilizo, me sirve para buscar cualquier objeto (procedimiento, tabla, funcion, trigger, etc) y sus relaciones con otros objetos por el nombre.
CREATE procecure Buscar_Texto
@TEXTO_BUSQUEDA varchar (100),
@BD_NOMBRE varchar (100)
as
BEGIN
declare @varQuery varchar (1000)select @varQuery =
‘SELECT distinct ‘ +
‘name SP_Name, »sp_helptext »»» + name + »»»»SP_HT ‘ +
‘FROM [‘ + @BD_NOMBRE + ‘].[dbo].[sysobjects] inner join [‘ + @BD_NOMBRE + ‘].[dbo].[syscomments] ‘ +
‘on [‘ + @BD_NOMBRE + ‘].[dbo].[sysobjects].id = [‘ + @BD_NOMBRE + ‘].[dbo].[syscomments].id ‘ +
‘where xtype = »P» ‘ +
‘and text like »%’ + @TEXTO_BUSQUEDA + ‘%» ‘ +
‘order by name ‘
exec (@varQuery)END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
Ejecutar el SCRIPT:
DECLARE @RC int
DECLARE @TEXTO_BUSQUEDA varchar(100)
DECLARE @BD_NOMBRE varchar(100)SELECT @TEXTO_BUSQUEDA = ‘R’
, @BD_NOMBRE = ‘NombreBaseDato’EXEC @RC = Buscar_Texto @TEXTO_BUSQUEDA, @BD_NOMBRE
Varias imágenes valen mas que mil palabras.
Fuente: http://blog.sqlauthority.com