How to deploy application to many users - c#

I have got a C# .NET application which uses an SQL Server 2008 R2 database.
I have no problem deploying the actual application to multiple PCs, however I am having a whole world of trouble deploying the database. The application is going to be used by a large amount of users - it can be downloaded and installed by anyone. My problem is that the application uses a connection string to connect to the database.
How am I going to include the database as part of the installation using the Visual Studio publish tool, and make sure that it will work on any installation with the same connection string.
I have spent a long time searching, and have tried out many potential solutions, including this, however in the latter particular case, the application could not find the database when it was deployed.

As per your given SQL connection, it seems your are using Sql Server Express edition, to bundle express edition with your application, here are the options,
Add SQL Server Expression edition setup in your installation media, and invoke setup.exe through your setup program
Or you can use Web Platform Installer
Or you can simply check in your setup program, whether desired SQL Server Express Edition is installed, if NOT then display the message to user that "Please install the Sql Server Express Edition", and guide how he/she can install, for example providing a download link
Or you can go with Sql Server Compact Edition which is a light weight version and I think only few DLLs are required to make it functional on end user's PC.
For more information:
Sql Server Express Edition:
http://blogs.msdn.com/b/user_ed/archive/2012/12/09/how-to-embed-sql-server-express-in-an-application.aspx
Sql Server Compact Edition:
https://msdn.microsoft.com/en-us/library/aa983326(v=vs.140).aspx

Related

How to create a installer for C# windows application with SQL Server database integrated

I have a C# application that I want to install on my clients computers. It has a SQL Server database connection so that it can store data. I want to create a installer so than I can install the app on clients computer.
So far I tried Installer shield and advanced installer and I could not manage to pull it off.
NOTE: I can't install Microsoft SQL Server Management Studio on clients computer due to toughness.
NOTE: I'm using Visual Studio 2019 with Microsoft SQL Server Management Studio 2017 and .NET 4.5 and DevExpress and because I'm using DevExpress I have some reference files to copy to client directory.
If the users are not sharing their data with one another, you don't need SQL Server to begin with. There are other data storage options, ones that don't require an enterprise grade client-server database.
Your app can use a local database such as SQLite. You can use files - JSON or XML allow for easy parsing from C#.

Database connectivity in windows form application

I have created a Billing Software using windows forms and sql server 2012.
Now i'm very confused over many things regarding database connectivity.
After making exe file, for installing in client machine i have to install sql server in client machine and configure the database then install my application.
My doubt is.. is this how this procedure works? I downloaded some billing software from internet and how they work without configuring a database? and which is the best practice? should i install sql server in client machine ?
If you just want a single standalone database per instance of the application - specific to the computer installed on - then you have a few options.
SQLite - https://sqlite.org/
SQL Server Express LocalDB (this is the 2016 version) -https://msdn.microsoft.com/en-us/library/hh510202.aspx
Both of these run stand alone databases that can be embedded into your program using visual studio. There are others, but these are the ones I'm familiar with.
Syntax for SQLite has some differences to its syntax (mostly package specific) however SQL Server Express LocalDB runs the same T-SQL as the standard SQL Server package
You do not have to install SQL Server on the client machine. The clients connect via network to the central database using some database client drivers.
Assuming that you are using ADO.NET then you have configure the clients somehow to use the right connection string, where server name, database name etc. is contained.

Deploy application using installshield

I have developed an WPF application using .Net 4.0 framework. I have installed SQL 2012 Express edition on my machine .
My application performs basic CRUD operations on this database using appropriate connectionstring. I am very new to deployment. so my question is How can I deploy my mdf files at the client end ? I cannot install ~130MB of software at client end just for my 4MB of mdf files it doesn't make sense. Also while deploying project I saw this pre-requisites screen
My questions are:
(I think if i check SQL Server 2008 Express SP1 it will download it at client end) But I have SQL 2012 Express Edition Installed so how can I go with it ?.
Also is it possible If I give client seperate exe of my SQL 2012 Express edition ? (There is no need for management studio at clientside.so what should be given to client so it that installs only those software which are required to run .mdf file )
To answer your first question,
1. You will require a .prq file for SQL server 2012. Either you can create it or you can download it from web. You can add/edit '.prq' file from 'Redistributable' section.
For your second question,
2. You can pass the setup of aql 2012 express to your client with specific instructions to only install server and not the management studio.
You need SQL Server Compact most probably

