Resumen
Este artículo describe lo siguiente acerca de esta versión de hotfix:
-
Los problemas corregidos por el paquete de hotfix
-
Los requisitos previos para instalar el paquete de hotfix
-
Si debe reiniciar el equipo después de instalar el paquete de hotfix
-
Si el paquete de revisiones queda reemplazado por otro paquete de hotfix
-
Si debe hacer algún cambio el registro
-
Los archivos que están contenidos en el paquete de hotfix
Síntomas
Considere el siguiente escenario. Una aplicación utiliza Microsoft ADO.NET Entity Framework que se incluye en Microsoft.NET Framework 3.5 Service Pack 1 para tener acceso a una base de datos de Microsoft SQL Server Compact 3.5. En la aplicación, ejecutar una consulta "LINQ to Entities" que utiliza un parámetro de cadena o un parámetro binario contra la base de datos. En este escenario, recibirá el siguiente mensaje de error al ejecutar la aplicación:
Los tipos de datos ntext e image no pueden utilizarse en WHERE, HAVING, GROUP BY, en o en cláusulas, excepto cuando se utilizan estos tipos de datos con similares predicados o IS NULL.
Causa
Al utilizar parámetros para una consulta "LINQ to Entities" en una aplicación, no puede especificar los tipos de base de datos base. El proveedor de SQL Server Compact Entity Framework intenta crear un parámetro de nivel de proveedor basándose en los aspectos de Entity Data Model (EDM) del parámetro original. SQL Server Compact no admite el tipo de datos nvarchar (max) o el tipo de datos varbinary (max) . Por lo tanto, cuando el proveedor selecciona el tipo de datos para un parámetro de tipo de datos Edm.String o el Edm.Binary del tipo de datos, el proveedor tiene que marca el parámetro como uno de los siguientes tipos de datos basados en los aspectos EDM del parámetro:
-
Para un parámetro de cadena, el proveedor selecciona el tipo de datos nvarchar (4000) o el tipo de datos ntext .
-
Para un parámetro binario, el proveedor selecciona el tipo de datos varbinary(4000) o el tipo de datos de imagen .
Si el proveedor marca el parámetro como el tipo de datos nvarchar (4000) o como el tipo de datos de varbinary(4000) , se produce un error cuando se intenta insertar valores mayores de 8.000 bytes. Además, si el proveedor marca el parámetro como el tipo de datos ntext o el tipo de datos image , se produce un error si se han realizado operaciones de igualdad, operaciones de agrupación ni las operaciones de ordenación en el parámetro.
Solución
Información de la revisión
Existe un hotfix disponible desde Microsoft. Sin embargo, esta revisión se diseñó para corregir únicamente el problema que se describe en este artículo. Aplique esta revisión solamente a sistemas que experimenten el problema descripto en este artículo. Esta revisión podría ser sometida a comprobaciones adicionales. Por lo tanto, si no se ve muy afectado por este problema, recomendamos que espere a la próxima actualización de software que contenga este hotfix.
Si la revisión está disponible para su descarga, hay una sección de "Descarga de revisión disponible" en la parte superior de este artículo de Knowledge Base. Si esta sección no aparece, póngase en contacto con el servicio al cliente de Microsoft y soporte técnico para obtener la revisión.
Nota: Si se producen problemas adicionales o si se requiere cualquier otra solución, será necesario crear una solicitud de revisión independiente. Los costos habituales de soporte se aplicarán a las preguntas de soporte técnico adicionales y problemas que no califican para esta revisión específica. Para obtener una lista completa de los números de teléfono de servicio al cliente de Microsoft o para crear una solicitud de servicio independiente, visite el siguiente sitio Web de Microsoft:
http://support.microsoft.com/contactus/?ws=supportNota: El formulario de "Descarga de Hotfix disponible" muestra los idiomas para los que el Hotfix está disponible. Si no ve su idioma, es porque no hay una revisión para ese idioma.
Requisitos previos
Para aplicar este hotfix, debe desinstalar el previamente instalado SQL Server Compact 3.5 Service Pack 1 para instalar el archivo .msi que se proporciona con esta revisión. Si no desinstala el previamente instalado SQL Server Compact 3.5 Service Pack 1, recibirá un mensaje de error de instalación que indica que ya está instalada una versión posterior de SQL Server Compact. Para obtener más información acerca de SQL Server Compact 3.5 Service Pack 1, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
Descripción de 955965 de SQL Server Compact 3.5 Service Pack 1
Información de reinicio
No es necesario que reinicie el equipo después de aplicar este hotfix.
Información del registro
No es necesario cambiar el registro.
Información de archivo de hotfix
Este hotfix contiene sólo los archivos necesarios para corregir los problemas que se enumera en este artículo. Este hotfix no puede contener todos los archivos que debe tener para actualizar plenamente un producto a la compilación más reciente.
La versión en inglés de esta revisión tiene los atributos de archivo (o atributos del archivo más reciente) mostrados en la tabla siguiente. Las fechas y horas de estos archivos se muestran en la hora Universal coordinada (UTC). Al ver la información del archivo, se convierte en hora local. Para encontrar la diferencia entre la hora UTC y la hora local, utilice la ficha Zona horaria en el elemento de Fecha y hora del Panel de control.
Nombre del archivo |
Versión del archivo |
Tamaño de archivo |
Fecha |
Hora |
Plataforma |
---|---|---|---|---|---|
System.data.sqlserverce.entity.dll |
3.5.5692.1 |
230,480 |
24-Sep-2008 |
06:46 |
x86/x64/IA-64 |
System.data.sqlserverce.dll |
3.5.5692.1 |
271,440 |
24-Sep-2008 |
06:46 |
x86/x64 |
Policy.3.5.system.data.sqlserverce.dll |
3.5.5692.1 |
13,392 |
24-Sep-2008 |
06:46 |
x86/x64 |
Policy.3.5.system.data.sqlserverce.entity.dll |
3.5.5692.1 |
13,392 |
24-Sep-2008 |
06:46 |
x86/x64 |
Sqlceca35.dll |
3.5.5692.1 |
343,104 |
24-Sep-2008 |
08:07 |
x86 |
Sqlcecompact35.dll |
3.5.5692.1 |
84,544 |
24-Sep-2008 |
08:07 |
x86 |
Sqlceer35en.dll |
3.5.5692.1 |
148,032 |
24-Sep-2008 |
08:07 |
x86 |
Sqlceme35.dll |
3.5.5692.1 |
65,088 |
24-Sep-2008 |
08:07 |
x86 |
Sqlceoledb35.dll |
3.5.5692.1 |
172,608 |
24-Sep-2008 |
08:07 |
x86 |
Sqlceqp35.dll |
3.5.5692.1 |
644,160 |
24-Sep-2008 |
08:07 |
x86 |
Sqlcese35.dll |
3.5.5692.1 |
348,224 |
24-Sep-2008 |
08:07 |
x86 |
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".
Más información
Después de aplicar este hotfix, el proveedor no adivinar el tipo de datos para un parámetro de la EDM. Cadena tipo de datos o de la EDM. Binario tipo de datos. El procesador de consultas selecciona el tipo de datos correcto para el parámetro basándose en el valor o en la columna que se equipara el parámetro o con la que se utiliza el parámetro.
Por ejemplo, en la siguiente consulta de Entity SQL, el procesador de consultas selecciona el tipo de datos ntext para el parámetro de nombre antes de aplicar este hotfix.
String name = "XYZ";var q = from e in nwind.Employees
where e.First_Name = name
select e;
Después de aplicar este hotfix, se selecciona el tipo de datos de la columna First_Name para el parámetro de nombre .
Sin embargo, en el ejemplo siguiente, la consulta "LINQ a entidad" produce un error porque el parámetro de nombre no se iguala a ni se utiliza con cualquier otro valor o columna.
String name = "XYZ";var q = from e in nwind.Employees
select name;
Este hotfix también resuelve un problema conocido que se describe en el documento Léame para SQL Server Compact 3.5. Para obtener más información, consulte la sección "SQL Server Compact 3.5 SP1 Runtime problemas para el ADO.NET Entity Framework" del siguiente sitio Web de Microsoft:
http://download.microsoft.com/download/2/e/c/2ec70436-aef2-4ccb-93a3-ea2f3e20f77d/ReadmeSSC35.htmEste hotfix resuelve el problema que está relacionado con incorrectas instrucciones de Transact-SQL que se generaban cuando el proveedor convierte las subconsultas escalares aplicar construcciones.
Nota: Las subconsultas correlacionadas se convierten internamente en subconsultas escalares. Las subconsultas correlacionadas no se admiten en esta versión. Al ejecutar estas consultas, recibirá el siguiente mensaje de error:
Se produjo un error mientras se ejecutaba la definición de comando. Vea la excepción interna para obtener más detalles.
La excepción interna contiene el mensaje siguiente:
Se ha producido un error al analizar la consulta. [.., Símbolo (token) error = AS]
La razón es que ADO.NET Entity Framework interpreta la consulta de entrada como una consulta que tiene el tipo de combinación CROSS APPLY o el tipo de combinación OUTER APPLY. Si el lado derecho de la condición de combinación devuelve un valor escalar, la combinación se convierte en una subconsulta escalar. El proveedor de ADO.NET Entity Framework para SQL Server Compact debe convertir esa subconsulta escalar en una consulta equivalente que tiene el tipo de combinación OUTER APPLY, que es compatible con SQL Server Compact. Sin embargo, en esta versión, esta conversión no se realiza correctamente. Por ejemplo, se produce un error de la consulta siguiente en esta versión.
C# Sample Application:using (NorthwindEntities nwEntities = new NorthwindEntities())
{
var orders = nwEntities.Employees
.Select(employee => employee.Orders.Max(order => order.Order_ID));
foreach (var order in orders)
{
Console.WriteLine(order.ToString());
}
}
Para obtener más información acerca del esquema de nomenclatura para las actualizaciones de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
Paquetes de actualización de 822499 nuevo esquema de nomenclatura para software de Microsoft SQL Server
Para obtener más información acerca de la terminología de la actualización de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684 descripción de la terminología estándar que se utiliza para describir las actualizaciones de software de Microsoft