installing database engine without admin rights - c#

I have a project with vb-2013 and my database is access 2013.
When I run my project on another computer this error appears:
Microsoft.ACE.OLEDB.12.0 provider is not registered on the local
machine error
Is there a way to install a Microsoft database engine without admin rights because of security policies
or
adding any dll file to my project to run it without installing Microsoft database engine.

Not to my knowledge, no. All ODBC and OLE-DB driver binary registrations are handled by systemwide controls. ODBC does allow for per-user connection settings, it still requires systemwide binary installation. If you're writing a "portable" (installation-free) application I recommmend using Sqlite instead.
As an aside, there are very few reasons to use JET Red (MS Access) today over actively-developed systems like Sqlite considering how limited the tooling is, and how SQL implementation is non-standard (e.g. it doesn't support COALESCE and it also requires a parenthesis pair around every JOIN) .

Related

How to connect to a .mdb or .accdb with C# using Mono?

I have an app developed in Visual Studio and this uses MS Access DB and C#, now I need to migrate it to Linux, I'm trying to use the same database, but for now I receive this message "the .Net Framework Data Providers requiere Microsoft Data Access Components(mdac)". I used .Net portability analyzer to detect what is supported in mono what's not, and everything apears to be supported. I have read mono database access but the only option it gives is through MDB tools.
I have read about MDB Tools http://mdbtools.sourceforge.net/ but it's still in a development stage, is there another alternative or I need to use another database manager like SQLite?

Can ClickOnce or InstallShield setup SQL Server or SQL Server Express?

Can ClickOnce or InstallShield setup or configure SQL Server or SQL Server Express specifically adding an sa password, enabling named pipes, granting permission to read from folders, adding primary database (.mdf files) needed for my client application.
Or do I need to hard-code those functions from my client app?
Can ClickOnce do it?
Yes, but...... ClickOnce can install dependencies like this, but due to the nature of the SQL Server install I personally would avoid doing it that way. It's not a task for those in a hurry or who don't like dealing with weird problems when things go wrong. To show how non-trivial this can be you can check the posts How to deploy SQL Server 2008 Express as a prerequisite with ClickOnce and ClickOnce Prerequisites: where is SQL Server Express 2014 LocalDB?.
Can InstallShield do it?
Yes, but there can and probably will be curveballs. You could do it as:
a chained install. This whitepaper talks about how to use a chained MSI.
including the InstallShield SQL Server Express prerequisite package in your installer (as mentioned here)
Personally wouldn't approach it either of these ways - instead I would write a custom action that invokes the SQL installer and passes in the parameters gathered (i.e. install location for SQL, passwords for initial logins, etc.). The SQL install is also not strictly transactional - it can fail during the install and some changes will not be reversed.
Should you manage to put this together as an installer bootstrapper, be aware of issues like Can't install SQL Server by using InstallShield or bootstrapping application.
I would also advise you to offer the user the option of installing SQL Server as they may already have an instance available - try not to install it always.
What about database creation and configuration?
This can be done in a variety of ways, but doing it all within the MSI installer is starting to get horribly complex - it can be far simpler and quicker to write a simple configuration utility for the end user, or to build the functionality into your application.
How you go about creating the database and configuring the SQL instance is heavily dependent on your requirements, which you haven't specified in your question.

creating application with entity framework and embbeded firebird

Information
I'm using VS 2012 to develop a desktop WPF application (should run on win 7 and 8 later it will get a win 8 app),
with an embedded Firebird server,
and communicate with entity framework.
I'm using win 7/8 for development both with VS2012.
Problem
The application should work with embedded firebird at customer PC (no installation of FB).
I did Install the DDEX Provider for Visual Studio(3.0.0.0), as far it worked. I could add a new firebird connection (but getting error fbembed.dll not found). so i cant create the edmx file.
Do i need to install the firebird server(Superclassic/Classic or Superserver) or is it enough to just use Embedded server on my developer PC? if embedded is enough do i need to register the firebird client on gac?
as far i didn't found any useful information how to install and use it, and how to deploy it. do you guys have some good information links?
For embedded server you just have to deploy the Firebird files along with your application and put the dll file somewhere accessible for it, for example, in the same folder.
The minimum files you have to deploy to get Firebird working is:
FbEmbed.dll
icudt30.dll
icuin30.dll
icuuc30.dll
firebird.msg
firebird.conf
This information, along with more usage instructions, is available in the file doc\README_embedded.txt.
USAGE
Just copy fbembed.dll, icudt30.dll, icuin30.dll and
icuuc30.dll into the directory with your application.
Then rename fbembed.dll to either fbclient.dll or
gds32.dll depending on your database connectivity software.
Then start your application and it will use the embedded
server as a client library and will be able to access
local datasases. You should also copy firebird.msg and
firebird.conf (if necessary) to the same directory.
If external libraries are required for your application,
then you should have them separately. Most probably, it
will be INTL support (fbintl.dll and fbintl.conf) or UDF
libraries. To be able to use them, you should place them
into the directory tree which emulates the Firebird server
one, i.e. has subdirectories like /intl or /udf:

Microsoft Access Database instead of SQLite or Local Database

Does a Microsoft Access Database is a possible solution to this question? SQLite seems to be exactly what I want but I cannot make it work in the .NET framework 4.0.
I was thinking about using a Microsoft Access Database but I don't know if when deploying my application the database is going to be portable?
Do users need to have Microsoft Access installed in their computers if I plan to deploy my application with a Microsoft Access Database?
In case all this is possible and I decide to use a Microsoft Access DB where will I place the database?
As a resource and extract it when installing it?
I haven't had problems using SQLite using with the provided .NET assemblies.. As an alternative you could try using Microsoft's SQL Server CE, which is a lightweight database designed for deploying to clients. I don't see why you'd use Access db instead of either of the other two..
Filip-fku thanks to your answer I found how to work with SQLite and the .Net framework 4.0 in here
The Jet database engine is installed on every copy of Windows beginning with Windows 2000, so if you use MDB format, you don't have to install anything to have access to a Jet MDB file.
If, however, you use ACCDB format, you'd have to install the ACE.

File-based options for datasource in .NET application

I'm in the process of developing a .NET application that needs to be able to run without a database engine installed on the target machine.
It's predecessor used an mdb file to achieve this. Is there a better alternative now? The database will only have one user in 90% of cases. In the other 10% an standard SQL Server would be used.
The new version of SQL CE looks promising, as blogged by Scott Gu.
There is an ADO.NET Data Provider for SqLite. It provides a fully-functional, single assembly "database engine" that can be deployed with your application, and used without being "installed" on the target machine.
Also...
Advantage Local Server
Is this going to run only on Windows boxes? If so, you have a database engine installed on every machine that is Windows 2000 or later, and that's Jet 4.0 (including DAO 3.6). So, as long as your deployment is limited to Windows and you're not compiling for 64-bit, you can continue using an MDB.

Categories