Visual Base de Datos

download Visual Base de Datos

of 57

description

zz

Transcript of Visual Base de Datos

  • Serv

    idor

    es d

    e ba

    ses

    de d

    atos

    5

    CaptuloCaptulo 5

    SERVIDORES DE BASES DE DATOS

    Lo que veremos en este captulo es slo la punta del iceberg de loque se puede hacer con un motor de base de datos y el modelo de ob-jetos ADO. Nos concentraremos en el uso de SQL Server como motorporque, as como Visual Basic es el lenguaje ms popular de la actuali-dad, SQL Server se perfila como el ms popular entre los motoresgrandes de bases de datos. Y no tiene nada que envidiarles a suscompetidores.

    Visual Basic y SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195Elementos para programar desde la base . . . . . . . . . . . . . . . . . . .219Desatando el poder de ADO . . . . . . . . . . . . . . . . . . . . . . . . . . . . .234Ejercicios para lectores valientes . . . . . . . . . . . . . . . . . . . . . . . . . .250

    5VB6.qxd 12/7/00 5:35 PM Page 193

  • Serv

    idor

    es d

    e ba

    ses

    de d

    atos

    5

    195

    Visual Basic y SQL Server

    Visual Basic y SQL Server En su versin 7, SQL Server ha crecido en dos sentidos: por un la-

    do, incorpor funcionalidad, performance y confiabilidad para cubrirlas necesidades de grandes empresas con sistemas igualmente grandes;por el otro, se adapt al entorno de escritorio a travs de una versinque manteniendo intacta casi toda su funcionalidad es capaz de co-rrer en Windows 95/98. Esto lo convierte en el compaero ideal de Vi-sual Basic, el lenguaje que se aplica en entornos igualmente variados.

    En los prximos prrafos veremos cmo se manejan las herramien-tas que SQL Server pone a disposicin del programador, y cmo se in-teracta con l a travs de Visual Basic y ADO.

    EN EL CD

    BASES DE DATOS EN VISUAL BASICVERSIN TRIAL DE SQL SERVER 7La versin trial de SQL Server 7 le permitir por un tiempo limitado poner a prueba to-dos los ejemplos que se realizarn en este captulo con dicho motor de bases de datos.

    Herramientas de SQL ServerSQL Server 7 brinda un conjunto de aplicaciones que permiten

    administrar e interactuar con uno o ms servidores y con las bases dedatos que residen en ellos. La ms importante de ellas es el Adminis-trador corporativo , una consola con interfase grfica y amigableque permite llevar a cabo cualquier tarea relativa al manejo de las ba-ses de datos. Otras herramientas que veremos a continuacin son elAnalizador de consultas, una aplicacin utilizada para enviar scripts(secuencias de comandos) SQL al servidor para su ejecucin y anli-sis, y el Administrador de servicios, un pequeo programa que permi-te poner en marcha el motor de SQL y otros servicios relacionados.Con estos elementos, cualquier programador cuenta con ms de lonecesario para operar cmodamente con un servidor de bases de da-tos SQL Server.

    El Administrador corporativo presenta una interfase de usuariodividida en dos frames: a la izquierda muestra un rbol que contie-ne todos los elementos que puede manejar el Administrador, y a laderecha contiene el detalle del objeto seleccionado en el frame de laizquierda.

    5VB6.qxd 12/7/00 5:35 PM Page 195

  • GUA VISUAL N 1

    196

    CAPTULO 5 - SERVIDORES DE BASES DE DATOS

    rbol de consola. Contiene todos los obje-tos administrables (desde grupos de servidoresy servidores registrados hasta tablas y vistas)organizados de forma jerrquica.

    Servidores registrados. Desde el adminis-trador se puede manejar ms de un nico ser-vidor, y se debe registrar cada uno.

    Bases de datos. Figuran todas las que seencuentran en un servidor determinado.

    Objetos que componen las bases de datos.Se incluyen diagramas, tablas, vistas, procedimientos, usuarios, funciones, reglas, va-lores predeterminados y tipos de datos personalizados.

    Barra de descripcin. Brinda informacinadicional sobre el conjunto de objetos del fra-me de detalle.

    Menes estndar. Abarcan las opcionesdependientes de Accin y Ver.

    Botones estndar. Incluyen flechas paraavanzar y retroceder (estilo Internet Explorer),para subir un nivel, para mostrar u ocultar elrbol de la consola, para abrir la ventana depropiedades, para actualizar el contenido de laventana y para solicitar ayuda.

    Men de complementos. Es el que dependede la opcin Herramientas.

    Botones de complementos. Incluye botonespara crear un nuevo objeto (del tipo selecciona-do en el frame de la derecha), para ejecutar unasistente, para registrar un nuevo servidor, pa-ra crear una nueva base de datos, para esta-blecer un nuevo inicio de sesin y para agen-dar una tarea o trabajo (en ingls, job).

    5VB6.qxd 12/7/00 5:35 PM Page 196

  • Cuando se desea manejar, mediante el Administrador corporativo,un servidor SQL Server 7 instalado en una mquina remota, lo prime-ro que hay que hacer es registrar este servidor en el rbol de la conso-la (en cambio, cuando el servidor corre en forma local, aparece regis-trado automticamente ). Esta tarea es sumamente sencilla. En primerlugar, en el men Accin , se selecciona la opcin Nuevo registrode servidor SQL Server... . Con esto se iniciar el Asistente pa-ra registro de servidor SQL Server (Figura 1).

    . El Asistente para registro de servidor SQL Server da la posibilidad de anularlo para que en el futuro se pueda realizar esta tarea sin su ayuda.

    Cliqueando en el botn Siguiente de la primera pantalla del asis-tente aparece otra pantalla en la cual se debe ingresar el nombre delservidor que se desea registrar. ste debe haber sido previamente de-finido mediante la Herramienta de red de cliente de SQL Server 7, es-pecificando el protocolo de red a utilizar y dems parmetros de co-municacin (que el administrador de la red sabr indicar). Suponien-do que vamos a registrar un servidor denominado ADMINSUEL-DOS, en el cuadro de texto que encabeza la lista titulada Servidoresdisponibles deberamos ingresar este nombre si es que no figura enla lista y luego cliquear en Agregar > para que pase a la lista de Ser-vidores agregados(Figura 2). Si hubiera ms de un servidor disponi-ble, se podran registrar varios de una sola vez, pasndolos a la lista dela derecha antes de cliquear en Siguiente .

    197

    Visual Basic y SQL Server

    Serv

    idor

    es d

    e ba

    ses

    de d

    atos

    5

    5VB6.qxd 12/7/00 5:35 PM Page 197

  • . En un entorno de red donde se hayan definido mltiples servidores de basesde datos, la lista de la izquierda aparecer poblada por todos sus nombres; basta con

    elegir uno o ms y pasarlos a la lista de la derecha para efectuar su registro.

    Al proceder al siguiente paso, el asistente solicita el modo de auten-ticacin que se utilizar cada vez que se deba conectar al servidor. Laeleccin en este caso depende de las polticas de seguridad que se ha-yan establecido en la red. Pero generalmente (incluso en el caso deque el servidor corra localmente) se debe seleccionar la segunda op-cin, que indica que se utilice Autenticacin SQL Server , o sea, que elnombre de usuario y password que se empleen para conectarse a la ba-se se validarn contra la lista de usuarios habilitados por SQL Server(la otra opcin determina que se validen contra los usuarios habilita-dos por Windows NT).

    Hecho esto, se puede cliquear en Siguiente y pasar al prximopaso, en el cual se debe determinar si la conexin se har automti-camente con un nombre de usuario y password especficos o si stosse solicitarn cada vez que se haga la conexin. En caso de que se eli-ja la primera opcin, se puede optar por seleccionar el usuario SApor system administrator, se supone, sin password, que se define pordefecto en las instalaciones nuevas de SQL Server (Figura 3). Lgica-mente, si la base de datos requiere un mnimo de seguridad para evi-tar el acceso de usuarios no autorizados, la primera medida a tomar

    198

    CAPTULO 5 - SERVIDORES DE BASES DE DATOS

    5VB6.qxd 12/7/00 5:35 PM Page 198

  • consiste en crear un nuevo usuario con los mismos derechos que SA,pero con otro nombre y otra password, e inmediatamente eliminar elusuario SA.

    . Para bases de datos que no requieren un control estricto del acceso, convieneseleccionar la opcin de inicio automtico, y elegir SA como nombre de usuario (sin

    password) para loguearse siempre a la base con los mximos privilegios.

    En el paso siguiente hay que seleccionar un grupo de servidores ba-jo el cual se colocar el nuevo registro de servidor. Esta agrupacin estil en empresas que cuentan con gran cantidad de servidores reuni-dos por sectores (por ejemplo, Produccin, Ventas, Administracin,etc.). Salvo estos casos, se puede registrar el nuevo servidor bajo el gru-po que se crea por defecto; si no aparece ninguno, se puede crear ungrupo dndole el nombre que uno desee ( Figura 4).

    199

    Visual Basic y SQL Server

    Serv

    idor

    es d

    e ba

    ses

    de d

    atos

    5

    5VB6.qxd 12/7/00 5:35 PM Page 199

  • . La utilizacin de conjuntos de servidores cumple la nica funcin de facilitar la administracin en redes con gran cantidad de servidores agrupados

    por sectores.

    En la ltima pantalla del asistente se muestra la lista de servidoresa agregar y el botn Finalizar . Al cliquear en l, el asistente inten-tar registrar el o los servidores seleccionados. Puede que se produzcaun error durante el proceso de registracin. En la mayora de los ca-sos, el origen de la falla ser un problema en la especificacin de lasdirecciones de red y los protocolos a utilizar, y dems parmetros decomunicacin. Para solucionarlo, hay que recurrir a la Herramientade red de cliente y examinar la configuracin de la misma con ayudadel administrador de la red.

    Una vez registrado el servidor, se puede cliquear en el + a la iz-quierda del cono que lo representa en el rbol de la consola para des-plegar todos sus elementos. Luego, haciendo clic en el botn + a laizquierda de la carpeta Bases de datosaparecen todas las bases defini-das dentro de este servidor.

    El Administrador de servicios es una pequea aplicacin que per-manece activa en la Bandeja de conos de la barra de Tareas de Win-dows de la computadora donde est instalado SQL Server. Haciendodoble clic en este cono aparece la ventana del Administrador de ser-

    200

    CAPTULO 5 - SERVIDORES DE BASES DE DATOS

    5VB6.qxd 12/7/00 5:35 PM Page 200

  • vicios. En ella es posible seleccionar cualquiera de los servicios de SQLServer para ver su estado o para iniciarlo, detenerlo o ponerlo en pau-sa (Figura 5).

    . Mediante el cono del Administrador de servicios en la barra de Tareas seactiva la ventana del mismo. Una vez abierta, se puede utilizar para ver el estado de

    los servicios de SQL Server, as como iniciarlos, detenerlos o ponerlos en pausa.

    Normalmente, los servicios disponibles son el servidor de bases dedatos en s mismo (MSSQLServer), el coordinador de transaccionesdistribuidas (MSDTC) y el agente de SQL Server (SQLServerAgent).Basta con iniciar el servicio MSSQLServer para que estn disponiblestodas las bases del servidor.

    El Analizador de consultases una interfase desde la cual podr eje-cutar directamente cualquier instruccin o secuencia de instruccionesSQL contra una base de datos existente en cualquier servidor disponi-ble. Al entrar en el Analizador, se abre una pantalla previa que brindala posibilidad de establecer una conexin con un servidor ( Figura 6).

    201

    Visual Basic y SQL Server

    Serv

    idor

    es d

    e ba

    ses

    de d

    atos

    5

    5VB6.qxd 12/7/00 5:35 PM Page 201

  • . La ventana preliminar del Analizador de consultas permite elegir elservidor con el cual conectarse y la forma de autenticacin a utilizar.

    En ella se establece el nombre del servidor con el que se desea co-nectar y la informacin de autenticacin. En el caso de que el servidorest instalado localmente, en el campo del nombre habr que ingresar(local) ; luego, si no se elimin el usuario por defecto de la lista deusuarios de SQL Server, se puede colocar sa como nombre de iniciode sesin y dejar vaco el campo de contrasea.

    HAY QUE SABERLO

    BASES DE DATOS EN VISUAL BASICASEGRESE DE QUE EST CORRIENDOSi el servicio MSSQLServerno est levantado en la mquina correspondiente, el Ana-lizador de consultas no se podr conectar. Por lo tanto, antes de intentar conectarse, ase-grese mediante el Administrador de servicios de que el SQL Server est funcionando,ya sea en la mquina local o en una remota.Tambin es posible iniciar el servicio directamente desde el Administrador corporativo.

    Una vez conectado, el Analizador de consultas despliega su ventanaprincipal. En la siguiente gua visual se detallan los principales elemen-tos de esta ventana.

    202

    CAPTULO 5 - SERVIDORES DE BASES DE DATOS

    5VB6.qxd 12/7/00 5:35 PM Page 202

  • GUA VISUAL N 2

    203

    Visual Basic y SQL Server

    Serv

    idor

    es d

    e ba

    ses

    de d

    atos

    5

    Panel de edicin. En l se ingresan las se-cuencias de instrucciones SQL. Para ejecutarslo una parte de las instrucciones que figuranen este panel, basta con seleccionar esa por-cin antes de dar la orden de ejecucin.

    Paneles de resultados. Aqu aparecen losresultados de la consulta luego de la ejecucinde la misma, as como los mensajes que pudie-ran haber surgido en el proceso. Segn las op-ciones seleccionadas, los resultados puedenaparecer en forma de texto plano o en unacuadrcula, y puede mostrarse o no el plan deejecucin armado por SQL Server para resol-ver la consulta.

    Botones Nuevo , Abrir , Guardar y Bo-rrar . Con ellos se puede abrir una ventanacon una nueva consulta o una consulta existen-te, guardar el cdigo SQL o los resultados de laconsulta actual, y borrar la ventana de edicin

    de la consulta actual.Botn de modo de ejecucin y de opciones

    de presentacin. Permite determinar si los resul-tados se van a mostrar en forma de texto o enforma de grilla, y si se va a mostrar o no el plande ejecucin.

    Botn Analizar . Analiza el cdigo SQLde la consulta para ver si tiene errores. Equiva-le a presionar Ctrl + F5 .

    Botn Ejecutar . Inicia la ejecucin de laconsulta. Equivale a presionar F5.

    Botn Detener . Cuando una consulta esten proceso, este botn se activa, dando la po-sibilidad de parar la ejecucin. Equivale a pre-sionar Alt + Enter .

    Lista de bases de datos disponibles. Permi-te elegir la base de datos sobre la que se ejecu-tar la consulta.

    5VB6.qxd 12/7/00 5:35 PM Page 203

  • Para poner a prueba el Analizador de consultas, seleccione la basede datos Northwind (si no fue borrada, ya que es la base de datos deejemplo que se crea al instalar el servidor) y ejecute la siguiente ins-truccin:

    SELECT * FROM CUSTOMERS

    MS DATOS

    BASES DE DATOS EN VISUAL BASICA FALTA DE SQL SERVER...Si no cuenta con SQL Server pero tiene el Office 2000 Premium, igual podr aprovecharel motor de bases de datos de SQL Server, denominado MSDE (Microsoft Data Engine).Se instala a partir del primer CD de Office 2000 Premium, al ejecutar el programa Se-tupSQL.exede la carpeta SQL\X86\SETUP . Al emplear esta alternativa, no contar con el Administrador corporativo ni con el Ana-lizador de consultas, pero podr usar Access 2000 en su lugar. MSDE carece, adems,de algunas de las funcionalidades de replicacin de datos que tiene SQL Server.Para trabajar con una base de datos de SQL Server o MSDE desde Access, se debe ele-gir la opcin Nueva... del men Archivo en Access. Luego, en la ventana de opcio-nes para crear una nueva base de datos, seleccionar Proyecto (base de datosexistente) (Figura 7).

    . La opcin de crear un nuevo proyecto de Access con una base de datosexistente permite trabajar con una base en un servidor SQL Server o MSDE.

    204

    CAPTULO 5 - SERVIDORES DE BASES DE DATOS

    5VB6.qxd 12/7/00 5:35 PM Page 204

  • Luego se le debe asignar al proyecto un nombre cualquiera, que sealmacenar como un archivo con extensin adp. Hecho esto, aparecela ventana Propiedades de Data Link (Figura 8). En ella se es-tablece el nombre del servidor y la informacin de autenticacinigual que lo visto anteriormente para el Analizador de consultas deSQL Server, y se elige la base de datos con la que se va a trabajar.

    . Los datos solicitados para conectarse con un servidor SQL Server o MSDEsiempre son los mismos, sin importar desde dnde intente conectarse: nombre del

    servidor, informacin de autenticacin y base de datos a utilizar.

    Si tiene MSDE instalado localmente, puede colocar (local) comonombre de servidor, sa como nombre de usuario (sin password) y Northwind como la base de datos a utilizar. Recuerde que, para po-der establecer la conexin, el servicio debe estar activo (puede activar-lo con el Administrador de servicios, que viene incluido con MSDE aligual que con SQL Server).

    205

    Visual Basic y SQL Server

    Serv

    idor

    es d

    e ba

    ses

    de d

    atos

    5

    5VB6.qxd 12/7/00 5:35 PM Page 205

  • Luego de establecidos todos estos datos, podr comenzar a utilizarla base de datos seleccionada directamente desde Access. Encontrarque tiene varias de las funcionalidades bsicas tanto del Administradorcorporativo como del Analizador de consultas de SQL Server, lo cual secombina con las opciones que brinda normalmente Access para todaMDB. Por ejemplo, puede originar y modificar tablas, vistas y diagramasde bases de datos; crear, ejecutar y modificar stored procedures; realizar in-formes, formularios y pginas de acceso a datos, etc. (Figura 9).

    . Access combina la funcionalidad normal para sus bases nativas (MDB)como creacin de formularios, mdulos y pginas de acceso a datos con funciones

    propias del Administrador corporativo y Analizador de consultas de SQL Server.

    Utilizar la vista de datosVisual Basic 6 dispone de una herramienta, denominada vista Da-

    tos, que permite manipular bases de datos para crear o modificar dia-gramas, tablas, vistas y stored procedures. La herramienta se activa selec-cionando la opcin Ventana de la vista Datos del men Ver ,o bien cliqueando en el cono correspondiente de la barra de Herra-mientas estndar ( Figura 10).

    206

    CAPTULO 5 - SERVIDORES DE BASES DE DATOS

    5VB6.qxd 12/7/00 5:35 PM Page 206

  • . La ventana de la vista Datos brinda acceso a herramientas de desarrolloque actan directamente sobre la base de datos.

    Una vez abierta la ventana de la vista Datos, se deben crear vnculosde datos para las bases que se vayan a utilizar. Las alternativas en ma-teria de posibles fuentes de datos abarcan a toda aquella fuente quecuente con un proveedor OLE DB asociado. Esto incluye a las bases dedatos de Access (ya sea Access 2000 o anteriores), SQL Server (o MS-DE), Oracle, servicios OLAP y muchos ms, entre los que figuran to-das las alternativas que ofrece ODBC.

    Por ejemplo, supongamos que necesitamos crear un vnculo de da-tos para la base de ejemplo Northwind en un servidor SQL Server oMSDE. Para ello, primero cliqueamos en el cono correspondiente enla parte superior de la ventana de la vista Datos (Figura 11).

    . En la ventana de la vista Datos se pueden crear tantos vnculos de datoscomo se desee, incluso relacionados con distintas bases de datos, para tenerlos siempre

    a mano durante el desarrollo de un proyecto.

    207

    Visual Basic y SQL Server

    Serv

    idor

    es d

    e ba

    ses

    de d

    atos

    5

    5VB6.qxd 12/7/00 5:35 PM Page 207

  • Aparecer una ventana para configurar el vnculo de datos, tituladaPropiedades de Data Link , que es bastante similar a la quemuestra Access para crear una conexin con una base de MSDE o SQLServer. Esta ventana cuenta con dos secciones principales: Provee-dor y Conexin (las otras dos son irrelevantes en esta instancia).

    En la seccin Proveedor se debe seleccionar el proveedor OLE DBque se utilizar para la conexin. Para este caso particular, selecciona-mos Microsoft OLE DB Provider for SQL Server (Figura 12).

    . La ventana Propiedades de Data Link aparecer siempre quese desee establecer una conexin a bases de datos a travs de OLE DB.

    Luego pasamos a la segunda seccin, donde se ingresan los consa-bidos parmetros de conexin: nombre del servidor (ingresar (lo-cal) si est instalado en la mquina local), datos de autenticacin y ba-se de datos a utilizar. Una vez ingresados estos parmetros y probadala conexin, se puede cliquear en Aceptar para crear el vnculo dedatos. El paso siguiente consiste en darle un nombre a la nueva cone-xin, para lo cual se puede utilizar el mismo nombre de la base de da-tos a emplear (Figura 13).

    208

    CAPTULO 5 - SERVIDORES DE BASES DE DATOS

    5VB6.qxd 12/7/00 5:35 PM Page 208

  • . Una vez establecida la conexin con la base de datos, todos sus elementosaparecen en el entorno de Visual Basic de la misma manera en que se los ve en la

    herramienta propia de la base de datos en cuestin.

    A partir de entonces se pueden utilizar los signos + a la izquierdade cada nodo del rbol para expandir sus elementos. Por ejemplo, lasvistas. Al cliquear con el botn derecho en los elementos desplegadosaparecen distintos conjuntos de acciones posibles, que dependen de lanaturaleza del elemento. Para las vistas, por ejemplo, se ofrece la op-cin de abrirla (para ver su conjunto de resultados), modificarla, eli-minarla o examinar sus propiedades. Tambin se brinda la opcin deagregar un nuevo elemento del grupo elegido; ya sea una tabla, unavista, un stored procedureo un diagrama.

    MS DATOS

    BASES DE DATOS EN VISUAL BASICCOMO SI ESTO FUERA POCO...La vista Datos brinda, en algunos casos, una funcionalidad que ni siquiera se encuentraen el Administrador corporativo de SQL Server. El editor de stored procedureses unejemplo. La ventana del editor es bastante ms prctica que la que ofrece el Administra-dor corporativo (Figura 14), y da la posibilidad adicional de depurar el cdigo con eje-cucin paso a paso, seguimiento de variables, etc.

    209

    Visual Basic y SQL Server

    Serv

    idor

    es d

    e ba

    ses

    de d

    atos

    5

    5VB6.qxd 12/7/00 5:35 PM Page 209

  • . La ventana de edicin de stored proceduresque ofrece la vista Datos deVisual Basic 6 resulta bastante ms prctica que la que incluye el Administrador

    corporativo.

    Creacin de una base de datos en el servidorHasta ahora hemos visto ejemplos que utilizan la base de datos

    Northwind , que ya viene creada tanto en SQL Server como en MSDE. Nos falta ver cmo se hace para crear una base de datos enun servidor.

    La manera ms sencilla es utilizar el Administrador corporativo.Con esta herramienta, basta con seleccionar el nodo Bases de da-tos de cualquier servidor registrado en el rbol de la consola y lue-go ejecutar la opcin Nueva base de datos del men Accin .Con esto, aparecer una ventana de propiedades de la base de datosa crear. En ella, simplemente se indica el nombre de la nueva base, eltamao (en MB) que ocupar en disco, las restricciones de crecimien-to y las caractersticas del archivo a utilizar para registro de transaccio-nes (Figura 15).

    210

    CAPTULO 5 - SERVIDORES DE BASES DE DATOS

    5VB6.qxd 12/7/00 5:35 PM Page 210

  • . El Administrador corporativo de SQL Server slo requiere unos pocosparmetros para crear una nueva base de datos.

    Si no se cuenta con el Administrador corporativo (por ejemplo, encaso de que se utilice MSDE en vez de SQL Server), se puede utilizarAccess 2000 para crear la nueva base en el servidor. Con Access 2000habr que originar un proyecto para una base de datosnueva . Esta opcin es una de las que se muestran al elegir la opcinArchivo/Nueva... del men principal del programa.

    Luego de darle un nombre al proyecto, se inicia el Asistente paracreacin de bases de datos de Microsoft SQL Server (Figura 16). Enunos pocos y sencillos pasos, este asistente lo guiar en la tarea decrear una nueva base en el servidor.

    211

    Visual Basic y SQL Server

    Serv

    idor

    es d

    e ba

    ses

    de d

    atos

    5

    5VB6.qxd 12/7/00 5:35 PM Page 211

  • . El Asistente para creacin de bases de datos de Microsoft SQL Serverrecorre todos los pasos necesarios para cumplir la tarea de crear una nueva base de

    datos en un servidor SQL Server o MSDE.

    Otra opcin consiste en usar el servicio de transformacin de da-tos. Con esta herramienta podr crear una nueva base en el servidorcon la misma estructura y los mismos datos de una base preexistente,que puede provenir de otro servidor SQL Server o de un servidor deotra marca (DB/2, Informix, Oracle o Sybase), de una MDB de Ac-cess, de una base de datos Paradox, de un conjunto de archivos DBF,de un archivo de Excel o de archivos de texto plano, entre otras op-ciones. Esta utilidad se incluye tanto con SQL Server como con MSDE. En el men de Windows, normalmente figura como Impor-tar y exportar datos (Figura 17).

    212

    CAPTULO 5 - SERVIDORES DE BASES DE DATOS

    5VB6.qxd 12/7/00 5:35 PM Page 212

  • . El servicio de transformacin de datos figura entre las opciones del mende SQL Server como Importar y exportar datos .

    Para hacer un ejemplo que, de paso, nos servir para posterioresejercicios de este captulo, vamos a migrar la base de Access Video-club.mdb (utilizada en los ejercicios del captulo anterior) a una basede SQL Server o MSDE.

    Abra el Asistente para transformacin de datos, seleccionando laopcin Importar y exportar datos del men de Windows(en el grupo de programas Microsoft SQL Server 7 ). Sedesplegar la primera ventana del Asistente (Figura 18), que ex-plica cul es su funcin y permite cliquear en Siguiente parapasar al prximo paso.

    Migracin de una base de Access a SQL Server PASO A PASO

    213

    Visual Basic y SQL Server

    Serv

    idor

    es d

    e ba

    ses

    de d

    atos

    5

    5VB6.qxd 12/7/00 5:35 PM Page 213

  • .

    En la segunda ventana del Asistente se debe definir cul es el ori-gen de los datos para la transformacin. En la lista desplegable ti-tulada Origen seleccionamos la opcin Microsoft Access .Al hacer esto, el frameinferior de la ventana cambia para mostrarel conjunto de datos requeridos para acceder a la base de Access;o sea: Nombre de archivo , Nombre de usuario y Con-trasea (Figura 19). Dado que vamos a utilizar la base del ejer-cicio anterior, en el campo Nombre de archivo ingresamosC:\EjerVB\Videoclub\Videoclub.mdb , y dejamos vacoslos campos Nombre de usuario y Contrasea . Hecho esto,estamos en condiciones de cliquear en Siguiente .

    .

    214

    CAPTULO 5 - SERVIDORES DE BASES DE DATOS

    5VB6.qxd 12/7/00 5:35 PM Page 214

  • En el tercer paso se nos solicita el destino de los datos. Dado quela opcin por defecto Microsoft OLE DB Provider forSQL Server es la que usaremos, vamos a ingresar directamen-te la informacin solicitada en la parte inferior de la ventana; losconsabidos nombre de servidor y datos de autenticacin. La dife-rencia con las ocasiones anteriores en las que establecimos unaconexin con el servidor consiste en que esta vez le pediremosque nos conecte con una base nueva, no con una preexistente.Para hacer esto, en la lista desplegable titulada Base de datosseleccionamos la opcin (Figura 20).

    .

    Inmediatamente se abrir una ventana titulada Crear base dedatos (Figura 21). En ella al igual que en las opciones vistas an-tes para crear bases en el servidor se solicita el nombre para lanueva base y los tamaos iniciales de los archivos de datos y de re-gistro. Si bien estos tamaos son flexibles (es decir, SQL Serverexpandir los archivos a medida que le vayan quedando chicos),es bueno hacer una estimacin del tamao requerido en funcinde la suma de los tamaos de cada tabla, calculando el tamao deregistro y multiplicndolo por el nmero de registros en la tabla.A eso hay que agregarle un espacio prudencial para almacenarndices.

    215

    Visual Basic y SQL Server

    Serv

    idor

    es d

    e ba

    ses

    de d

    atos

    5

    5VB6.qxd 12/7/00 5:35 PM Page 215

  • Para el ejemplo que nos ocupa, ingrese Videoclub como nombrepara la nueva base, y asgnele un espacio de 5 MB para el archi-vo de datos y 1 MB para el archivo de registro. Es habitual asig-nar al archivo de registro (que contiene las transacciones en cur-so hasta el momento en que se les hace un commit) un 20 porciento del tamao establecido para los datos.

    .

    El paso siguiente consiste, simplemente, en decidir si se van a co-piar las tablas ntegras de la base de datos de origen o si se utili-zarn instrucciones SQL para definir los conjuntos de datos a mi-grar (Figura 22). En el primer caso, seleccione Copiar lastablas de la base de datos de origen .

    .

    216

    CAPTULO 5 - SERVIDORES DE BASES DE DATOS

    5VB6.qxd 12/7/00 5:35 PM Page 216

  • En este punto, el Asistente muestra las tablas existentes en la basede origen, y brinda la opcin de seleccionar aquellas que se deseemigrar. Seleccinelas todas. Ver que al hacerlo, se completan lasotras dos columnas de la grilla: Tabla de destino y Transformar .En la primera, el Asistente coloca nombres de tabla que coincidencon los de la base de origen. Tambin muestra un cono para ca-da tabla, que, si tiene una estrella en la esquina superior izquier-da, indica que la tabla se crear durante la migracin ( Figura 23).

    .

    En la columna Transformar aparecen botones con puntos sus-pensivos para cada tabla seleccionada. Si presiona cualquiera deellos, tendr la oportunidad de modificar la forma en que el asis-tente migrar los datos de la tabla correspondiente. Por ejemplo,puede deseleccionar ciertas columnas de ciertas tablas para queno se incluyan en la migracin, o hacer que se aplique una con-versin a un tipo de datos diferente para alguna columna. Peroen este ejemplo dejaremos las opciones de transformacin tal co-mo las infiere el Asistente.

    El asistente presenta, en esta anteltima pantalla, una serie de op-ciones referidas a qu hacer con la operacin de migracin. Semuestran dos frames, titulados Cuando y Guardar. En el prime-ro se ofrece la opcin de ejecutar la migracin inmediatamente oprogramarla en un paquete DTS (data transformation service, servicio

    217

    Visual Basic y SQL Server

    Serv

    idor

    es d

    e ba

    ses

    de d

    atos

    5

    5VB6.qxd 12/7/00 5:35 PM Page 217

  • de transformacin de datos) para una ejecucin posterior. En el se-gundo framese da la opcin de crear el paquete DTS, independien-temente de que la ejecucin sea inmediata o diferida ( Figura 24).En este caso, optaremos por ejecutar la operacin inmediatamente.

    .

    Por ltimo, el Asistente mostrar un resumen de las opciones se-leccionadas. Para iniciar la importacin de la base de Access enSQL Server, bastar con cliquear en Finalizar . Inmediatamen-te surgir una ventana que muestra los pasos de la migracin y elestado de progreso de cada uno (Figura 25).

    .

    218

    CAPTULO 5 - SERVIDORES DE BASES DE DATOS

    5VB6.qxd 12/7/00 5:35 PM Page 218

  • Elementos para programar desde la baseCon el fin de centralizar la lgica de las aplicaciones y los datos que

    stas emplean, los servidores de bases de datos brindan utilidades deprogramacin para llevar a cabo procesos de fondo, que no necesitaninteraccin con el usuario. Siempre que sea posible, es conveniente re-solver las necesidades de una aplicacin implementando procesos queson ejecutados directamente por el servidor de bases de datos, puestoque de este modo se efectan mucho ms rpidamente. Adems, al es-tar centralizados en el servidor, resulta ms fcil modificarlos, ya quese hace una sola vez, sin necesidad de crear nuevas versiones de la apli-cacin e instalarlas a cada usuario.

    Para programar directamente sobre la base de datos, hay que domi-nar los siguientes conceptos: (procedimientos almace-nados), (desencadenadores) y (reglas).

    Stored proceduresLos (procedimientos almacenados) son secuencias

    de instrucciones SQL que se almacenan como un objeto ms de losque conforman la base de datos, y se ejecutan como una unidad. Se lospuede invocar desde un intrprete de comandos SQL (como el Anali-zador de consultas de SQL Server 7), desde cualquier aplicacin conacceso a la base de datos o desde otro procedimiento almacenado.

    Las bases de datos precompilan los procedimientos almacenados almomento de crearlos o modificarlos, de modo tal de no tener que in-terpretar sus instrucciones cada vez que se los ejecuta. De este modo,siempre es ms rpido invocar un procedimiento almacenado que eje-cutar la misma secuencia de instrucciones del procedimiento desde unintrprete de comandos o desde un programa en Visual Basic.

    Al igual que los procedimientos de cualquier lenguaje de progra-macin, los procedimientos almacenados de las bases de datos admi-ten parmetros de entrada y de salida. Pero, adems, en algunas basesde datos como SQL Server, un procedimiento almacenado tambinpuede devolver el resultado de una consulta, en forma de datos orga-nizados en filas y columnas, como si se la ejecutara directamente. Esteresultado puede ser obtenido como un recordset de ADO si se invocael procedimiento desde Visual Basic, o bien visualizado en la ventanade resultados del intrprete de comandos.

    En este sentido, un procedimiento almacenado estara actuando de

    219

    Elementos para programar desde la base

    Serv

    idor

    es d

    e ba

    ses

    de d

    atos

    5

    5VB6.qxd 12/7/00 5:35 PM Page 219

  • manera similar a una vista, puesto que ambos devuelven conjuntos deresultados. Sin embargo, el procedimiento almacenado puede utilizarsus parmetros de entrada para definir la consulta a ejecutar, cosa queuna vista no puede hacer, ya que en general las vistas no admiten pa-rmetros (Access rompe esta regla en cierto modo, porque las consul-tas de Access s admiten parmetros).

    MS DATOS

    BASES DE DATOS EN VISUAL BASICPROCEDIMIENTOS ALMACENADOS EN ORACLEEn PL-SQL la implementacin de SQL de Oracle los procedimientos almacenados nodevuelven un conjunto de resultados. nicamente interactan con su entorno medianteparmetros de entrada y salida. La nica forma de obtener conjuntos de resultados enforma de recordsets (filas y columnas) es a travs de las vistas. Pero para evitar la rigi-dez de las vistas, que no aceptan parmetros que modifiquen su comportamiento, Ora-cle admite la definicin de funciones.Al igual que en cualquier lenguaje de programacin, las funciones son anlogas a losprocedimientos, excepto que devuelven un nico valor obtenido de acuerdo con sus pa-rmetros de entrada. Y, a diferencia de los procedimientos almacenados, las funcionespueden invocarse desde una instruccin SELECT, e incluso desde una vista.Esto les da una gran flexibilidad a las vistas, y compensa el hecho de que los procedi-mientos almacenados no devuelvan conjuntos de resultados. Lgicamente, esto tambinobliga a observar la programacin que se realizar sobre la base con una filosofa di-ferente de la de SQL Server u otras bases de datos.Por ejemplo, imaginemos un sistema de cuentas corrientes en el que se debe definir unlistado de saldos. En Oracle, se podra establecer una funcin SaldoDeCuenta que re-cibiera, como parmetro de entrada, un cdigo de cuenta, y devolviera el saldo actualcalculndolo mediante operaciones con los datos de varias tablas. Luego se podra defi-nir una vista con la siguiente instruccin SQL (suponiendo una tabla Cuentascon el c-digo de la cuenta y el nombre de la misma):

    CREATE VIEW ListadoDeSaldosASSELECT CodigoCuenta, Nombre, SaldoDeCuenta(CodigoCuenta)FROM CUENTAS

    Luego, si se desea acotar el listado por ejemplo a los cdigos de cuenta mayores oiguales que 100 y menores o iguales que 200, se puede utilizar la vista con la siguienteinstruccin:

    SELECT *FROM ListadoDeSaldosWHERE CodigoCuenta > 100 AND CodigoCuenta < 200

    220

    CAPTULO 5 - SERVIDORES DE BASES DE DATOS

    5VB6.qxd 12/7/00 5:35 PM Page 220

  • En SQL Server, en cambio, habra que definir un procedimiento almacenado que recibacomo parmetro el rango de cdigos que se desea listar. El procedimiento que tambinpodra llamarse ListadoDeSaldos se encargara de recorrer la tabla Cuentaspara elrango solicitado, calculando el saldo para cada una y armando el listado en una tablatemporaria para devolverlo como un conjunto de resultados. La invocacin al mismo des-de una instruccin SQL, para el mismo rango de cuentas del ejemplo anterior, sera la si-guiente:

    ListadoDeSaldos 100, 200

    Para ilustrar el uso de procedimientos almacenados, vamos a crearuno en la base de datos Videoclub, que arrojar un detalle de los al-quileres registrados en la base, con el nombre del cliente que efectucada alquiler y la pelcula rentada.

    Entre en Visual Basic 6, sin abrir ningn proyecto. Active la ven-tana de la vista Datos. Agregue una conexin a la base de datosVideoclub en el servidor SQL Server donde la haya importado(Figura 26).

    .

    Cliquee con el botn derecho del mouse en la carpeta Procedi-mientos almacenadosy, en el men contextual, seleccione la op-

    Creando un stored procedure PASO A PASO

    221

    Elementos para programar desde la base

    Serv

    idor

    es d

    e ba

    ses

    de d

    atos

    5

    5VB6.qxd 12/7/00 5:35 PM Page 221

  • cin Nuevo procedimiento almacenado . Aparecer unaventana de edicin de procedimientos, con la estructura bsicapara crear uno nuevo (Figura 27).

    .

    Modifique el cdigo del procedimiento, reemplazando el nombredel mismo (StoredProcedure1, a la derecha de la instruccinCreate Procedure ) por ListadoAlquileres . Luego elimi-ne los smbolos que delimitan comentarios ( /* y */ ). El resul-tado hasta aqu debera quedar como muestra la Figura 28.

    .

    222

    CAPTULO 5 - SERVIDORES DE BASES DE DATOS

    5VB6.qxd 12/7/00 5:35 PM Page 222