CAPÍTULO 8
Publicación de información y de aplicaciones
Internet Information Server puede publicar tanto información como aplicaciones. Esto quiere decir que su sitio Web puede contener desde páginas estáticas de información hasta aplicaciones interactivas. También puede buscar y extraer información de bases de datos e insertar información en las mismas.
En este capítulo se explica cómo:
Para crear archivos HTML, que pueden incluir vínculos con otros archivos del sistema, use un editor HTML o cualquier otro sistema. Si desea incluir imágenes o sonidos, también necesitará el software apropiado para crear y modificar dichos archivos.
Una vez que haya creado la información en formato HTML o en otros formatos, puede copiarla al directorio predeterminado InetPub\Wwwroot, o bien puede cambiar el directorio particular predeterminado por el directorio que contenga su información.
Para configurar asociaciones MIME adicionales, inicie el Editor del Registro (Regedt32.exe) y abra
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters\MimeMap
Agregue el valor REG_SZ de la asociación MIME necesaria en su equipo con la siguiente sintaxis:
<tipo MIME>,<extensión de archivo>,<parámetro no
usado>,<tipo gopher>
Por ejemplo:
text/html,htm,/unused,1
image/jpeg,jpeg,/unused,5
La cadena asociada con el valor (es decir, el contenido del valor) debe estar en blanco. La entrada predeterminada con la extensión de archivo asterisco (*) es el tipo MIME predeterminado que se usa cuando no existe ninguna asociación MIME. Por ejemplo, para administrar una petición del archivo Current.vgr cuando la extensión .vgr no se ha asociado a un tipo MIME, el equipo usará el tipo MIME especificado para la extensión *, que es el tipo usado para datos binarios. Normalmente, esto hace que los exploradores guarden el archivo en el disco.
El formato de la instrucción Include es la siguiente:
<!--#include file="valor"-->
El valor tiene que contener una ruta relativa o la ruta completa, desde el directorio particular del servicio WWW.
Por ejemplo, para incluir un vínculo con la página principal en todos los documentos HTML:
<A HREF="/homepage.htm"><IMG
SRC="/images/button_h.gif"></A>
La utilización de archivos .stm puede afectar al rendimiento. Por tanto, se recomienda utilizar dicha extensión sólo cuando sea absolutamente necesario.
Puede volver a: <!--#include file="/linkhome.htm"--> en cualquier
momento
Las aplicaciones que usan ISAPI se compilan como bibliotecas de vínculos dinámicos (DLL) que el servicio WWW carga al iniciarse. Como los programas residen en memoria, los programas ISAPI son considerablemente más rápidos que las aplicaciones escritas con la especificación CGI.
ISAPI se puede usar para crear aplicaciones que se ejecuten como DLL en su servidor Web. Si ha utilizado archivos de comandos CGI anteriormente, encontrará que las aplicaciones ISAPI tienen un mejor rendimiento porque se cargan en memoria durante la ejecución del servidor. Requieren menos tiempo de espera porque cada petición no inicia un proceso distinto.
Otra característica de ISAPI permite el preprocesamiento de peticiones y el postprocesamiento de respuestas, permitiendo la administración de peticiones y respuestas con el Protocolo de transferencia de hipertexto (HTTP) que sean específicas del sistema. Puede usar filtros ISAPI en aplicaciones como autentificaciones personalizadas, accesos o registros.
Pueden crear sistemas muy complejos usando filtros y aplicaciones ISAPI. También puede combinar extensiones ISAPI con el Conector de bases de datos de Internet para crear sitios altamente interactivos.
Para obtener información completa acerca de la programación con ISAPI, consulte Microsoft Win32 BackOffice Software Development Kit (SDK), disponible en MSDN. Para obtener más información acerca de cómo obtener el SDK de ISAPI, consulte el capítulo introductorio de esta guía, “Antes de empezar”.
Microsoft Internet Information Server puede usar la mayoría de las aplicaciones de 32 bits que se ejecuten en Windows NT y cumplan las especificaciones CGI.
La siguiente ilustración muestra cómo intercambian información un explorador, un servidor y una aplicación CGI utilizando CGI. El resto de esta sección trata sobre este proceso que consta de cinco partes.
GET
POST
El cliente inicia un proceso CGI haciendo clic en cualquiera de
los elementos siguientes de una página HTML:
.pl: REG_SZ: C:\RESKIT\PERL\BIN\PERL.EXE %s %s
Donde
2. A continuación de las directivas del servidor debe haber una línea en blanco.
3. Los datos que la aplicación devuelve al cliente siguen a la línea en blanco.
Para obtener más información acerca de CGI, consulte las especificaciones de CGI en http://hoohoo.ncsa.uiuc.edu/cgi/.
Recomendamos encarecidamente que configure la asignación de archivos de comandos, ya que ésta garantiza que se inicie el intérprete correcto (por ejemplo, Cmd.exe) cuando un cliente solicita un archivo ejecutable.
A los directorios de contenido de World Wide Web sólo hay que asignarles permiso de Lectura. Aquellos archivos ejecutables cuya finalidad sea descargarlos desde las unidades con el Sistema de archivos de Windows NT (NTFS) sólo deben tener permiso de Lectura.
Es posible ejecutar archivos por lotes como archivos ejecutables CGI, aunque debe hacerlo como mucho cuidado para que el servidor no sufra ningún daño.
Nota Los archivos ejecutables de CGI también pueden tener las extensiones de archivo .exe o .cgi.
Por ejemplo, para asegurar el IDC sin poner permisos en el archivo .idc, puede otorgar permiso de Ejecución de NTFS para Inetsrv\Httpodbc.dll a los usuarios adecuados. Httpodbc.dll es el nombre de la DLL de la aplicación ISAPI que implementa el IDC. Posteriormente, cada vez que un usuario intente ejecutar el IDC, el servidor comprobará los permisos y sólo se permitirá el acceso a aquellos usuarios que dispongan de permiso de Ejecución.
Nota Tras cargar una aplicación ISAPI, ésta permanece cargada hasta que el servicio WWW se detiene. Una vez que la aplicación ISAPI se ha cargado, Internet Information Server no realiza un seguimiento de los cambios del descriptor de seguridad. Si cambia los permisos para una aplicación ISAPI después de haberse cargado, tendrá que detener y reiniciar el servicio WWW antes de que dicho cambio surta efecto.
Tenga cuidado a la hora de definir las Listas de control de acceso (ACL) del directorio Winnt y sus subdirectorios. Algunas aplicaciones y bases de datos ISAPI requieren acceso a algunos archivos y DLL de estos directorios.
Nota Las DLL de las aplicaciones ISAPI pueden tener la extensión de archivo .dll o .isa.
También tiene que asegurarse de que cualquier proceso iniciado por la aplicación se ejecuta usando una cuenta con los permisos correctos. Si la aplicación interactúa con otros archivos, la cuenta asignada al programa debe disponer de los permisos necesarios para usar dichos archivos. De forma predeterminada, las aplicaciones se ejecutan usando la cuenta IUSR_nombreequipo, que debe tener permisos de Administrador y Ejecución para los archivos de la aplicación.
Un vínculo HTML con una aplicación que no requiera que el usuario escriba datos podría ser como el siguiente ejemplo:
http://www.organizacion.com/scripts/catalogo.exe
donde Scripts es el directorio virtual para aplicaciones interactivas.
Si va a crear una aplicación que requiera que el usuario escriba datos, tiene que conocer los formularios HTML y cómo usarlos con ISAPI o con CGI. Puede encontrar esta información en Internet y en otros lugares.
Extensión | Intérprete predeterminado |
.bat, .cmd | Cmd.exe |
.idc | Httpodbc.dll |
.exe, .com | System |
En primer lugar, el directorio virtual Scripts contiene las aplicaciones y está marcado como directorio de aplicaciones. Sólo un administrador puede agregar programas a un directorio marcado como directorio de aplicaciones. Así, los usuarios no autorizados no pueden copiar y ejecutar un programa con malas intenciones en su PC sin tener privilegios de administrador.
Es recomendable que otorgue permiso de Lectura y Ejecución a la cuenta IUSR_nombreequipo del directorio asociado a la carpeta virtual y sólo otorgue Control total al administrador. Los archivos de comandos de Perl (extensión de archivo .pl) y los archivos IDC (extensiones de archivos .idc y .htx) necesitan permiso de Lectura y Ejecución. No obstante, para evitar que alguien instale algún archivo poco seguro en su servidor, no otorgue permiso de Escritura.
En segundo lugar, si el servicio WWW se ha configurado para permitir sólo inicios de sesión anónimos, todas las peticiones de los usuarios remotos usarán la cuenta IUSR_nombreequipo. De forma predeterminada, la cuenta IUSR_nombreequipo no puede eliminar o modificar archivos usando el Sistema de archivos de Windows NT (NTFS) a menos que el administrador le haya dado permiso para ello de manera específica. Así, incluso si se hubiera introducido un programa malintencionadamente en su PC, no podría provocar muchos daños en su contenido porque sólo tendría acceso de IUSR_nombreequipo al equipo y a los archivos.
Los exploradores de Web (como Internet Explorer o los exploradores de otros fabricantes como Netscape) remiten peticiones al servidor Internet usando HTTP. El servidor Internet responde con un documento en formato HTML. El acceso a las bases de datos se realiza mediante un componente de Internet Information Server llamado Conector de bases de datos de Internet (IDC). El Conector de bases de datos de Internet, Httpodbc.dll, es una DLL ISAPI que utiliza ODBC para tener acceso a las bases de datos.
La siguiente ilustración muestra los componentes de Internet Information Server para conectar con las bases de datos.
El IDC utiliza dos tipos de archivos para controlar la forma de acceso a la base de datos y el modo en que se construye la página Web de salida. Dichos archivos son archivos del Conector de bases de datos de Internet (.idc) y archivos de extensión HTML (.htx).
Los archivos del Conector de bases de datos de Internet contienen la información necesaria para conectar con el origen de datos ODBC adecuado y ejecutar la instrucción SQL. Además, contienen el nombre y la ubicación del archivo de extensión HTML.
El archivo de extensión HTML constituye la plantilla para el documento HTML real que se devolverá al explorador de Web cuando el IDC haya combinado su información con la base de datos.
Los DSN del sistema se introdujeron en la versión 2.5 de ODBC para permitir que los servicios de Windows NT usaran ODBC.
2. Haga clic en el botón Aceptar.
3. Haga clic en el botón Agregar/Eliminar.
4. Haga clic en el botón Aceptar.
5. Seleccione la opción Administración y controladores ODBC.
6. Haga clic en el botón Aceptar.
7. Aparecerá el cuadro de diálogo Instalar controladores.
8. Para instalar el controlador de SQL Server, seleccione el controlador SQL Server en el cuadro de lista Controladores ODBC disponibles y haga clic en el botón Aceptar.
2. Haga doble clic en el icono ODBC.
Puede que en la lista haya otros orígenes de datos si hubiera instalado otros controladores ODBC anteriormente.
6. Escriba el nombre del origen de datos.
Para Microsoft SQL Server, el nombre del servidor, la dirección de red y la biblioteca de red mostrados son específicos de su instalación. Si no sabe lo que tiene que escribir en estos controles, acepte los valores predeterminados. Para conocer los detalles, haga clic en el botón Ayuda y vaya a la sección que describa su red.
9. Haga clic en el botón Cerrar para cerrar el cuadro de diálogo Orígenes de datos.
10. Haga clic en el botón Aceptar para terminar la instalación de ODBC y de DSN.
La ilustración siguiente muestra Dbsamp1.htm tal como aparece en Microsoft Internet Explorer (suponiendo que Internet Information Server se ha instalado en un equipo llamado “servidorweb”).
Cuando se hace clic en el vínculo “Haga clic aquí para ejecutar la consulta”, se envía al servidor otra dirección URL. La dirección URL precede al texto del vínculo (tiene formato de texto oculto):
<A HREF="http://servidorweb/samples/dbsamp/dbsamp1.idc">Haga clic
aquí para ejecutar la consulta</A>
En la dirección URL ya se ha hecho referencia al archivo del Conector de bases de datos de Internet que va a utilizar el IDC (Dbsamp1.idc). La asignación de un archivo de extensión hace innecesario que se haga referencia a Httpodbc.dll en la dirección URL.
En Internet Information Server, todo el proceso de utilizar el Conector de bases de datos de Internet para este ejemplo se realiza en seis pasos, tal como se muestra en el siguiente diagrama.
campo: valor
Origen de datos: Web SQL
Plantilla: sample.htx
Origen de datos: Web SQL
Nombre de usuario: sa
Plantilla:
sample.htx
Instrucción SQL:
+SELECT au_lname, ytd_sales
+ from
pubs.dbo.titleview
+ where ytd_sales>5000
Los demás elementos contenidos en el archivo .idc de ejemplo incluyen:
La instrucción SQL de Sample.idc devuelve los apellidos de todos los autores y las ventas del año hasta la fecha, en unidades, de la base de datos de ejemplo “pubs” de SQL Server para aquellos autores cuyos libros tengan unas ventas anuales de más de 5000 dólares.
La página Web resultante de este proceso aparece en Microsoft Internet Explorer como se muestra a continuación.
El archivo .htx es un documento HTML con algunas etiquetas adicionales que van entre <%%> o <!--%%-->, que el archivo .idc utiliza para agregar datos dinámicos al documento. El formato HTML del archivo .htx suele dar formato a los datos que se devuelven. Hay seis palabras claves (begindetail, enddetail, if, else, endif y “%z”) que controlan la forma en que se combinan los datos de la base de datos y el formato HTML en el archivo .htx. Los nombres de las columnas de la base de datos especifican cuáles son los datos que se devuelven en el documento HTML. Por ejemplo, la línea siguiente de un archivo .htx combina datos de la columna Nombrecorreoelectrónico de todos los registros procesados:
<%begindetail%><%Nombrecorreoelectronico%><%enddetail%>
El archivo Sample.htx es un documento HTML que contiene etiquetas del Conector de bases de datos de Internet para los datos devueltos por la base de datos (por motivos de claridad, las etiquetas aparecen en negrita). Para resaltar las etiquetas del IDC se ha eliminado una parte del formato HTML.
Para que el ejemplo sea más claro, se ha eliminado casi todo el formato HTML.
<HTML>
<BODY>
<HEAD><TITLE>Autores y ventas
anuales</TITLE></HEAD>
<%if idc.sales eq ""%>
<H2>Autores con ventas superiores a<I>5000</I></H2>
<%else%>
<H2> Autores con ventas superiores
a<I><%idc.sales%></I></H2>
<%endif%>
<P>
<%begindetail%>
<%if CurrentRecord EQ 0
%>
Resultados de la consulta:
<B>Ventas anuales del
autor<BR></B>
<%endif%>
<%au_lname%><%ytd_sales%>
<%enddetail%>
<P>
<%if CurrentRecord EQ 0
%>
<I><B>Ninguno de los autores tiene unas ventas anuales
superiores a </I><%idc.sales%>.</B>
<P>
<%else%>
<HR>
<I>
La página Web que verá aquí se creó combinando
los resultados de la consulta SQL y el archivo de plantilla Sample.htx.
<P>
La combinación la realizó el Conector de bases de datos de
Internet de Microsoft y Microsoft Internet Information Server devolvió los
resultados a este explorador de Web.
</I>
<%endif%>
</BODY>
</HTML>
Las secciones <%begindetail%> y <%enddetail%> delimitan el lugar del documento donde aparecerán las filas devueltas por la base de datos. Las columnas devueltas por la consulta aparecerán rodeadas por <%%>; en este ejemplo son <%au_lname%> y <%ytd_sales%>.
Por ejemplo, en la última sección, la consulta de Sample.idc sólo ha devuelto aquellos autores cuyas ventas anuales superan 5000. Utilizando un parámetro, podría crear una página Web que preguntara al usuario si desea cambiar el número 5000.
La página Web debe solicitar al usuario la cifra de ventas anuales y, a continuación, dar el nombre “sales” a la variable asociada. Dbsamp2.htm muestra un formulario con un campo de entrada que se utiliza para obtener el número:
La sintaxis del campo de entrada y el botón de Sample2.htm en formato HTML es la siguiente:
<FORM METHOD="POST" ACTION="/scripts/samples/sample2.idc">
<P>
Escriba las ventas anuales hasta la fecha: <INPUT
NAME="sales" VALUE="5000" >
<P>
<INPUT TYPE="SUBMIT"
VALUE="Ejecutar consulta">
</FORM>
SQLStatement:
+SELECT au_lname, ytd_sales
+ from
pubs.dbo.titleview
+ where ytd_sales > %sales%
El signo de porcentaje (%) es también un carácter comodín de SQL. Los comodines se utilizan en las consultas SQL para buscar un elemento de una tabla que contenga determinados caracteres. Para insertar un único signo “%” en un comodín SQL, utilice “%%”. Esto evita que el IDC intente utilizar % como marcador de parámetro. Por ejemplo:
Instrucción SQL:
+SELECT au_lname, ytd_sales, title
+ from
pubs.dbo.titleview
+ where title like '%%%título%%%'
Para que un signo de porcentaje se reconozca como un comodín de SQL debe especificarlo dos veces y, a continuación, agregar los caracteres de porcentaje alrededor del parámetro para distinguir la cadena como parámetro. En el ejemplo, la consulta busca la palabra título en todas las entradas de la columna de títulos. Esta consulta devuelve lo siguiente:
título
título y hecho
página del título
principal
autor y título
Para devolver todas las entradas que contienen la palabra título en las seis primeras letras, debe dar el siguiente formato a las consultas:
Instrucción SQL:
+SELECT au_lname, ytd_sales, title
+ from
pubs.dbo.titleview
+ where title like '%título%%%'
En este ejemplo se devuelven los siguientes resultados:
título
título y hecho
Para devolver todas las entradas que contengan la palabra título como las seis últimas letras, debe dar el siguiente formato a las consultas:
Instrucción SQL:
+SELECT au_lname, ytd_sales, title
+ from
pubs.dbo.titleview
+ where title like '%%%título%'
En este ejemplo se devuelven los siguientes resultados:
título
autor y título
Es posible crear potentes conjuntos de páginas Web utilizando el resultado de una consulta para proporcionar vínculos con otras consultas. Por ejemplo, para mostrar los títulos de un autor individual, en lugar de devolver el nombre del autor como texto normal, puede darle formato como un vínculo y, a continuación, utilizar el vínculo para realizar otra consulta.
En otro ejemplo incluido en Internet Information Server se muestra cómo crear este tipo de vínculos. Dbsamp3.htm se utiliza para ejecutar la consulta en Sample3.idc, que utiliza Sample3.htx como plantilla de salida. Sample3.htx devolverá los apellidos de los autores como vínculos y, al hacer clic en ellos, mostrarán los títulos de cada autor utilizando Sample3a.idc y Sample3a.htx.
Campos necesarios en un archivo del Conector de bases de datos de Internet
(.idc)
Campo | Descripción |
Datasource | El nombre que corresponde al Nombre del origen de datos (DSN) del sistema ODBC que ha creado previamente utilizando el Administrador de ODBC o la herramienta proporcionada con los ejemplos. |
Template | El nombre del archivo con extensión HTML que da formato a los datos devueltos por esta consulta. Por convención, estos archivos utilizan la extensión .htx. |
SQLStatement | La instrucción SQL que se va a ejecutar. La instrucción SQL puede contener valores de parámetros, que deben ir entre signos de porcentaje (%), del cliente. En el archivo del Conector de bases de datos de Internet, la instrucción SQL puede ocupar varias líneas. Después del campo SQLStatement, todas las líneas que comiencen con un signo más (+) se considerarán parte del campo SQLStatement. En el mismo archivo pueden aparecer varias instrucciones SQL. |
Campo | Descripción |
DefaultParameters = parám=valor
[, parám=valor] |
Los valores de los parámetros, si hay alguno, que se van a utilizar en el archivo del Conector de bases de datos de Internet siempre que el cliente no especifique algún parámetro. |
Expires | El número de segundos que hay que esperar antes de actualizar una página con salida en caché. Si una petición posterior es idéntica, la página de caché se devolverá sin tener acceso a la base de datos. Este campo es útil cuando desee forzar una nueva consulta de la base de datos tras un determinado periodo de tiempo. De forma predeterminada, el IDC no pone en caché las páginas de salida. Sólo las incluye en caché cuando se utiliza el campo Expires. |
MaxFieldSize | El espacio de búfer máximo por campo que asigna el IDC. Los caracteres posteriores a éste se truncarán. El parámetro se aplica sólo a aquellos campos de la base de datos que superen los 8192 bytes. El valor predeterminado es 8192. |
MaxRecords | El número máximo de registros que el IDC devolverá de cualquier consulta. El valor MaxRecords no se define de forma predeterminada, lo que significa que una consulta puede devolver hasta 4.000 millones de registros. Defina este valor para limitar los registros devueltos. |
ODBCConnection | Inserte este campo con el valor de
agrupación para agregar la conexión a la agrupación de conexiones,
que conserva la conexión con la base de datos abierta para futuras
peticiones. A continuación, el IDC envía los datos a través de una
conexión agrupada para la posterior ejecución de un archivo .idc que
contiene los mismos valores de Datasource, Username y Password. Defina
esta opción para mejorar el rendimiento utilizando el Conector de bases de
datos de Internet. Además, hay una opción sin agrupación, que
especifica que la conexión del archivo .idc en la que se define esta
opción no debe tomarse de la agrupación de conexiones. Para administrar la
caché de conexiones con más precisión, defina el valor de este campo como
nopool. Además, si hay un límite en cuanto al número de conexiones
actuales, probablemente no desee que la agrupación de conexiones
monopolice todas las conexiones; de lo contrario, nadie podría conectarse
a SQL Server.
Nota Para definir el valor predeterminado de la agrupación de conexiones, debe definir como 1 la entrada del Registro PoolIDCConnections. Para obtener más detalles, consulte el capítulo 10, “Configuración de las entradas del Registro ”. |
Passwords | La contraseña que corresponde al nombre de usuario. Si no hay ninguna contraseña, este campo puede dejarse en blanco. |
RequiredParameters | Los nombres de los parámetros, si hay alguno, que Httpodbc.dll se asegura que pasarán del cliente; de lo contrario, devolverá un error. Los nombres de los parámetros se separan mediante comas. |
Translationfile | La ruta de acceso al archivo que asigna caracteres no ingleses (como à, ô o é) para que los exploradores puedan mostrarlos adecuadamente en formato HTML. Si el archivo de traducción no está en el mismo directorio que el archivo .idc, debe escribir la ruta de acceso completa al archivo de traducción. Sintaxis: Translationfile: C:\nombre_directorio\nombre_archivo. Si publica una base de datos en un idioma que no sea inglés, utilice el campo Translationfile. Un archivo de traducción es un archivo de texto en el que los caracteres especiales se asignan en el siguiente formato: valor=cadena<CR>, donde valor es un carácter internacional y cadena es el código de traducción de HTML. |
Username | Un nombre de usuario válido para el origen de
datos proporcionado por el campo Datasource.
Nota Si utiliza Microsoft SQL Server con la opción de seguridad integrada, los campos de nombre de usuario y contraseña del archivo .idc se ignoran. La conexión con SQL Server se realiza utilizando las credenciales del usuario Web. Si la petición se realiza como un usuario anónimo, el nombre de usuario y la contraseña están determinados por la configuración del usuario anónimo (el valor predeterminado es IUSR_nombreequipo) del Administrador de servicios de Internet. Si la petición del cliente contenía credenciales para la conexión, el nombre de usuario y la contraseña proporcionados por el usuario final se utilizan para conectarse a SQL Server. |
Content-Type | Cualquier tipo MIME válido que describa qué se devolverá al cliente. Si el archivo .htx contiene HTML, casi siempre será “text/html”. |
ODBCOptions: Nombre_opción=Valor[,Nombre_opción=Valor…]
Por ejemplo, para que la instrucción SQL deje de ejecutarse durante más de 10 segundos y activar el seguimiento de las llamadas a funciones ODBC en el archivo IDC tiene que especificar lo siguiente:
ODBCOptions: SQL_QUERY_TIMEOUT=10, SQL_OPT_TRACE=1,
SQL_OPT_TRACEFILE=C:\Sql.log
En la siguiente tabla se especifican todas las opciones:
Nombre de la opción | Valor | Propósito |
SQL_ACCESS_MODE | 0 = Lectura/escritura
1 = Sólo lectura. |
Indicador para el controlador de ODBC o el origen de datos de que no requiere la conexión para ser compatible con instrucciones SQL que hacen que se produzcan actualizaciones. Este modo puede utilizarse para optimizar estrategias de bloqueo, la administración de las transacciones u otras áreas apropiadas para el controlador o el origen de datos. El controlador no es necesario para evitar que dichas instrucciones se envíen al origen de datos. El comportamiento del controlador y del origen de datos cuando se les pide que procesen instrucciones SQL que no son de sólo lectura durante una conexión de sólo lectura está definido por la implementación. De forma predeterminada SQL_ACCESS_MODE se establece como 0, lo que permite la lectura y la escritura. |
SQL_LOGIN_TIMEOUT | Entero | El número de segundos que hay que esperar para que finalice un inicio de sesión antes de desconectarse. El valor predeterminado depende del controlador y debe ser distinto de cero. Si el valor es 0, el tiempo de espera se inhabilita y un intento de conexión esperará indefinidamente. Si el tiempo de espera especificado sobrepasa el tiempo de espera de inicio de sesión máximo del origen de datos, el controlador sustituirá dicho valor. |
SQL_OPT_TRACE | 0 = Desactivar el seguimiento
1 = Activar el seguimiento |
Cuando se activa el seguimiento, todas las llamadas a funciones ODBC que realiza Httpodbc.dll se escriben en el archivo de seguimiento. Con la opción SQL_OPT_TRACEFILE se puede especificar un archivo de seguimiento. Si este archivo ya existe, el controlador ODBC se agrega al archivo. De lo contrario, crea el archivo. Si se activa el seguimiento sin especificar ningún archivo de seguimiento, ODBC escribe en el archivo Sql.log. |
SQL_OPT_TRACEFILE | Nombre de archivo | El nombre del archivo de seguimiento que se va a utilizar cuando SQL_OPT_TRACE=1. El valor predeterminado es SQL.LOG |
SQL_PACKET_SIZE | Entero | El tamaño del paquete de red, en bytes, que va
a utilizarse para intercambiar información entre el sistema de la
administración de bases de datos (DBMS) y el servidor Web.
Note Muchos orígenes de datos no son compatibles con esta opción o sólo pueden devolver el tamaño del paquete de red. Si el tamaño especificado sobrepasa o es menor que el tamaño mínimo del paquete, el controlador sustituye dicho valor. |
SQL_TRANSLATE_DLL | Nombre de archivo | El nombre de una DLL que contiene las funciones SQLDriverToDataSource y SQLDataSourceToDriver, y que el controlador carga y utiliza para realizar tareas como la traducción del juego de caracteres. |
SQL_TRANSLATE_OPTION | Entero | Valor que controla la funcionalidad de traducción, que es específica de la DLL de traducción que se utiliza. Para obtener más detalles, consulte la documentación del controlador y de la DLL de traducción. |
SQL_TXN_ISOLATION | Entero
1=Lectura no confirmada 2=Lectura confirmada 4=Lectura repetible 8=Serializable 16=Control de versiones |
Define el nivel de aislamiento de las transacciones. El Conector de bases de datos de Internet no es compatible con las transacciones que se extienden más que la petición del archivo .idc. Sin embargo, en el caso de algunos DBMS, definir la opción SQL_TXN_ISOLATION como 1 (Lectura no confirmada) dará como resultado una mayor concurrencia y, por tanto, un mejor rendimiento. Sin embargo, con esta configuración pueden recuperarse aquellos datos que otras transacciones no hayan confirmado con la base de datos. |
SQL_MAX_LENGTH | Entero | La cantidad máxima de datos de una columna de caracteres o binaria que devuelve el controlador. Esta opción reduce el tráfico de red y sólo debe utilizarse cuando el origen de datos (lo opuesto al controlador) de un controlador con varias capas pueda implementarlo. |
SQL_MAX_ROWS | Entero | El número máximo de filas que devuelve una instrucción SELECT. Si el valor es 0 (el valor predeterminado), el controlador devuelve todas las filas. Esta opción reduce el tráfico de red cuando el propio origen de datos puede limitar las filas que se devuelven, frente a la variable incorporada MaxRecords del Conector de bases de datos de Internet, que limita las filas recuperadas. |
SQL_NOSCAN | 0=Buscar y convertir cláusulas de escape
1= No buscar y convertir cláusulas de escape |
Especifica si no es necesario que el controlador busque cadenas SQL en cláusulas de escape. Si se define como 0 (el valor predeterminado), el controlador busca cláusulas de escape en cadenas SQL. Si se define como 1, el controlador no busca cláusulas de escape en cadenas SQL; en su lugar el controlador envía la instrucción directamente al origen de datos. En caso de que la instrucción SQL no contenga ninguna cláusula de escape ODBC, la utilización de una sintaxis especial encerrada llaves ( { } ) y la posterior definición de esta opción como 1 proporcionará una pequeña mejora en el rendimiento indicando al controlador que no debe buscar en la cadena SQL. |
SQL_QUERY_TIMEOUT | Entero
0=Sin tiempo de espera |
El número de segundos que hay que esperar para que se ejecute una instrucción SQL antes de cancelar la consulta. Si se define como 0 (el valor predeterminado) no hay tiempo de espera. Si el tiempo de espera especificado sobrepasa el tiempo de espera máximo del origen de datos o es menor que el tiempo de espera mínimo, el controlador sustituirá dicho valor. |
Entero | Específico del controlador | Los valores de la opción específicos del
controlador pueden especificarse con el formato
número=valor. Por ejemplo,
4322=1, 234=Cadena |
Si el nombre del parámetro del archivo .idc está entre comillas simples, cada elemento de la lista también estará entre comillas simples. Siempre que la columna de la cláusula IN sea una columna de caracteres o de cualquier otro tipo en el que los literales vayan entre comillas (por ejemplo, fechas y horas) debe escribir el nombre del parámetro entre comillas simples. Si no se encuentran comillas simples alrededor del nombre del parámetro, no se colocará ninguna comilla alrededor de cada elemento de la lista. Si la columna de la cláusula IN es de tipo numérico o de cualquier otro tipo en el que los literales no vayan entre comillas simples, no debe escribir el nombre del parámetro entre comillas simples.
Por ejemplo, si un formulario HTML contenía el cuadro de lista de elección múltiple que aparece a continuación:
<SELECT MULTIPLE NAME="región">
<OPTION VALUE="Oeste">
<OPTION VALUE="Este">
<OPTION VALUE="Norte">
<OPTION
VALUE="Sur">
</SELECT>
Es posible construir un archivo .idc con una instrucción SQL:
SQLStatement: SELECT nombre, región FROM cliente WHERE región IN
('%región%')
Si el usuario ha seleccionado “Norte”, “Oeste” y “Este” en el formulario HTML, la instrucción SQL se convertiría en:
SELECT nombre, región FROM cliente WHERE región IN ('Norte', 'Oeste',
'Este')
A continuación aparece otro ejemplo de formulario HTML, pero esta vez se utilizan datos numéricos, por lo que esta vez el parámetro del archivo .idc no aparece entre comillas.
<SELECT MULTIPLE NAME="año">
<OPTION VALUE="1994">
<OPTION VALUE="1995">
<OPTION VALUE="1996">
</SELECT>
Es posible construir un archivo .idc con una instrucción SQL:
SQLStatement: SELECT producto, año_ventas FROM ventas WHERE año_ventas
IN (%año%)
Si el usuario ha seleccionado “1994” y “1995” en el formulario HTML, la instrucción SQL se convertiría en:
SELECT product, sales_year FROM sales WHERE sales_year IN (1994,
1995)
SQLSTatement:
+insert into perf(testtime, tag) values (getdate(),
'%etiqueta%')
+SELECT au_lname, ytd_sales from pubs.dbo.titleview where
ytd_sales>5000
+SELECT count(*) as nrecs from pubs.dbo.titleview where
ytd_sales>5000
SQLStatement:
+insert into perf(testtime, tag) values (getdate(),
'%etiqueta%')
SQLStatement:
+SELECT au_lname, ytd_sales from
pubs.dbo.titleview where ytd_sales>5000
SQLStatement:
+SELECT
count(*) as nrecs from pubs.dbo.titleview where ytd_sales>5000
Las consultas por lotes se procesan juntas inmediatamente, mientras que las consultas múltiples se procesan una a una. Por tanto, si su base de datos puede administrar consultas por lotes, al dar a las consultas un formato por lotes obtendrá mejor rendimiento.
<%begindetail%>
<%au_lname%>: <%ytd_sales%>
<%enddetail%>
presentará las columnas au_lname e ytd_sales. Es posible hacer referencia a cualquier columna de este modo. También puede hacerse referencia a los nombres de columna desde cualquier parte de un archivo de extensión HTML.
Nota Si la consulta no ha devuelto ningún registro, la sección <%begindetail%> se saltará. Por cada instrucción SQL que genere un conjunto de resultados (por ejemplo, SELECT), debería existir una sección <%begindetail%> <%enddetail%> correspondiente en el archivo .htx.
<%begindetail%><%if CurrentRecord EQ 0 %>
Resultados de la consulta:
</BODY> <B>Author YTD Sales<BR></B>
<%endif%>
<%au_lname%><%ytd_sales%>
<%enddetail%>
<P>
<%if CurrentRecord EQ 0
%>
<I><B>No hay ningún autor cuyas ventas anuales sean
superiores a </I><%idc.sales%>.</B>
<P>
<%else%>
<HR>
<I>
La página Web que
está viendo se ha creado combinando los resultados de la consulta SQL con el
archivo de plantillas Sample.htx.
<P>
La combinación la ha
realizado el Conector de bases de datos de Internet de Microsoft y Microsoft
Internet Information Server ha devuelto los datos a este explorador de Web.
</I>
<%endif%>
</HTML>
La sintaxis general es:
<%if condición%>
texto HTML
[<%else%>
texto HTML]
<%endif%>
Donde condición tiene el formato siguiente:
y operador puede ser uno de los siguientes:
EQ | si valor1 es igual a valor2 |
LT | si valor1 es menor que valor2 |
GT | si valor1 es mayor que valor2 |
CONTAINS | si cualquier parte de valor1 contiene la cadena valor2 |
<%begindetail%>
<%if au_lname EQ "Pérez"%>
¡Este
hombre es pérez!
<%endif%>
<%enddetail%>
La instrucción <%if%> también puede utilizarse para hacer procesos especiales basados en información procedente de variables HTTP. Por ejemplo, para dar un formato diferente a una página basándose en el tipo de explorador de Web del cliente, puede incluir lo siguiente en el archivo de extensión HTML.
<%if HTTP_USER_AGENT contains "Maruja"%>
el cliente acepta
características avanzadas de HTML
<%else%>
el cliente es
<%HTTP_USER_AGENT%>
<%endif%>
La variable incorporada MaxRecords contiene el valor del campo MaxRecords del archivo del Conector de bases de datos de Internet. Tanto MaxRecords como CurrentRecord sólo pueden utilizarse en instrucciones <%if%>.
El valor del parámetro sales es: <%idc.sales%>
2. Convierta todos los guiones en caracteres de subrayado.
3. Convierta todas las letras a mayúsculas.
La siguiente tabla muestra una lista de las variables
predeterminadas. Son las variables de entorno para las aplicaciones CGI y las
variables HTTP para las aplicaciones IDC.
Variables de Internet Information Server Server
Variable | Significado |
ALL_HTTP | Todos los encabezados HTTP que aún no se hayan
analizado en alguna de las variables de la lista. Estas variables tienen
el formato HTTP_<nombre del campo encabezado>, por ejemplo:
HTTP_ACCEPT: */*, q=0.300, audio/x-aiff, audio/basic, image/jpeg, image/gif, text/plain, text/html |
AUTH_TYPE | El tipo de autorización que se esté utilizando. Si el servidor ha autentificado el nombre del usuario, ésta contendrá Basic. De lo contrario, no estará presente. |
CONTENT_LENGTH | El número de bytes que el archivo de comandos espera recibir del cliente. |
CONTENT_TYPE | El tipo de contenido de la información proporcionada en la parte principal de una petición POST. |
GATEWAY_INTERFACE | La revisión de la especificación CGI (Interfaz de puerta de enlace o gateway común) con la que cumple el servidor. |
HTTP_ACCEPT | Encabezado HTTP especial. Los valores de los
campos Accept: están concatenados y separados por una coma (,); por
ejemplo, si las siguientes líneas forman parte del encabezado HTTP:
accept: */*; q=0.1entonces la variable HTTP_ACCEPT tendrá un valor: */*; q=0.1, text/html, image/jpeg |
LOGON_USER | La cuenta de Windows NT del usuario. |
PATH_INFO | Información adicional acerca de la ruta de acceso, como la proporciona el cliente. Incluye la parte la parte final de la dirección URL, tras el nombre del archivo de comandos pero antes de la cadena de consulta (si la hay). |
PATH_TRANSLATED | El valor de PATH_INFO, pero con cualquier nombre de ruta de acceso virtual expandido a una especificación de directorio. |
QUERY_STRING | La información que aparece después del signo de interrogación (?) en la dirección URL que hizo referencia a este archivo de comandos. |
REMOTE_ADDR | La dirección IP del cliente. |
REMOTE_HOST | El nombre de host del cliente. |
REMOTE_USER | El nombre de usuario proporcionado por el cliente y autentificado por el servidor. |
REQUEST_METHOD | El método de peticiones de HTTP. |
SCRIPT_NAME | El nombre del programa de archivos de comandos que se ejecuta. |
SERVER_NAME | El nombre de host del servidor (o la dirección IP) como debería aparecer en la dirección URL con referencia propia. |
SERVER_PORT | El puerto TCP/IP en el que se recibió la petición. |
SERVER_PORT_SECURE | El valor 0 ó 1. El valor 1 indica que la petición se encuentra en el puerto codificado. |
SERVER_PROTOCOL | El nombre y la versión del protocolo de recuperación de la información relativa a esta petición, habitualmente HTTP/1.0. |
SERVER_SOFTWARE | El nombre y la versión del servidor Web bajo el que se ejecuta Internet Server Extension. |
URL | La dirección URL de la petición. |
© 1996 Microsoft Corporation. Reservados todos los derechos.