Placing a database within WinForm project and licensing options

We plan on pushing a windows application on computers external from our companies network (in various locations). I'm wondering what options I have for databases. I'd like to use SQL Server, but is there a way to avoid paying for licenses for each PC we load the windows application on?
Also, is there a way to have the data part of the executable when deploying the application, or would I need to install SQL Server on each machine?
Thanks!
As an alternative and a bit newer technology to Sql Server Compact Edition, you could use LocalDB.
Both are MS SQL products, but LocalDB doesn't have the disadvantages of CE, is still a file based DB and doesn't require the server installation, configuration and maintenance of SqlServer Express, only the runtime components.
Here you can find a nice comparison between Express, Compact and LocalDB
and here you can find the introduction of LocalDB by Microsoft.
The licensing of LocalDB is the same as for SqlExpress and you also need an installer to run for the runtime components of LocalDB (which is one downside when compared to CE).
Is there a way to avoid paying for licenses for each PC we load the windows application on?
Presumably you're just accessing a local database on these machines right? In that case you can use SQL Server Compact. It's free and pretty darn good.
Is there a way to have the data part of the executable when deploying the application?
If you're deploying your application via ClickOnce, then you can set SQL Server Compact as a prerequisite so the application will check for its presence and install it if needed.
Otherwise, you can push it out like any other prerequisite as part of the installer package (i.e. InstallShield or WiX).

Is it possible to run an application built on sql server 2008 to run with 2005

I have a .NET 4.0, SQL Server 2008 application built on VS 2010.
Since more than 10 months I have been working on a project and its completed now. I moved to the next task of creating an installation of the software. Its also done. But now I have a big issue.
My clients already run software running SQL Server 2005 and its installed on their system. However when I was packaging my VS2010 C# application, I deployed it with prerequisite of SQL Server 2008 but now the problem is, when I try to install my application, it asks to uninstall the 2005 and then to install 2008. But my clients are very rigid to allow my program to uninstall any application on their system. I am stuck here.
I also tried to remove it from my prerequisites and the application was successful to install itself but after when I tried to run my application, its unable to access the database.
How I can solve this issue? Is there any way to make application and database both work with SQL Server 2005 or 2008. Or maybe any other expert advice.
EDIT 1
I also have Datetime stuff which really annoyed with to accomplish, as my project is multilingual so I have separate functions to handle datetime to insert in SQL.
EDIT 2
Is it possible to upgrade SQL Server 2005 to 2008 using my own Visual Studio Deployment Project?
EDIT 3
This is the error I am getting
Prerequisite check for system component SQL Server 2008 Express failed with the following error message:
SQL Server 2008 Express Service Pack 1 (x64) cannot upgrade the existing instance of SQL Server 2005 Express (x64 WoW) named 'SQLEXPRESS'. Uninstall this instance of SQL Server 2005 Express and retry installing SQL Server 2008 Express Service Pack 1 (x64)."
See the setup log file located at 'C:\Users\BOOGI~1\AppData\Local\Temp\VSD41A1.tmp\install.log' for more information.
EDIT 4 (Main)
Is it possible to make a Microsoft SQL Server database file compatible to run with both SQL Server 2005 and SQL Server 2008?
It is usually not a problem to run an application against any version of SQL Server. Create the database using Management Studio and you're ready to go.
If you have a setup, you may need to change the prerequisites, so that it works with SQL Server 2005.
You may have to adjust the connection string. In the error message you're providing, it is obvious that the instance name of the SQL Server is "SQLEXPRESS", so you need to add this in your connection string.
Also, it is not a problem to run SQL 2005 Express and 2008 Express side by side.
One thing you can do is install SQL 2005 in your development machine or another machine then migrate your schema's and data from SQL Server 2008 to SQL Server 2005 and get your C# application working again. .NET 4.0 doesn't care which version of SQL server you are connecting to as long as you have the appropriate drivers installed for each appropriate database.
For your datetime create a function in SQL server so that it works in both version. Check out some examples in this link.
Thanks,
Kalagen

Categories

Resources