Colocar el Contenido Especifico de una Página en otra Página
Subir un Proyecto al Subversion de Google Code
Road to MCTS 70-536 - Resumen Capitulo 3
BULK INSERT con Archivos de Formato generados por BCP
-- 1. Creamos una tabla de prueba CREATE TABLE PRUEBA_CARGA ( NOMBRES VARCHAR(50), APELLIDOS VARCHAR(50), CODIGO INT )
-- 2. Definimos el archivo de texto a subir
CARLOSBALBUENA001
CARLOSBALBUENA001
CARLOSBALBUENA001
-- 3. Ejecutar Sentencia Bulk Insert
BULK INSERT
PRUEBA_CARGA [nombre_tabla]
'C:\\PruebaBulk.txt'
WITH (FIELDTERMINATOR='[Separador de Campos]')
Los pasos funcionan perfectamente si es que los datos del archivo de texto coinciden exactamente con las columnas de la tabla(orden y tipo de datos), pero que sucede si los datos del archivo no respetan el orden de las columnas de las tablas o hay campos que no estan presentes en el archivo de datos. La solución : BCP !!!
BCP(Bulk Copy Program) es un utilitario de microsoft que permite hacer cargas masivas a traves de la linea de comandos sin conocimiento alguno de SQL. Pero en nuestro caso lo vamos a usar como complemento del BULK INSERT, especificamente para generar el archivo de mapeo(formato) para mapear las "columnas" del archivo plano de texto con las columnas de la tabla de base de datos. Para ello seguimos los siguientes pasos :
1. Abrimos la linea de comandos: Run[Ejecutar]->Tipear cmd.
2. Hacemos la llamada a bcp, con los parametros correctos :
3. En la ruta especificada encontramos el archivo Bien.fmt con el siguiente contenido :
9.0 <= Version de Sql Server
60 <= Numero de Columnas
1 SQLINT 0 4 "" 1 IdBien ""
2 SQLNCHAR 2 40 "" 2 CodigoSBN Modern_Spanish_CI_AS
......
La primera columna sombreada corresponde al orden en el cual aparece en el archivo de texto y la segunda columna sombreada corresponde al orden en la tabla destino, con lo cual podemos configurar el orden en que apareceran las columnas en el archivo de texto y su correspondiente columna en la tabla o podemos quitar columnas que existen en la tabla pero no en el archivo de texto.
Mas Info : http://msdn.microsoft.com/en-us/library/aa173859(SQL.80).aspx
4. Finalmente usamos el archivo de formato modificado para nuestras necesidades y ejecutamos el BULK INSERT con la siguiente modificacion :
BULK INSERT [TablaDestino]
FROM [NombreArchivo]
WITH (FIELDTERMINATOR=[Delimitador]
FORMATFILE=[RutaFormatoArchivo])
Encontrando Instancias de SQL Server
1. RegEdit!!
Se navega en :
HKEY_LOCAL_MACHINE
-->\\Software
------>\\Microsoft\\
----------->Microsoft SQL Server
----------------->\\[Nombre de Instancia]
------------------------------->\\SQL.???
2. Utilitario : Sql Ping
El utilitario SQL Ping te da la posibilidad de escanear una ip para buscar instancias Sql Server :

3. Abrir el Administrador Corporativo de SQL Server :D.
Perlas del SQL
Bulk Insert : Archivos de Texto
-- 1. Creamos una tabla de prueba
CREATE TABLE PRUEBA_CARGA
(
NOMBRES VARCHAR(50),
APELLIDOS VARCHAR(50),
CODIGO INT
)
-- 2. Definimos el archivo de texto a subir
CARLOS|BALBUENA|001
CARLOS|BALBUENA|001
-- 3. Ejecutar Sentencia Bulk Insert
BULK INSERT
PRUEBA_CARGA [nombre_tabla]
FROM
'C:\\PruebaBulk.txt'
WITH
(FIELDTERMINATOR='|[Separador de Campos]')
--1. Crear archivo excel con estructura de tabla
-- 2. Ejecutar Sentencia OpenRowSet
insert into
prueba_Carga[Nombre tabla]
select * FROM OPENROWSET
(
\'Microsoft.Jet.OLEDB.4.0\',
\'Excel 8.0;DATABASE=C:\\CBALBUENA\\PruebaCarga.xls\[Ruta Archivo Excel]',
\'SELECT * FROM [Clientes$][Nombre de Hoja Excel]\'
)
El Combo de 2.5 MB -Parte I (Problema)
1- Culpar al Ajax Control Toolkit que habia usado para los calendarios y validaciones y por lo tanto generan un viewstate gigantesco.
2- Culpar a la otra maquina poniendo en duda si es una core-duo y que estaba mal configurado su IIS.
3- Culpar al speedy de la empresa por el poco ancho de banda, y solicitar que pongan como requerimiento no funcional del sistema : Speedy de 1GB.
4- No culpar a nadie y decir 'En mi maquina funciona' ;).
Descartada la razón (4) que todo informatico sin excepción ha usado una vez en su vidad :D, opte por descartar una por una las razones :
2. La maquina si era core-duo, tenia espacio en disco y el IIS estaba bien configurado y además tenia otra aplicación que funcionaba en forma correcta.
1. Quite todo el Ajax de la aplicación y volvi a publicar, pero la aplicación seguia con la misma latencia en la carga de la página, entonces esta vez no era Microsoft el culpable.
3. Hice una prueba de velocidad de internet, y si tenia una velocidad aceptable. Luego procedi a instalar la aplicación Fiddler para ver el trafico HTTP a la hora de llamar la aplicación y obtuve las siguientes sorpresas :
- Habia llamadas a a japon que hacia el sistema y que aún ahora son un misterio de el porque las hace.
- El Viewstate de la aplicación era gigantescto, a pesar de ya no tener componente ajax alguno.
- Y la sorpresa final era que la página pesaba un total de 2.5 MB y el transmitir tremenda cantidad de bytes por el ancho de banda disponible de la empresa era la causa de ver a la página cargarse en forma tan lenta que hasta se podia ver como se dibujaban pixel por pixel los combos.
Detectada la causa ahora era momento de determinar en que parte de la página se producía tremenda cantidad de código, por lo que procedi a quitar uno a uno los controles con datos, hasta que finalmente quite un combo que cargaba cierto número de empresas. Despúes de remover el combo la página pesaba 15kb para mi asombro.
La razón era que el número de items de ese combo habia crecido hasta 13000 elementos lo cual generaba un viewstate y un html renderizado de tags "select" y " option.." gigantescos.
En el siguiente post mostrare que solución aplique para este problema tan peculiar y divertido :).






