[Code] ¿Cuál es el tipo de datos de NULL por defecto en una consulta?

Desarrollando un aplicativo me encontré con la curiosidad de saber cuál sería el tipo de datos de una columna en donde sólo se indicara:

select null as A

 

¿Cual es el tipo de datos de la columna A?

 

La respuesta es int, ¿cómo lo determiné?, usando la técnica descrita en el artículo [Code] Cómo conocer la estructura de una tabla temporal 

El código usado es el siguiente:

select null as A
into #t 

exec tempdb..sp_help #t

drop table #t

 

Para especificar un tipo de datos en particular debemos hacer un cast al NULL

select cast(null as bit) as A
into #t 

exec tempdb..sp_help #t

drop table #t

 

Espero sea de ayuda,

FREDDY LEANDO ANGARITA CASTELLANOS
Sql Server MVP

 

[Code] Cómo visualizar la estructura de una tabla temporal

Hacer definiciones de tablas es siempre mas efectivo que generarlas dinámicamente, por lo que tomarse el trabajo de revisar campo a campo qué campos y cómo aplican a lo que queremos hacer puede tomar tiempo, aquí publico un ejemplo de como llevar los resultados a tabla temporal, ver su estructura para usar dicha información para generar una tabla (o variable tipo tabla) más rápidamente

;With Ejemplo as (
select 1 as b, 'valores' as c
union all
select 2 as b, 'Misvalores' as c)
select * 
into #t 
from Ejemplo

exec tempdb..sp_help #t

drop table #t

 

El ejemplo es simple pero imagine tener que varios miles de registros y tener que verificar campo a campo la longitud máxima de cada uno de ellos, el tipo de datos, etc.

Uno de los resultados de sp_help retorna

El cual con poco procesamiento podemos convertir en una tabla, tabla temporal o variable tipo tabla según lo requerido

La técnica mencionada solo se recomienda en entornos de desarrollo y no debe ser usada con precaución en tablas con gran cantidad de datos (una opción es limitar el número de registros de la tabla a devolver)

 

Espero sea de ayuda,

 

FREDDY LEANDO ANGARITA CASTELLANOS
Sql Server MVP

 

[Code] Cómo reconectar los logins con los usuarios luego de restaurar un Backup

Saludos,

Seguro se ha notado que al restaurar un backup, se recuperan sólo los usuarios de la base de datos, no los logins (si es el mismo servidor y los logins no fueron afectados no debe haber problema), entonces cómo reconectar los logins con los usuarios?, bueno existen varias técnicas, la más común es eliminar el usuario y volverlo a crear, dicha técnica presenta varios inconvenientes

 

  • Qué sucede con los permisos del usuario?
  • Qué sucede si el usuario es propietario de la base de datos?

 

Si se está migrando un servidor, se recomienda trasladar los logins usando SSIS

La mejor opción es usar sp_change_users_login el cual permite la reconexión de usuarios y logins sin afectar el funcionamiento ni los permisos, a continuación un ejemplo

EXEC sp_change_users_login ‘UPDATE_ONE’,’Usuario’,’Login’

UPDATE_ONE es la acción que enlaza el usuario con el login dado

 

Espero sea de ayuda,

FREDDY LEANDO ANGARITA CASTELLANOS
Sql Server MVP

 

[Code] Cómo Cambiar el Nombre lógico de una base de datos

Saludos

Para el cambiar el nombre físico de una base de datos basta desconectar la base de datos de Sql Server (Deattach), cambiar el nombre del archivo y luego conectarla de nuevo (Attach), pero el nombre lógico es otra historia, para hacerlo podemos usar el patrón presentado en el siguiente código:

 

use master
ALTER DATABASE [MiBaseDeDatos]  SET OFFLINE –Pone fuera de linea la base de datos
go

ALTER DATABASE [MiBaseDeDatos]  MODIFY FILE (NAME=N’NombreAnterior’, NEWNAME=N’NuevoNombre’)
GO

ALTER DATABASE [MiBaseDeDatos]  MODIFY FILE (NAME=N’NombreAnterior_log’, NEWNAME=N’NuevoNombre_log’)
GO

