- SQL Server Compact
-
SQL Server Compact
Microsoft SQL Server Compact (SQL Server CE) es un motor de base de datos relacional, de libre descarga y distribución, tanto para dispositivos móviles como para aplicaciones escritorio. Especialmente orientada a sistemas ocacionalmente conectados, ofrece unas características especialmente útiles para clientes ligeros. La versión más reciente es SQL Server Compact 3.5 SP1. Anteriormente era conocida como SQL Server CE o SQL Server Mobile. Desde la versión 2.0, el lanzamiento de SQL Server Compact ha ido ligado al de Microsoft Visual Studio .NET.
Contenido
Historia
Fue presentada por Microsoft en el año 2001 como SQL Server CE 1.0 para ofrecer almacenamiento relacional y sincronización de aplicaciones móviles Pocket PC 2002 desarrolladas con Embeded Visual Basic y Embedded Visual C++ con sistemas SQL Server 2000. Junto con la aparición de Visual Studio .NET 2003 y con ello .NET Compact Framework 1.1 se presentó SQL Server CE 2.0 y System.Data.SqlServerCe.dll como interfaz de desarrollo para aplicaciones .NET Compact Framework junto a la interfaz de desarrollo para aplicaciones nativas.
En noviembre del 2006, junto al lanzamiento oficial de Visual Studio .NET 2005 y SQL Server 2005, Microsoft lanza la versión 3.0 renombrada a SQL Server Mobile 3.0. Tras esta versión aparecen nuevas características y funcionalidades como el acceso simultáneo, soporte transaccional o la integración con Visual Studio .NET y SQL Server Management Studio. Hasta la fecha, SQL Server CE no ofrecia ningún tipo de herramientas de administración más que la Query Analyzer para Windows Mobile. Meses más tarde se anuncia una nueva versión bajo el nombre en clave SQL Server Everywhere la cual ofrecía soporte multiplataforma para sistemas operativos basados en Windows CE y Windows 32/64 bits. Dicha edición fue lanzada oficialmente bajo el nombre SQL Server Compact 3.1.
SQL Server Compact 3.5 SP1 fue presentada junto a Visual Studio 2008.NET SP1.
Caracterísitcas
Una base de datos SQL Server Compact, a diferencia de una base de datos SQL Server que se expone como un Servicio Windows, se ejecuta bajo en proceso de la aplicación que la consume (in-process). El tamaño máximo del archivo de base de datos es de 4 Gb. y la extensión por defecto es .sdf la cual puede ser modificada. El nombre de la base de datos está limitado a 128 caracteres. En cuanto a limitaciones destacar que el número máximo de tablas por base de datos es de 1024 con un tamaño máximo por registro de 8060 bytes con un tamaño por página de 4 Kb. y 2 Gb. para campos BLOB.
SQL Server Compact posee un motor de base de datos así como un procesador y un optimizador de consultas especialmente diseñado para entornos móviles. Soporta un subconjunto de tipos de datos y de sentencias T-SQL de SQL Server y entre las últimas novedades de la versión 3.5 se encuentran:
- Consultas jerarquizadas con SELECT FROM
- Instrucciones CROSS APPLY y OUTER APPLY
- Instrucción CAST y DECIMAL
- SET IDENTITY INSERT
- Instrucción TOP
Respecto a los tipos de datos de texto, SQL Server Compact únicamente soporta tipos de datos de cadena compatibles con Unicode (nchar, nvarchar, ntext).
A nivel de seguridad SQL Server Compact 3.5 ofrece la posibilidad de cifrado del fichero de base de datos en base a una contraseña de acceso restringida a un máximo de 40 carácters ofreciendo tres tipos de modos de cifrado:
- Platform Default (Por defecto)
- Engine Default
- PPC2003 Compatibility
Existe una única base de datos temporal por sistema la cual es imprescindible para llevar a cabo, por ejemplo, operaciones ORDER BY. Su creación es implícita si no se especifica lo contrario en la cadena de conexión.
En entornos de ejecución bajo plataforma Windows 32/64 bits, SQL Server Compact soporta transacciones ligeras a través de contextos transaccionales administrados por LTM (Lightweight Transaction Manager) expuestos desde la versión .NET Framework 2.0 a través del espacio de nombres System.Transaction. Para plataformas Windows CE podemos hacer uso de las sentencias BEGIN, COMMIT y ROLLBACK TRANSACTION de T-SQL así como a través del objeto SqlCeTransaction expuesto en el espacio de nombres System.Data.SqlServerCe.
//Ejemplo de uso de transacciones using (SqlCeConnection conexion = new SqlCeConnection(@"Data Source=BaseDatos.sdf;")) { conexion.Open(); SqlCeTransaction tran = conexion.BeginTransaction(IsolationLevel.Serializable); SqlCeCommand comando1 = conexion.CreateCommand(); //enlistamos comando1 en transacción comando1.Transaction = tran; try { comando1.CommandText = "INSERT INTO CustomerContact" + "(CustomerId, CutomerPhone, CustomerPhoneType)" + "VALUES (123, '00123654789', 'Móvil')"; comando1.ExecuteNonQuery(); //aceptamos transacción tran.Commit(CommitMode.Deferred); } catch (Exception ex) { tran.Rollback(); } }
En cuanto a herramientas de creación, diseño y administración, SQL Server Compact se integra desde la versión 3.0, con Visual Studio .NET (incluyendo la edición Express desde la versión 3.5) y SQL Server Management Studio. Desde ésta última permite consultar los planes de ejecución del optimizador de consultas antes y durante la ejecución de una sentencia T-SQL válida.
Desarrollo
SQL Server Compact puede ser consumida tanto por aplicaciones .NET Framework y .NET Compact Framework como por aplicaciones nativas. El conjunto de clases que proporciona es muy extenso y abarca desde la creación de la base de datos y mantenimiento hasta la manipulación de datos.
//ejemplo de creación de un registro mediante SqlCeResultSet using (SqlCeConnection con = new SqlCeConnection(@"Data Source=BaseDatos.sdf;")) { con.Open(); SqlCeCommand comando = new SqlCeCommand("SELECT * FROM CustomerContact", con); SqlCeResultSet rsCustomerContact = comando.ExecuteResultSet(ResultSetOptions.Updatable | ResultSetOptions.Scrollable); SqlCeUpdatableRecord registro = rsCustomerContact.CreateRecord(); //agregamos los datos al nuevo registro registro.SetInt32(0, 123); registro.SetSqlString(1, '00123654789'); registro.SetSqlString(2, 'Móvil'); //añadimos registro rsCustomerContact.Insert(registro); }
Entornos de sincronización
SQL Server Compact puede ser sincronizado con bases de datos SQL Server a través de la réplica por mezcla de SQL Server y de RDA (Remote Data Access). Para la sincronización con otros orígenes de datos distintos a SQL Server se hace uso de los Servicios de Sincronización para ADO.NET (Sync Services for ADO.NET).
Bibliografía
Libros en español sobre Microsoft SQL Server Compact:
- Torres, José Miguel, SQL Server Compact 2008 SP1: Referencia Completa. Ed. Krasis Press, 2008.
Véase también
- Sistema de gestión de base de datos
- Base de datos
Categorías: Sistemas de gestión de bases de datos de Microsoft | Windows Mobile
Wikimedia foundation. 2010.