The availability and functionality of features can differ between UltraLite and SQL Anywhere.
|Transaction processing, and multi-table joins||X||X|
|Triggers, stored procedures, and views||X|
|External stored procedures (callable external DLLs)||X|
|Built-in referential and entity integrity||X||X|
|Cascading updates and deletes||X||Limited||Declarative referential integrity, where deletes and updates are cascaded, is a feature that is not supported in UltraLite databases, except during synchronization when deletes are cascaded for this purpose.|
|Dynamic, multiple database support||X||X|
|Multithreaded application support||X||X|
|XML unload and load utilities||X||
UltraLite uses ulload, ulunload, uljload, and uljunload administration tools to complete XML load and unloads.
Not all SQL functions are available for use in UltraLite applications. If you use an unsupported function, you trigger an error.
|SQL statements||X||X||The scope of SQL statements is different compared to SQL Anywhere.|
|Integrated HTTP server||X|
|Strong encryption for database files and network communications||X||X|
|Event scheduling and handling||X||X||An UltraLite event model differs from SQL Anywhere.|
|High-performance, self-tuning, cost-based query optimizer||X||UltraLite has a query optimizer that is not as extensive as that of SQL Anywhere.|
|Choice of several thread-safe APIs||X||X||UltraLite gives application developers a uniquely flexible architecture that allows for the creation of applications for changing and/or varied deployment environments.|
|Dynamic cache sizing||X||X||
UltraLite allows you to set an initial, minimum, and maximum cache size for a database using the CACHE_SIZE, CACHE_MIN_SIZE, and CACHE_MAX_SIZE connection parameters, respectively. The size of the cache is optimized by UltraLite on an ongoing basis, up to the maximum size (if specified).
|Database recovery after system or application failure||X||X|
|Binary Large Object (BLOB) support||X||X||UltraLite cannot index or compare BLOBs.|
|Windows Performance Monitor integration||X|
|Online table and index defragmentation||X|
|Direct device connections to a Windows Mobile device from the desktop.||X||SQL Anywhere databases need a database server before allowing desktop connections to the database that you deploy on a Windows Mobile device. On UltraLite, you prefix the connection string with WCE:\.|
|High-performance updates and retrievals through the use of indexes||X||X||
UltraLite uses a mechanism to determine whether each table is searched using an index or by scanning the rows directly.
Additionally, you can hash indexes to speed up data retrieval.
You can use the max_hash_size creation parameter to set the maximum hash size.
|Synchronizing to SAP HANA, Oracle, DB2, SAP Adaptive Server Enterprise, Microsoft SQL Server, MySQL, or SQL Anywhere||X||X|
|Built-in synchronization||X||Unlike SQL Anywhere deployments, UltraLite does not require a client agent for synchronization. Synchronization is built into the UltraLite runtime to minimize the components you must deploy.|
|Declared temporary tables/global temporary tables||X|
SQL Anywhere supports the DEFAULT TIMESTAMP default.
UltraLite only supports the DEFAULT CURRENT TIMESTAMP default. Therefore, UltraLite can not automatically update the timestamp when the row is updated.
|User-based permission scheme to determine object-based ownership and access||X||UltraLite is primarily designed for single user databases in which an authorization system is not needed. However, you can include up to four user IDs and passwords, which are used for authentication purposes only. These users have access to all database objects.|
|Spatial data||X||Limited||UltraLite supports point data only.|
|Full text data||X|