SQL Server – Insertar Datos a una tabla desde otra. INSERT INTO SELECT FROM TABLE, SELECT INTO FROM TABLE

12 04 2011

Existen dos formas de insertar datos de una tabla a otra, la primera es creando la estructura de la tabla destino y luego haciendo un INSERT INTO SELECT FROM TABLE o creando al vuelo la tabla e insertando los datos en la misma instruccion.

El Primero Modo es como se describe a continuación:

--Crear Tabla Destino
CREATE TABLE TablaDest (Col1 VARCHAR(100), Col2 VARCHAR(100))
--INSERT INTO TablaDest usando SELECT
INSERT INTO TablaDest (Col1, Col2)
SELECT Col1, Col2
FROM TablaFuente
WHERE --<Condicion>

La segunda forma de hacerlo es así:

--Crear una nueva tabla al tiempo que seleccionamos los datos desde la tabla fuente
SELECT Col1, Col2
INTO TablaDest
FROM TablaFuente
WHERE --<Condicion>

Ambos modos funcionan también con tablas temporales.

1Saludo





SSIS: Error en OLE DB Source

28 03 2011

Me aparecio este warning/error cuando revisaba un paquete de SSIS (SQLServer Integration Services).

Cannot retrieve the column code page info from the OLE DB Provider. If the component supports the “DefaultCodePage” property, the code page from that property will be used. Change the value of the property if the current string code page values are incorrect. If the component does not support the property, the code page from the component’s locale ID will be used.

Al parecer esto se soluciona en las propiedades del objeto, en la parte de AlwaysUseDefaultCodePage lo dejamos en True y la advertencia desaparece.

1Saludo





Database diagram support cannot be installed because this database does not have a valid owner. Solucionado

18 11 2009

Este error se presento al querer mostrar los diagramas de SQL Server, al principio crei que se debia a un error de configuración en el cliente del SQL Server Management Studio, sin embargo el error que mencionaba era el siguiente.

Database diagram support cannot be installed because this database does not have a valid owner.
To continue, first use the Files page of the Database Properties dialog box or ALTER AUTORIZATION statement to set the database owner to a valid login, then add the database diagram suppoert objects.

Como se menciona en el mensaje habra que establecer un usuario válido como dueño de la Base de Datos, en mi caso tenia el de NombreMaquina\Administrator. asi que se lo cambie al usuario sa

ALTER AUTORIZATION ON DATABASE::dbname TO sa

O bien desde la interfase gráfica del SQL Server Management Studio.

Si esto no funciona prueba, esta otra solución o revisen este hilo.

Saludos.





Validar una fecha en formato mm/YYYY (mes/año) con JavaScript y Expresiones Regulares

4 11 2009

Para validar una fecha en formato mes/año o mm/YYYY usando JavaScript se puede hace uso de la siguiente funcion, que hace uso de una expresion regular, de hecho, las expresiones regulares abren un mundo de posibilidades.

function validateMMYYYY(cadena) {
	var reg = new RegExp("(((0[123456789]|10|11|12)/(([1][9][0-9][0-9])|([2][0-9][0-9][0-9]))))");

	if (reg.test(cadena))
		return true;
	else
		return false;
}

Recomiendo usar Expresso de www.ultrapico.com, para crear las expresiones regulares y probarlas. Una pagina para las expresiones regulares es precisamente http://regexlib.com





Calcular el primer dia y el ultimo de un mes dado, en SQL

4 11 2009

Para el acordeón, una forma de calcular el dia inicial y final de un mes, con el fin de determinar si un mes tiene 28, 30 o 31, es como sigue:

declare @mes varchar(2)
declare @fecha as varchar(8)
set @mes = '02'
set @fecha = '2009' + @mes + '01'
select @fecha AS FECHA_INICIAL,
	CAST (@fecha as smalldatetime) AS FECHA_INICIAL,
	dateadd(m,1, CAST (@fecha as smalldatetime)) AS FECHA_SIGUIENTE,
	dateadd(d,-1,dateadd(m,1, CAST (@fecha as smalldatetime))) AS FECHA_FINAL

Un escenario que me imagino para usarlo es en el que se requiere calcular o ejecutar un proceso en un mes en particular (fecha entre un rango inicial y final), sin embargo, esto es solo una curiosidad, porque tambien es posible hacer un calculo para un mes en particular poniendo en la condicion algo así como esto

SELECT * FROM TABLA WHERE MONTH(FECHA)=@MES

Sin embargo, creo que hacerlo de esta manera, de tener un índice la TABLA en cuestión no se usuaría en la consulta, no así si usaramos una condición de tipo between @FECHA_INICIAL AND @FECHA_FINAL. Que alguien me corriga, si tengo la idea errónea.





Ayuda con la sintaxis para ejecutar DTS con DTSRun, usando DTSRunUI

