Gibraltar VistaDB Embedded Database for .NET v6.2.3
Gibraltar VistaDB Embedded Database for .NET v6.2.3
Microsoft has worked hard to make .NET and SQL Server a powerful combination - and VistaDB brings that capability to a small, easy to deploy package. Instead of having to ship a large installation which has to be set up independently for your application to work you can just ship 2 MB of extra assemblies with your .NET application. It's easy to make applications that start with VistaDB and scale up with SQL Server, all from a common codebase.
Compared to Microsoft SQL Server...
Tiny Distribution: The core engine is just over 1MB in size when deployed (often 450kb when compressed) compared to over 132MB for the compressed SQL Express installation.
Cross-Platform: Works on 32 or 64 bit and can be deployed under Mono and .NET
Full Database Encryption: Instead of just encrypting individual fields or tables the entire database file is encrypted.
No Privileges Required: VistaDB can be used even by guest accounts, not requiring any special OS permissions to create or work with databases or be deployed.
Easy Database Distribution: Since a database is just a file including schema and data it's easy to make backups and create new databases just using standard file operations.
Compared to Other Embedded Databases...
100% Managed Code for Simple Deployment: Only one set of assemblies is needed, covering 32 or 64 bit, Intel and ARM processors.
Impressive Commonality with Microsoft SQL Server: Data types, User-defined Functions, and even Stored Procedures can all be shared between SQL Server and VistaDB
FIPS-compliant Full Database Encryption: Securely encrypt the entire database including schema and data using FIPS-compliant AES encryption
Visual Studio Integration: Full designer support within Visual Studio including the Dataset designer, Entity Framework Designer, schema management, and query building.
.Net Database Basics
If a relational database doesn't have advanced features like updatable SQL Views, true referential integrity, cascading updates / deletes, table value params, T-SQL stored procedures, CLR Triggers, and CLR stored procs then why would you bother? Database engines that only provide basic ADO.NET features are a waste of your time. VistaDB is the most advanced embedded SQL desktop database engine in the world. We built VistaDB from the ground up to be a managed database engine, this is not some unmananged C++ database with a .Net wrapper!
Support VistaDB and SQL Server from the same executable?
Do you wish you could build a single executable that supported both SQL Server for multi user and another database on the desktop? We know how hard it is to build applications that support both desktop and client server from a single executable. VistaDB syntax contains the most commonly used features from SQL Server. All of our syntax will scale up to SQL Server. This means you can use one codebase in your product and run it against SQL Server and VistaDB. VistaDB fully supports the ADO.NET Provider Factory model. This allows you to dynamically load the database engine at runtime based upon application preferences. Many companies use VistaDB on the desktop and SQL Server for larger deployments. It is not the easiest way to write database code, and there is much less documenation around to explain how to do some things in Visual Studio. But if you take the time using Provider Factories can be a powerful runtime feature for your application.
.Net Database Admin Tools?
Some embedded databases give you an engine and nothing to edit or maintain the actual database. You usually have to purchase a third party DBA tool, build you own, or tell users to go download the large bulky tool from the vendor.
Performance
We have done a deep dive into the way VistaDB processes queries and implemented many query optimizations. Relative to VistaDB 4.3, VistaDB 5 is generally 25-30% faster across the board with some queries now running in milliseconds rather than seconds, seconds rather than minutes.
SQL Compatibility
VistaDB 5 includes new T-SQL language features such as ANSI standard OFFSET/FETCH paging as well as new data types including DATETIMEOFFSET, DATETIME2, DATE, TIME, DOUBLE PRECISION, FLOAT, BINARY(N) and VARBINARY(N). VistaDB 5 also includes improved compatibility with T-SQL scripting and improvements to SQL functions such as CONVERT and RAND.
Security
The previous database encryption which used a managed implementation of Blowfish has been replaced with the FIPS-compliant AES implementation built into the .NET runtime. When an encrypted database is upgraded it will be converted from Blowfish to AES. For .NET 4.0 and later the FIPS-compliant unmanaged implementation built into the .NET runtime (which leverages the Microsoft Crypto API underneath) is used. For .NET 2.0 the managed implementation is used since the FIPS-complaint implementation isn't available.
The new encryption support is now database-wide instead of requiring individual columns to enable encryption. This protects the entire database including schema. This mode is also faster than the previous implementation.
Reliability
VistaDB 5 includes dozens of fixes for errors in the query parser and execution engine that have been reported by users of the past couple years. Additional bug fixes correct issues reported in VistaDB tools and Visual Studio integration.
Tooling
VistaDB 5 includes improvements to the Data Migration and Data Builder tools as well as support for Visual Studio 2013 and Entity Framework 6. In addition, VistaDB includes new diagnostic logging support that you can use with Gibraltar Loupe or other logging tools to assist with database debugging and query optimization.
We have done a deep dive into the way VistaDB processes queries and implemented many query optimizations. Relative to VistaDB 4.3, VistaDB 5 is generally 25-30% faster across the board with some queries now running in milliseconds rather than seconds, seconds rather than minutes.
SQL Compatibility
VistaDB 5 includes new T-SQL language features such as ANSI standard OFFSET/FETCH paging as well as new data types including DATETIMEOFFSET, DATETIME2, DATE, TIME, DOUBLE PRECISION, FLOAT, BINARY(N) and VARBINARY(N). VistaDB 5 also includes improved compatibility with T-SQL scripting and improvements to SQL functions such as CONVERT and RAND.
Security
The previous database encryption which used a managed implementation of Blowfish has been replaced with the FIPS-compliant AES implementation built into the .NET runtime. When an encrypted database is upgraded it will be converted from Blowfish to AES. For .NET 4.0 and later the FIPS-compliant unmanaged implementation built into the .NET runtime (which leverages the Microsoft Crypto API underneath) is used. For .NET 2.0 the managed implementation is used since the FIPS-complaint implementation isn't available.
The new encryption support is now database-wide instead of requiring individual columns to enable encryption. This protects the entire database including schema. This mode is also faster than the previous implementation.
Reliability
VistaDB 5 includes dozens of fixes for errors in the query parser and execution engine that have been reported by users of the past couple years. Additional bug fixes correct issues reported in VistaDB tools and Visual Studio integration.
Tooling
VistaDB 5 includes improvements to the Data Migration and Data Builder tools as well as support for Visual Studio 2013 and Entity Framework 6. In addition, VistaDB includes new diagnostic logging support that you can use with Gibraltar Loupe or other logging tools to assist with database debugging and query optimization.
VistaDB 6.1
Summary Full release of VistaDB with .NET 5 support, improved Linux and MacOS support, and fixes to known issues.
New Features in This Release
.NET 5 Support
The VistaDB Engine now ships with support for .NET 5. The VistaDB Engine is now built for:
.NET Framework 4.5.1 - The oldest version of .NET Framework supported by VistaDB 6.
.NET Framework 4.6.1 - To prevent .NET 4.6.1 from using the .NET Standard 2.0 version.
.NET Standard 2.0 - For older versions of Xamarin Android, iOS, and Mac and newer versions of .NET Framework
.NET Standard 2.1 - For .NET Core 3.* and newer Xamarin Android, iOS, and Mac.
.NET 5.0 - For the latest .NET Core (e.g. .NET 5) and Xamarin.
To make it easier to use VistaDB in new projects that target multiple versions of the framework the VistaDB assemblies are provided as NuGet packages for local use instead of as individual assemblies.
Improved Locks for Single Process Usage
The handling of locking for Single Process open modes has been improved in VistaDB 6.1, particularly in cases of significant contention for the same database table by multiple readers and writers. Performance with these modes is improved over VistaDB 6.0 and the locks are consistently granted in a more fair first-come-first-served manner when multiple connections are waiting on the same table lock. No code changes are necessary to take advantage of this improvement if your Single-Process application is already using SingleProcessReadWrite or SingleProcessReadOnly open modes. (SingleProcessReadWrite is the default if no Open Mode is specified in the connection string.)
Issues Fixed in 6.1.0
Engine
Fixed: Connection Pooling breaks Entity Framework.
Fixed: Executing BEGIN TRANSACTION fails claiming connection is already in use.
Fixed: SingleProcess and MultiProcess open modes fail on MacOS & Linux.
Fixed: SingleProcess open modes can get excessive lock-timeout errors.
Fixed: Breaking Change: VistaDBDataReader indexer (Item) properties this[int] and this[string] return a .NET null for NULL column values rather than the ADO.NET standard DBNull.Value.
Data Migration Wizard
Fixed: SQL CE tables with auto-increment columns fail migration if table name needs to be quoted.
Fixed: ROWVERSION column type is not recognized as an alias for TIMESTAMP type and migrated for SQL CE and SQL Server databases.
Known Issues
Engine
VistaDBCommand.ExecuteScalar() does not match ADO.NET specification, returning .NET null instead of DBNull.Value when result is NULL but not empty.
Visual Studio 2017/2019
Extension Doesn't Automatically Install If Visual Studio is Running: If any instance of Visual Studio 2017 or later is running when the installation runs the VistaDB extension will not automatically install into Visual Studio 2017 or 2019. To manually install, double-click VistaDB.6.VisualStudio.NET461.vsix in the C:\Program Files (x86)\Gibraltar Software\VistaDB 6\Bin directory (by default)
Summary Full release of VistaDB with .NET 5 support, improved Linux and MacOS support, and fixes to known issues.
New Features in This Release
.NET 5 Support
The VistaDB Engine now ships with support for .NET 5. The VistaDB Engine is now built for:
.NET Framework 4.5.1 - The oldest version of .NET Framework supported by VistaDB 6.
.NET Framework 4.6.1 - To prevent .NET 4.6.1 from using the .NET Standard 2.0 version.
.NET Standard 2.0 - For older versions of Xamarin Android, iOS, and Mac and newer versions of .NET Framework
.NET Standard 2.1 - For .NET Core 3.* and newer Xamarin Android, iOS, and Mac.
.NET 5.0 - For the latest .NET Core (e.g. .NET 5) and Xamarin.
To make it easier to use VistaDB in new projects that target multiple versions of the framework the VistaDB assemblies are provided as NuGet packages for local use instead of as individual assemblies.
Improved Locks for Single Process Usage
The handling of locking for Single Process open modes has been improved in VistaDB 6.1, particularly in cases of significant contention for the same database table by multiple readers and writers. Performance with these modes is improved over VistaDB 6.0 and the locks are consistently granted in a more fair first-come-first-served manner when multiple connections are waiting on the same table lock. No code changes are necessary to take advantage of this improvement if your Single-Process application is already using SingleProcessReadWrite or SingleProcessReadOnly open modes. (SingleProcessReadWrite is the default if no Open Mode is specified in the connection string.)
Issues Fixed in 6.1.0
Engine
Fixed: Connection Pooling breaks Entity Framework.
Fixed: Executing BEGIN TRANSACTION fails claiming connection is already in use.
Fixed: SingleProcess and MultiProcess open modes fail on MacOS & Linux.
Fixed: SingleProcess open modes can get excessive lock-timeout errors.
Fixed: Breaking Change: VistaDBDataReader indexer (Item) properties this[int] and this[string] return a .NET null for NULL column values rather than the ADO.NET standard DBNull.Value.
Data Migration Wizard
Fixed: SQL CE tables with auto-increment columns fail migration if table name needs to be quoted.
Fixed: ROWVERSION column type is not recognized as an alias for TIMESTAMP type and migrated for SQL CE and SQL Server databases.
Known Issues
Engine
VistaDBCommand.ExecuteScalar() does not match ADO.NET specification, returning .NET null instead of DBNull.Value when result is NULL but not empty.
Visual Studio 2017/2019
Extension Doesn't Automatically Install If Visual Studio is Running: If any instance of Visual Studio 2017 or later is running when the installation runs the VistaDB extension will not automatically install into Visual Studio 2017 or 2019. To manually install, double-click VistaDB.6.VisualStudio.NET461.vsix in the C:\Program Files (x86)\Gibraltar Software\VistaDB 6\Bin directory (by default)