SQLMax Connections
¿QUIENES SOMOS?

MS-SQL Server
Características
La mejor Base de Datos
DESARROLLOS
CON SQL

Utilitario ESQL
Tutorial de ASP
Seguridad en IIS
ARTICULOS VARIOS
Buscar txt en los SP
Asegurar los Datos
Ajuste RDBMS
Reporting Services
Funciones en SQL
Optimización de SQL
Administración MMC
Transformación DTS
Config. de memoria
Data WareHouse
Procedimientos no documentados
ADMINISTRACION
Configuración de SQL
Utilitarios de
Administración

RECURSOS
Listas de Correo
Foro de SQL
Foro de ASP
Foro de DW
Codigos de Ejemplo

Tutorial de ASP (4ª parte)

Manejo de consultas con el Objeto COMMAND

Con el objeto Command de ADO puede ejecutar consultas de la misma forma que con los objetos Connection y Recordset, excepto en que con el objeto Command puede preparar, o compilar, la consulta con el origen de la base de datos y después enviar la misma consulta repetidamente con distintos valores. La ventaja de compilar consultas de esta manera consiste en la enorme reducción del tiempo necesario para volver a enviar las modificaciones de una consulta existente. Además, puede dejar las consultas SQL parcialmente indefinidas, con la posibilidad de alterar partes de las consultas justo antes de su ejecución.

La colección Parameters del objeto Command le ahorra los problemas de tener que volver a construir la consulta cada vez que tenga que ejecutarla. Por ejemplo, si tiene que actualizar periódicamente la información de suministros y costos en un sistema de inventario Web, puede predefinir su consulta de la siguiente manera:

<%  
 'Abre una conexión mediante el objeto Command del objeto 
'Connection no tiene un método Open para establecer
'la conexión strDSN = "FILEDSN=MiBaseDeDatos.dsn" Set cn = Server.CreateObject("ADODB.Connection") cn.Open strDSN 'Crea el objeto Command; utiliza la propiedad
'ActiveConnection para 'adjuntar la conexión al objeto Command Set cm= Server.CreateObject("ADODB.Command") Set cm.ActiveConnection = cn 'Define laconsulta SQL cm.CommandText = "INSERT INTO Inventory (Material, Quantity) VALUES (?, ?)" 'Guarda una versión preparada (o precompilada) de la consulta < BR > 'especificada en la propiedad 'CommandText antes de la primera ejecución del objeto Command. cm.Prepared = True 'Define la información de configuración 'de los parámetros de la consulta cm.Parameters.Append cm.CreateParameter("material_type",200,,255) cm.Parameters.Append cm.CreateParameter("quantity",200, ,255 ) 'Define y ejecuta la primera inserción cm("material_type") = "Bombillas" cm("quantity") = "40" cm.Execute 'Define y ejecuta la segunda inserción cm("material_type") = "Fusibles" cm("quantity") = "600" cm.Execute %>

Si examina el ejemplo anterior, observará que la secuencia de comandos vuelve a construir repetidamente y envía una consulta SQL con distintos valores, sin tener que volver a definir y enviar la consulta al origen de datos. Compilar consultas con el objeto Command también le ofrece la ventaja de evitar los problemas que pudieran provenir de concatenar cadenas y variables para formar consultas SQL.