8 05 2009

Hace poco se nos presentó un problema con un Job de SQLServer 2000, la descripción de la falla indicaba lo siguiente:

Executed as user: NT AUTHORITY\SYSTEM.
Line 1: Incorrect syntax near ‘/’.
[SQLSTATE 42000] (Error 170) The identifier that starts with ‘Z0x662C096C16742FAD8CDB6A2BED09B343726B56DC63026D657
E0B5D08C6C8BAF4A49AD11C72729B9A6945B8E0A4568BE4E4CD6
AAD2A7B47C0F5147EA2DF12C’ is too long.
Maximum length is 128.
[SQLSTATE 42000] (Error 103). The step failed.

(1 row affected)

Buscando la razón de la falla, me tope con la posible solución en la página de SQLDTS, que explica como usar la interfaz gráfica para la ejecución de DTS (Paquetes de Transformación de Datos) con DTSRunUi.

Es posible programar un paquete DTS desde el Enterprise Manager, esto hace que se genere un job y en los pasos dentro de las propiedades se incluya un comando del SO que llama al DTSRun con algo así como: DTSRun /~Z0xD3D4C356186A9DC77B1EE2E50C9A… esta cadena es posible generarla con la herramienta DTSRunUI

Leer el resto de esta entrada »





Error en el MS Project 2007 al visualizar el Diagrama de Gantt. Solucionado

17 03 2009

Me sucedió que me enviaron un archivo de MS Project hecho en la versión 2007 en español, tengo la versión en inglés. Al intentar abrirlo me marca el error:

The view or Report cannot be displayed because the table “Entrada” on which it is based has been deleted.

Este error lo muestra al abrirlo la primera vez. Sólo se puede visualizar el Tracking Gantt, pero no la vista Gantt Chart, que al querer seleccionarlo muestra información adicional.

Mensaje de Error al visualizar el diagrama de Gantt.

Mensaje de Error al visualizar el diagrama de Gantt.

Leer el resto de esta entrada »





Escritorios Virtuales en Windows

3 03 2009

Si tienes la necesidad de tener mas de un escritorio para tener ordenado tus programas: en uno solo el correo, en otro los de desarrollo, o otro mas para diseño, con el fin de no atiborrar la barra de tareas. Una posible solución es virtualizar los escritorios cuando no se puede tener escritorios físicos. Existen varias herramientas que permiten obtener esa funcionalidad. El que mas he usado es:

Dexpot que hoy va por su versión 1.4 estuvo un tiempo abandonado pero alparecer lo han retomado, es free (por ahora), algunas de sus caracteristicas son:

  • La posibilidad de configurar el número de escritorios,
  • Reglas a ventanas,
  • Opacidad,
  • Permite la previsualización de las ventanas abiertas,
  • Se ejecuta en XP y Vista,
  • Multilenguaje,los archivos se descargan aparte, originalmente en alemán,
  • Configuracion de los accesos directos para cambiar entre escritorios,
  • Fondos de pantalla personalizados para cada escritorio.

He aqui algunas capturas:

Desktop Manager

Desktop Manager

Leer el resto de esta entrada »





Imprimir u Obtener la lista de subdirectorios y sus Archivos

11 12 2008

Si deseas imprimir o exportar a texto la estructura de un directorio, se puede hacer con el comando dir, ese comando de toda la vida. Desde el Explorador de Windows no es posible, al menos no lo localizé. Asi que lo haremos en Modo Bestia, desde línea de comandos.

Veamos el modo en que se puede realizar.

dir "C:\Temp" /B /S

El parámetro /B indica que no se muestren resúmenes ni encabezados

El parámetro /S indica se recorra todo el arbol de directorios.

Si quieren enviarlo a un archivo de Texto lo hariamos mediante el modificador de flujo >.Como sigue:

dir "C:\Temp" /B /S > "c:\dirout.txt"

Leer el resto de esta entrada »





Funciones IsNumeric e IsDecimal en JavaScript

1 12 2008

Me topé con la necesidad de usar las funciones IsNumeric e IsDecimal en JavaScript, pero no existen tales, sin embargo es posible crearlos de manera sencilla mediante expresiones regulares, veamos como quedarían.

Para detectar si un conjunto de caracteres (entiéndase una cadena) es un número entero, usamos la siguiente función:

function IsNumeric(expression)
{
	return (String(expression).search(/^\d+$/) != -1);
}

Para saber si la cadena pasada como parámetro es un número con decimales, usando como separador de decimales el punto . hacemos uso de esta otra función.

function IsDecimal(expression)
{
	return (String(expression).search(/^\d+(\.\d+)?$/) != -1);
}

Usarlos es tan simple como llamar a esas funciones y evaluar el valor devuelto.








Seguir

Get every new post delivered to your Inbox.