------------------------------------------------------------------ Archivo Léame de Microsoft(R) ActiveX(R) Data Objects, versión 2.1 ------------------------------------------------------------------ (c) 1998 Microsoft Corporation. Reservados todos los derechos. En este documento se proporciona información de última hora u otra información que complementa la documentación de Microsoft ADO. --------- CONTENIDO --------- 1. DESCRIPCIÓN DEL PRODUCTO 2. CARACTERÍSTICAS NUEVAS 2.1 Seek e Index 2.2 Actualización y sincronización de filas 2.3 Microsoft OLE DB Persistence Provider 2.4 Microsoft Data Shaping Service for OLE DB 2.5 Microsoft OLE DB Remoting Provider 3. NOTAS TÉCNICAS 3.1 Mejoras en la seguridad 3.2 Conducta restrictiva 3.3 Personalizar la configuración de seguridad 4. ERRORES CONOCIDOS, LIMITACIONES, SOLUCIONES Y NOTAS DE ÚLTIMA HORA DE LA DOCUMENTACIÓN --------------------------- 1. DESCRIPCIÓN DEL PRODUCTO --------------------------- ActiveX Data Objects (ADO) es una interfaz basada en la automatización para tener acceso a datos. ADO utiliza la interfaz OLE DB para tener acceso a gran variedad de orígenes de datos, entre los que se incluyen (sin limitarse a ellos) datos proporcionados mediante ODBC. Los usuarios de RDO y DAO se sentirán en seguida cómodos al programar con ADO debido a que todo el diseño de ADO proviene de nuestra experiencia en desarrollar estas interfaces. Microsoft Remote Data Service (RDS) es un componente de ADO que proporciona conectividad de datos rápida y eficaz, y el marco de publicación de datos para aplicaciones alojadas en Microsoft Internet Explorer. Está basado en una tecnología cliente-servidor distribuida que funciona a través de HTTP, HTTPS (HTTP sobre Secure Sockets layer) y protocolos de aplicación DCOM. Si se utilizan los controles ActiveX que tienen en cuenta los datos, RDS proporciona programación de acceso a datos del tipo de Microsoft Visual Basic(R) a los desarrolladores de Web que necesiten crear aplicaciones distribuidas que realizan un uso intensivo de los datos que se van a utilizar a través de intranets corporativas y de Internet. ------------------------- 2. CARACTERÍSTICAS NUEVAS ------------------------- ADO 2.1 ofrece un gran número de características nuevas para los desarrolladores. 2.1 Seek e Index El método Seek y la propiedad Index permiten una ubicación rápida, basada en índices, de filas en un conjunto de registros. 2.2 Actualización y sincronización de filas El nuevo modo "row fix-up" ofrece al usuario un control personalizado de las actualizaciones y de la sincronización de filas para conjuntos de registros creados mediante una operación JOIN. Siete nuevas propiedades dinámicas controlan el comportamiento de cinco métodos existentes. 2.3 Microsoft OLE DB Persistence Provider Microsoft OLE DB Persistence Provider, junto con los métodos Save y Open de objetos Recordset, guarda y restaura un conjunto de registros en un archivo. Con esta versión, los conjuntos de registros se pueden guardar en formato de Lenguaje de marcado extensible (XML, Extensible Markup Language), que supone la manera estándar de definir etiquetas especificadas por el usuario para datos transportados a través de Internet. 2.4 Microsoft Data Shaping Service for OLE DB Microsoft Data Shaping Service for OLE DB, que es compatible con Data Shaping, puede ahora: 2.4.1 Volver a dar forma al conjunto de registros a los que se ha dado forma previamente. Para que sean compatibles con esta característica, los conjuntos de registros tienen ahora una propiedad Name que existe para la duración de la conexión. 2.4.2 Llevar a cabo cálculos de agregados en columnas en cualquier nivel de un conjunto de registros con forma, no únicamente en el nivel secundario de un primario. Esta característica utiliza nombres de capítulo plenamente cualificados para crear una ruta a la columna y al nivel deseados. 2.4.3 Los comandos COMPUTE con parámetros pueden tener un número arbitrario de cláusulas COMPUTE intermedias entre la cláusula PARAMETER y el argumento del parámetro. 2.5 Microsoft OLE DB Remoting Provider Microsoft OLE DB Remoting Provider se convierte en el proveedor de servicio estándar y adquiere nuevas propiedades dinámicas para el rendimiento mejorado, mayor control de usuario y compatibilidad con el formato anterior de ADO 2.0. ----------------- 3. NOTAS TÉCNICAS ----------------- 3.1 Mejoras en la seguridad Esta versión incluye mejoras en la seguridad para objetos ADO y RDS a fin de que se restrinjan algunas operaciones cuando se ejecute Internet Explorer en un modo "seguro". 3.1.1. Zonas Puede establecer diferentes configuraciones de seguridad para distintas "zonas" en Internet Explorer 4.0 para personalizar la conducta de los objetos ADO/RDS en esas zonas. Las cuatro zonas siguientes están definidas en Internet Explorer 4.0: * Zona de Internet * Zona de Intranet local * Zona de sitios restringidos * Zona de sitios de confianza 3.1.2. Niveles de seguridad Se puede especificar qué nivel de seguridad utilizar para cada una de estas zonas. Los siguientes niveles de seguridad están disponibles para cada zona: * Alto * Medio * Bajo * Personalizado Como en cualquier otro control ActiveX, para que todos los objetos ADO/RDS funcionen plenamente en Internet Explorer 4.0, el nivel de seguridad debe estar establecido en "Medio" o "Alto". La configuración personalizada se utiliza para configurar los objetos ADO/RDS para que se comporten en modo seguro o no. 3.2 Conducta restrictiva De manera predeterminada, cualquier operación no segura con objetos ADO/RDS en Internet Explorer 4.0 dará lugar a un aviso al usuario cuando intente tener acceso a páginas de la "Zona de confianza local", "Zona de sitios de confianza" o de la "Zona de Internet". Las operaciones no seguras con objetos ADO/RDS están deshabilitadas de manera predeterminada para páginas cargadas de la "Zona de sitios restringidos". A continuación se describe la conducta de ADO/RDS cuando se ejecutan en esos modos: 3.2.1 Objetos seguros Se consideran "seguros" los objetos siguientes. Esto significa que las operaciones arriesgadas (detalladas en 3.2.3) están deshabilitadas en un entorno seguro (por ejemplo, en Internet Explorer de manera predeterminada; salvo que se utilice la configuración personalizada para ejecutarlos en un entorno no seguro) y permitidas en un entorno no seguro (como por ejemplo Visual Basic). a. Objeto RDS.DataControl b. Objeto RDS.DataSpace c. Objeto Recordset de ADO 3.2.2 Objetos no seguros Se consideran "no seguros" los objetos siguientes. No se pueden crear directa ni indirectamente (ni dar al usuario) cuando se opera en un entorno seguro. a. Objeto RDSServer.DataFactory b. Objeto Connection de ADO c. Objeto Command de ADO 3.2.3 Operaciones no seguras en objetos seguros Las siguientes operaciones son consideradas como no seguras en los objetos "seguros": RDS.DataControl, RDS.DataSpace y Recordset de ADO. Estas operaciones no están permitidas en un entorno seguro pero sí en uno no seguro. a. RDS.DataControl i) Todos los escenarios de dos niveles y DCOM en el objeto RDS.DataControl. Esto significa que no puede abrir conexiones de bases de datos en su equipo local o desde servidores a los que se conecta mediante el protocolo DCOM. ii) Todas las operaciones de tres niveles a través de HTTP están restringidas para el servidor desde el que se descargó la página. Esto significa que la propiedad del servidor con el objeto RDS.DataControl debe ser igual al nombre de host (http://server) desde el que se descargó la página. b. RDS.DataSpace i) Todos los escenarios de dos niveles y DCOM en el objeto RDS.DataSpace. Esto significa que no puede utilizar el objeto RDS.DataSpace para invocar objetos comerciales en su equipo local o a través del protocolo DCOM. ii) Todos los escenarios de tres niveles a través de HTTP están restringidos para el servidor desde el que se descargó la página. Esto significa que el segundo parámetro de la llamada al método CreateObject del objeto DataSpace debe señalar al mismo servidor desde el que se descargó la página. c. Recordset de ADO i) Efectuar cualquier conexión en la que el proveedor no sea MS Remote. De modo que la cadena de conexión debe comenzar con "Provider=MS Remote". La etiqueta "Remote Server" de la cadena de conexión también tiene que tener el mismo nombre que el servidor desde el que se descargó la página. No están permitidas las conexiones de dos niveles y DCOM locales. ii) Las operaciones de persistencia locales, como guardar un conjunto de registros en el sistema de archivos local o abrir un conjunto de archivos de un archivo del equipo local. 3.3 Personalizar la configuración de seguridad El comportamiento de ADO/RDS está controlado por la configuración de la opción "Ejecutar los archivos de comandos de los controles ActiveX no seguros". Puede cambiar la configuración de seguridad modificando el nivel de seguridad de una zona específica. La configuración predeterminada de la opción "Ejecutar los archivos de comandos de los controles ActiveX no seguros" para la zona de intranet es la siguiente: Nivel de seguridad = Alto Valor = "Deshabilitado" Nivel de seguridad = Medio Valor = "Deshabilitado" Nivel de seguridad = Bajo Valor = "Preguntar" Para obtener información acerca de la configuración predeterminada de otras zonas de seguridad, consulte la documentación de Internet Explorer. Si modifica el nivel de seguridad, puede cambiar el comportamiento de los objetos Recordset de ADO desconectados que se ejecutan en el explorador. Si desea habilitar operaciones no seguras y no desea que se le solicite confirmación cada vez que se intente llevar a cabo una de esas operaciones, deberá establecer explícitamente el valor en "Habilitar". Observe que si intenta llevar a cabo una operación no segura (como guardar un Recordset en un archivo del sistema de archivos local) en un Recordset de ADO obtenido de DataControl de RDS, deberá establecer el valor de la opción anterior en "Habilitar". El valor "Preguntar" actúa como "Deshabilitar" para dichos objetos Recordset (obtenidos de RDS.DataControl). Puede anular esta configuración predeterminada modificándola directamente en la opción anterior. Puede deshabilitar totalmente las operaciones no seguras (descritas anteriormente) o especificar que se le muestre un aviso siempre que se intenten llevar a cabo dichas operaciones o permitir que se lleven a cabo sin ningún aviso. Puede establecer una configuración personalizada diferente para cada zona de seguridad. Debe seguir los pasos descritos a continuación para personalizar la configuración de seguridad para una zona de seguridad específica: PRECAUCIÓN: tenga en cuenta que si habilita la opción "Ejecutar los archivos de comandos de los controles ActiveX no seguros" (paso 5), permite que CUALQUIER control ActiveX, seguro o no seguro, se utilice desde páginas Web, lo cual expone potencialmente los equipos de los usuarios a controles o a código de secuencia de comandos dañinos. Se recomienda que lo haga sólo en la zona de "intranet" o en "sitios de confianza" y no en la zona de "Internet". 1. En el menú Ver de Internet Explorer 4.0, seleccione Opciones de Internet para tener acceso al cuadro de diálogo Opciones de Internet. Seleccione la ficha Seguridad. 2. En la lista desplegable Zona, seleccione la zona cuya configuración desee personalizar. 3. Seleccione Personalizar para la zona seleccionada, esto habilita el botón Configuración del cuadro de diálogo. 4. Haga clic en Configuración para tener acceso al cuadro de diálogo Configuración de seguridad. 5. Si desea habilitar las operaciones no seguras (descritas en 3.2.3) sobre los objetos ADO/RDS sin que se muestre ningún mensaje de advertencia, seleccione "Habilitar" en la opción "Ejecutar los archivos de comandos de los controles ActiveX no seguros" del cuadro de diálogo Configuración de seguridad. Haga clic en Aceptar. 6. Si desea que se muestre un mensaje de advertencia siempre que se intente llevar a cabo una operación no segura (descrita en 3.2.3) sobre objetos ADO/RDS, seleccione "Preguntar", en la opción "Ejecutar los archivos de comandos de los controles ActiveX no seguros" del cuadro de diálogo Configuración de seguridad. Haga clic en Aceptar. 7. Si desea deshabilitar completamente las operaciones no seguras (descritas en 3.2.3) sobre objetos ADO/RDS, seleccione "Deshabilitar" en la opción "Ejecutar los archivos de comandos de los controles ActiveX no seguros" del cuadro de diálogo Configuración de seguridad. Haga clic en Aceptar. 8. Si fuera necesario, repita estos pasos para personalizar la configuración de seguridad de otras zonas de seguridad. 9. Haga clic en Aceptar. Ahora, los objetos ADO/RDS se comportarán del modo personalizado especicificado. Esta configuración afecta a la conducta de objetos ADO/RDS (tal y como se describió en 3.2.3) de la zona de seguridad especificada: se abrirán conexiones de dos niveles, funcionarán sobre DCOM, se conectarán a otro servidor diferente del servidor en el que se cargó la página, guardarán y abrirán conjuntos de registros en y desde archivos del equipo local. Si establece su opción personalizada como "Preguntar", se mostrará el mensaje de aviso siguiente cuando se intente llevar a cabo una operación no segura sobre objetos ADO/RDS: "La página está teniendo acceso a un origen de datos de otro dominio. ¿Desea permitirlo?" El usuario tiene la posibilidad de responder "Sí" o "No". Si la respuesta es "Sí", la operación se llevará a cabo, de lo contrario, fallará. --------------------------------------------------------------------- 4. ERRORES CONOCIDOS, LIMITACIONES, SOLUCIONES Y NOTAS DE ÚLTIMA HORA DE LA DOCUMENTACIÓN --------------------------------------------------------------------- 4.1 En RDS actualmente no se admite la representación de cliente debido a la falta de compatibilidad del sistema operativo. 4.2 Al crear "Servidores virtuales" en Internet Information Server 4.0, son necesarios los siguientes pasos extra a fin de configurar el servidor para que funcione con RDS: A) Al configurar el servidor, active la opción "Permitir acceso de ejecución". B) Mueva el archivo msadcs.dll a vroot\msadc, donde vroot es el directorio principal del servidor virtual. 4.3 Cuando se utiliza RDS en un servidor IIS, se puede controlar el número de subprocesos creados por procesador mediante la modificación del registro del servidor Web. El número de subprocesos por procesador puede afectar al rendimiento en situaciones de mucho tráfico o en situaciones de poco tráfico pero de escenarios de consultas de gran tamaño. El usuario deberá probar para obtener los mejores resultados. El valor específico que se debe ajustar es: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ADCThreads donde ADCThreads es una REG_DWORD agregada por el usuario. El intervalo de valores válidos es de 1 a 50. El valor predeterminado es 6. Si el valor especificado para la clave de registro es mayor que 50, se utilizará el valor máximo (50). El usuario no debería necesitar crear este valor de registro; no se incluyó en el registro de forma predeterminada. 4.4 ADO se instala por defecto con una configuración de RDS Server DataFactory "segura". La modalidad segura para los componentes de RDS Server implica que se cumplen los siguientes requisitos: 1. Se necesita un controlador con DataFactory (requerido por la configuración de la clave de registro) 2. El controlador por defecto, msdfmap.handler, aparece registrado en la lista de controladores seguros y es el controlador que se selecciona por defecto. 3. El archivo Msdfmap.ini se instala en el directorio Windows. Antes de utilizar RDS en la modalidad de tres partes necesita configurar dicho archivo de forma personalizada. Asimismo, también puede seleccionar una instalación libre para DataFactory. DataFactory puede usarse directamente sin el controlador personalizado, pero aquellos usuarios que deseen utilizarlo podrán hacerlo modificando las cadenas de conexión, lo que no es imperativo para todos los usuarios. El archivo de registro handsafe.reg se ha incluido para que pueda modificar las entradas de registro del controlador y conseguir una configuración de seguridad. Ejecute handsafe.reg para iniciar en modalidad segura. El archivo de registro handunsf.reg se ha incluido para que pueda modificar las entradas de registro del controlador y conseguir una configuración libre. Ejecute handunsf.reg para iniciar en modalidad libre. Para obtener más información acerca de la característica de RDS que le permite personalizar el controlador, lea el artículo técnico "Using the Customization Handler Feature in RDS 2.0," que se encuentra disponible en http://www.microsoft.com/data/techmat.htm 4.5 El método Find busca un Recordset para el registro que coincide con el criterio de búsqueda en la dirección de la fila actual. Si no especifica una posición de fila antes de ejecutar el comando Find, se producirá un error. 4.6 Para poder utilizar los eventos de ADO FetchProgress y FetchComplete con Visual Basic, necesita disponer como mínimo de la versión 6 de Visual Basic. 4.7 Las operaciones siguientes se consideran seguras para utilizarlas en expresiones CALC de Data Shaping: Abs, Asc, Atn, CBool, CByte, CCur, CDate, CDbl, Chr, ChrB, ChrW, Chr$, ChrB$, CInt, CLng, Cos, CSng, CStr, Cvar, CVDate, CVErr, Date, Date$, DateAdd, DateDiff, DatePart, DateSerial, DateValue, Day, DDB, Error, Error$, Exp, Fix, Format, Format$, FV, Hex, Hex$, Hour, IIF, InStr, Int, IPmt, IRR, IsDate, IsEmpty, IsError, IsNull, IsNumeric, IsObject, LCase, LCase$, Left, LeftB, Left$, LeftB$, Len, Log, LTrim, LTrim$, Mid, Mid$, Minute, MIRR, Month, Now, NPer, NPV, Oct, Oct$, Pmt, PPmt, PV, QBColor, Rate, RGB, Right, RightB, Right$, RightB$, Rnd, RTrim, RTrim$, Second, Sgn, Sin, SLN, Space, Space$, Sqr, Str, Str$, StrComp, StrConv, String, String$, SYD, Tan, Time,Time$, Timer, TimeSerial, TimeValue, Trim, Trim$, TypeName, UCase, UCase$, Val, VarType , Weekday, Year. 4.8 ADO 2.1 no es compatible con los objetos Recordset constantemente estructurados en formato XML. 4.9 No puede actualizar los datos de un Recordset de sólo lectura guardándolos como un archivo XML para editarlos posteriormente. Se producirá un error cuando intente reabrir el Recordset desde el archivo XML si los datos de dicho archivo han sido cambiados. 4.10 Durante el uso de adUseClient o remoto con SQL Server 6.5 Service Pack 4, se ignorarán las consultas que hagan uso de la palabra clave DISTINCT, para conseguir así un conjunto de resultados actualizables. Este es un tema relativo a SQL Server que posiblemente se resuelva en la próxima versión del service pack. 4.11 Los valores que se muestran en el tema "Type, propiedad" de laReferencia del programador de ActiveX Data Objects no son válidos. Se enumeran los siguientes valores para enum que no existen y no se pueden utilizar: adArray, adByRef, adVector Los siguientes valores no se presentan en la lista pero existen y se pueden utilizar: adChapter Un valor de capítulo de 4 bytes que se utiliza para identificar las filas de un conjunto de filas de un secundario (DBTYPE_HCHAPTER). adDBFileTime Un valor de hora del archivo (DBTYPE_DBFILETIME). adFileTime Un valor de 64 bits que representa el número de interválos de 100 nanosegundos desde el 1 de Enero de 1601 (DBTYPE_FILETIME). adPropVariant Un PROPVARIANT de Automatización (DBTYPE_PROP_VARIANT). adVarNumeric Un valor numérico (sólo para objetos Parameter). 4.12 La lista de valores válidos para el parámetro Options del método Execute de los objetos Connection y Command no es válida. El valor ExecuteOptionEnum siguiente se presenta dos veces y sólo debe estar una vez, tal y como se muestra a continuación: adCmdTable Indica que ADO debe evaluar CommandText como un nombre de tabla y generar una consulta SQL para devolver todas las filas de la tabla a la que se hace referencia en CommandText. El siguiente valor para ExecuteOptionEnum no se presenta en la lista pero existe y se puede utilizar: adCmdFile Indica que el proveedor debe evaluar CommandText como un nombre de archivo. Los siguientes valores para CommandTypeEnum no se presentan en la lista pero existen y se pueden utilizar: adAsyncFetchNonBlocking Indica que el subproceso principal nunca se bloqueará durante la búsqueda. Si no se encuentra la fila solicitada, la fila actual se moverá automáticamente al final del archivo. adExecuteNoRecords Indica que CommandText es un comando o procedimiento almacenado que no devuelve filas (por ejemplo, un comando que sólo inserta datos). Si se recuperan algunas filas, se descartarán y no se devolverán. Siempre combinadas con adCmdText o adCmdStoredProc. 4.13 La lista de valores Enum de QueryType para el método OpenSchema de un objeto Connection no es válida. Los valores siguientes no se presentan en la lista pero existen y se pueden utilizar: Enum Columnas de restricción adSchemaDBInfoKeywords ninguna adSchemaDBInfoLiterals ninguna adSchemaCubes CATALOG_NAME SCHEMA_NAME CUBE_NAME adSchemaDimensions CATALOG_NAME SCHEMA_NAME CUBE_NAME DIMENSION_NAME DIMENSION_UNIQUE_NAME adSchemaHierarchies CATALOG_NAME SCHEMA_NAME CUBE_NAME DIMENSION_UNIQUE_NAME HIERARCHY_NAME HIERARCHY_UNIQUE_NAME adSchemaLevels CATALOG_NAME SCHEMA_NAME CUBE_NAME DIMENSION_UNIQUE_NAME HIERARCHY_UNIQUE_NAME LEVEL_NAME LEVEL_UNIQUE_NAME adSchemaMeasures CATALOG_NAME SCHEMA_NAME CUBE_NAME MEASURE_NAME MEASURE_UNIQUE_NAME adSchemaProperties CATALOG_NAME SCHEMA_NAME CUBE_NAME DIMENSION_UNIQUE_NAME HIERARCHY_UNIQUE_NAME LEVEL_UNIQUE_NAME MEMBER_UNIQUE_NAME PROPERTY_TYPE PROPERTY_NAME adSchemaMembers CATALOG_NAME SCHEMA_NAME CUBE_NAME DIMENSION_UNIQUE_NAME HIERARCHY_UNIQUE_NAME LEVEL_UNIQUE_NAME LEVEL_NUMBER MEMBER_NAME MEMBER_UNIQUE_NAME MEMBER_CAPTION MEMBER_TYPE Operador de árbol (vea a continuación) Tenga en cuenta que los últimos siete valores de Enum (desde adSchemaCubes a adSchemaMembers) se deben utilizar con proveedores de datos multidimensionales. Para obtener más información acerca de incluir la definición de información de la restricción del operador de árbol de adSchemaMembers, consulte la OLE DB for OLAP Programmer's Reference. 4.14 Los valores para AffectEnum que se muestran en el tema "CancelBatch, método" de la Referencia del programador de ActiveX Data Objects contiene un error. El valor siguiente no se presenta en la lista pero existe y se puede utilizar: adAffectAllChapters Cancela los cambios pendientes de todos los capítulos. 4.15 El valor adModeShareDenyNone para ConnectModeEnum que se muestra en el tema "Mode, propiedad" no es válido. El valor correcto es: adModeShareDenyNone Permite a otros abrir la conexión con cualquiera de los permisos. No se puede denegar el acceso de lectura o escritura a otros. 4.16 Anteriormente la propiedad Index devolvía un error si no se configuraba Index en el objeto Recordset. Al igual que ADO 2.1 en MDAC 2.1 Service Pack 1, la operación se consigue y se obtiene una cadena vacía.