En particular, si utiliza la colección Parameter del objeto Command puede evitar problemas relacionados con la definición de ciertos tipos de variables de cadenas, fechas y horas. Por ejemplo, los valores de las consultas SQL que contengan apóstrofos (') pueden hacer que la consulta falle:

  strSQL = "INSERT INTO Customers (FirstName, LastName) " & _
                " VALUES ('Roberto','O'Hara')"    

Observe que el apellido O'Hara contiene un apóstrofo que entra en conflicto con los apóstrofos que se utilizan como delimitadores de datos en la palabra clave VALUES de SQL. Si enlaza el valor de la consulta como un parámetro del objeto Command, se evitan este tipo de problemas.

 Manejo de conexiones a Bases de Datos

Uno de los mayores retos del diseño de una aplicación Web sofisticada de base de datos, como una aplicación de entrada de pedidos en línea que atienda a miles de clientes, es la correcta administración de la conexiones con la base de datos. Abrir y mantener las conexiones con las bases de datos, incluso cuando no se transmita información, puede afectar severamente a los recursos del servidor de base de datos y provoca problemas de conectividad.

Las aplicaciones Web de bases de datos bien diseñadas reciclan las conexiones con la base de datos y compensan los retrasos debidos al tráfico de la red. 

Abandonar los intentos de conexión

Un servidor de base de datos que experimente un repentino incremento en su actividad puede quedar saturado en sus conexiones, lo que incrementa considerablemente el tiempo necesario para establecer una nueva conexión. Como resultado, los retrasos excesivos en la conexión pueden reducir el rendimiento de su aplicación de base de datos.

Con la propiedad ConnectionTimeout del objeto Connection puede limitar la cantidad de tiempo que su aplicación espera antes de abandonar un intento de conexión y emitir un mensaje de error.

Por ejemplo, la siguiente secuencia de comandos establece la propiedad ConnectionTimeout para esperar veinte segundos antes de cancelar el intento de conexión:

Set cn = Server.CreateObject("ADODB.Connection")
cn.ConnectionTimeout = 20
cn.Open "FILEDSN=MiBaseDeDatos.dsn"

El valor predeterminado de la propiedad ConnectionTimeout es 30 segundos.

Nota Antes de incorporar la propiedad ConnectionTimeout a sus aplicaciones de bases de datos, asegúrese de que su proveedor de conexiones y el origen de datos acepten esta propiedad. 

Aceptar conexiones

Las aplicaciones Web de bases de datos que establecen y terminan con frecuencia conexiones con bases de datos pueden reducir el rendimiento del servidor de base de datos.

ASP acepta la eficiente administración de las conexiones que se consigue mediante la función de agrupamiento de conexiones de ODBC 3.5. El agrupamiento de conexiones mantiene abiertas las conexiones con las bases de datos y administra el uso compartido de las conexiones entre distintas peticiones de usuario para mantener el nivel de rendimiento y reducir el número de conexiones inactivas.

En cada petición de conexión, el conjunto de conexiones determina si hay alguna conexión inactiva en el conjunto. Si es así, el conjunto de conexiones devuelve una de ellas en lugar de establecer una nueva conexión con la base de datos.

Si desea que su controlador ODBC participe en el conjunto de conexiones, debe configurar su controlador específico de base de datos y después establecer la propiedad CPTimeout del controlador en el registro del sistema de Windows NT.

Cuando ODBC desconecta una conexión, la conexión se guarda en un conjunto, en lugar de desconectarse.

La propiedad CPTimeout determina el periodo de tiempo de inactividad que una conexión puede permanecer en el conjunto de conexiones. Si la conexión permanece en el conjunto durante un periodo de tiempo mayor que el establecido en CPTimeout, la conexión se cierra y se quita el conjunto. El valor predeterminado de CPTimeout es 60 segundos.

Puede establecer selectivamente la propiedad CPTimeout para permitir el agrupamiento de conexiones por cada controlador específico de base de datos ODBC si crea una entrada en el registro del sistema con los siguientes valores:

\HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\controlador
\CPTimeout = timeout 
 (REG_SZ, en segundos)

Por ejemplo, la clave siguiente establece el tiempo de inactividad del conjunto de conexiones a 180 segundos (3 minutos) para el controlador de SQL Server.

\HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\SQL Server\CPTimeout = 180

Nota De forma predeterminada, su servidor Web activa el conjunto de conexiones para SQL Server y asigna a CPTimeout 60 segundos.

<-- Parte 3 

 



Acceso al
Centro de Entrenamiento

Google


© 2001- RealITech - Todos los derechos reservados
Microsoft, Visual Basic, MSDN, ActiveX, Visual C++, Visual FoxPro, Visual InterDev, Visual Studio, Win32, MS SQL Server, BackOffice, JScript, SBS (Small Business Server), Developer Studio, Windows y Windows NT son marcas registradas por Microsoft Corporation en Estados Unidos y otros países.

Diseño multimedia