ALTER DATABASE [MiBaseDeDatos]  SET ONLINE –Reactiva la base de datos

 

Espero sea de ayuda,

FREDDY LEANDO ANGARITA CASTELLANOS
Sql Server MVP

 

Cómo hacer Backup y Restaurar un Modelo MDS (Deploy)

Para exportar la información del modelo podemos usar el siguiente
comando:

     C:Program FilesMicrosoft SQL Server110Master Data ServicesConfiguration>MDSModelDeploy.exe createpackage 
    -model ModelName -package C:FolderMyPackage -version "VERSION_1" -includedata

    Creating a package for model ModelName
    Saving package to file C:FolderMyPackage.pkg

    MDSModelDeploy operation completed successfully. Elapsed time: 00:00:34.1175437
    
    

Parámetros usados:

Parámetro Descripción
createpackage Indica que se desea generar un paquete para deployment
-model Nombre del modelo a publicar (sensible a la mayúscula)
-package Nombre del archivo a crear
-version Nombre de la versión que se desea publicar (sensible a la mayúscula)
-includedata Al agregarlo indica que los datos contenidos se adjunten al archivo a crear
(considerar su uso en escenarios con grandes volúmenes de datos)

Para Restaurar un Modelo MDS en otra instancia podemos seguir los siguientes
pasos:

Lo primero es establecer el nombre del servicio con el que se está
trabajando para ello se puede ejecutar el siguiente comando:

     C:Program FilesMicrosoft SQL Server110Master Data ServicesConfiguration>MDSModelDeploy.exe listservices
        
    MDS services (Service, Website, Virtual Path):
    MDS1, Default Web Site, MDS

    MDSModelDeploy operation completed successfully. Elapsed time: 00:00:04.8538819
    

y luego, con el dato del nombre del servicio podemos proceder a ejecutar el
procedimiento de restauración

     C:Program FilesMicrosoft SQL Server110Master Data ServicesConfiguration>MDSModelDeploy.exe deployclone 
    -package MyPackage.pkg -service MDS
    Deploying clone of package MyPackage.pkg

    MDSModelDeploy operation completed successfully. Elapsed time: 00:01:41.6708683
    

 

Espero sea de ayuda,

FREDDY LEANDO ANGARITA CASTELLANOS
Sql Server MVP

 

[Sample] Implementar detección de cambios para el desarrollo de WareHouses (Parte 5) t-Sql Merge

Se adjunta el paquete de ejemplo para la detección de cambios usando la técnica t-Sql MERGE

También se presentan técnicas alternas en los siguientes artículos

  • Ventajas
    • Ofrece buen rendimiento
    • Es simple de implementar
    • La detección de cambios vive en la base de datos
  • Desventajas
    • Es necesario ordenar los resultados para poder ejecutar el merge Join
    • No se recomienda su uso para escenarios OLTP

 

FREDDY LEANDO ANGARITA CASTELLANOS
Sql Server MVP

 

[Sample] Implementar detección de cambios para el desarrollo de WareHouses (Parte 4) MergeJoin

Se adjunta el paquete de ejemplo para la detección de cambios usando la técnica MergeJoin

También se presentan técnicas alternas en los siguientes artículos

  • Ventajas
    • Ofrece buen rendimiento
    • La comparación se realiza por conjuntos
    • Usa transformaciones estándar
    • No es necesario instalar ningún complemento
  • Desventajas
    • No es tan simple de implementar

 

Espero sea de ayuda,

FREDDY LEANDO ANGARITA CASTELLANOS
Sql Server MVP

 

[Sample] Implementar detección de cambios para el desarrollo de WareHouses (Parte 3) – LookUp

Se adjunta el paquete de ejemplo para la detección de cambios usando la técnica lookUp

También se presentan técnicas alternas en los siguientes artículos

  • Ventajas
    • Ofrece buen rendimiento
  • Desventajas
    • No es tan simple de implementar
    • La comparación se realiza registro a registro

 

Espero sea de ayuda,

FREDDY LEANDO ANGARITA CASTELLANOS
Sql Server MVP