vb.net application and microsoft access database deployment - vb.net

I have developed an application using VB.NET and used microsoft access as the database back end.
Deployment reqiurements : The application is to be deployed on a LAN with 5_15 machines. Any user profile can be accessed from any machine. Any changes to the database entries should be reflected on all machines.
I am confused about how I should achieve this deployment. According to my research :
1.The database should be deployed on one machine . This machine will acts as the database server .
My problem(s) : I am familiar with accessing databases on local machine but how to access a remote database?. How will the connection string look like? Do I need to install ms access on all machines or only on the server machine ? Do I have to deal with concurrency issues (multiple users accessing/modifying same data simultaneously) or is it handled by the database engine?
2.The application can be deployed in 2 ways : i. Storing the executable on a shared network drive on the server.Providing shortcut on desktop of each machine. ii. Storing the executable itself on each machine.
My Problem(s) : How does approach 1 work ? (One instance of an executable running on multiple machines ? :s) In approach 2 , will the changes in database entries be reflected on all machines appropriately? In approach 2, if there are changes to the application , is there any method to update it on all machines ? ( Other than redeploying it on each machine ) Which approach is preferable? Do I need to install the .NET framework all machines? How will i set the connection string to be able to access the database in the network?
Will I have to make any other system changes ( firewall,security,permissions) ? If given a choice to install the operating system on each machine ,which version of windows is preferable for such an application environment ?
This is my first time deploying a multi-user database application on a network.I'll be very grateful for any suggestions/advice,references,etc.

I will try and answer your questions:
Yes you should deploy the database onto a central machine. (Although Access may not the best choice for this sort of thing see: Is MS Access (JET) suitable for multiuser access?)
For connection strings look at this site: http://www.connectionstrings.com/access/
For deployment of your executable you should look at clickonce. This simplifies the install and upgrade of your application significantly. A small learning curve now will reduce your administration headache later.

Related

How can I built a standalone windows desktop application ,where I don't need to install any server additionally on client's machine?

I am developing desktop app using wpf mvvm,however I am confused as to how should I proceed with developing standalone application using sqlite,sql server compact etc
If you need a database (really need a database), I suggest using Entity Framework using the code first approach. This can create a local database for the application w/o the need of a database server.
However, strongly consider if you could just use files in the file system. It is amazing how much you can load into memory and if you want this to run on client machine, you likely don't have so much data that you can't just load the data into memory.
SQL Server Compact requires a separate installation step with administrative credentials.
SQLite is a library that can be compiled directly into the application.
In the case of .NET, it is a part of the System.Data.SQLite package, so it is automatically available when your application is shipped with this package (see SQLite deployment for .net application).

Can I use NAS to access database on a network?

I want to ask if I can use NAS to store the main database like for example Firebird or MySQL and access this database from network ? if so how to install the database server software ?
Sure!
What's your nas model?
For example in my Synology i can enable web server and install mysql + phpmyadmin just in few clicks.
I just need to access in the admin panel and using the PacketManager start installing the software.
I'm sure it's possible to do the same with Qnap.
A "NAS" is simply Network Attached Storage. A personal example is the Western Digital My Cloud. You can use it to host the data files themselves, but no software can be installed.
There are networked solutions that are basically mini servers. They have slimmed down versions of a Linux build that run web servers, database servers and the like. I do not have any examples to provide since I do not have the need for one, but I know they are out there from prior research.
To learn about what a NAS is, you can check out the Wikipedia article.
NAS is basically just storage, it doesn't really run a useful OS. You need a server to host MySQL or similar DB. You can install MySQL on a Windows, Mac or Linux OS, the DB file(s) would reside on those machines and the MySQL services would respond to API requests appropriately. Here are some links to installing MySQL:
Windows - http://www.iis.net/learn/application-frameworks/install-and-configure-php-on-iis/install-and-configure-mysql-for-php-applications-on-iis-7-and-above
Linux - https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu

How to move a windows .net runtime frontend application to the cloud (it uses a local sql server backend database)

I had a engineer design our .net application back in 2009, my guess is that it was coded using visual studio, and all I have is the installer application. We have been using it on our 1 or 2 local client machines very well for the past few years, but now I want to move this front end to the cloud. Instead of installing it as an application on our windows 7 machines.
It is a very simple application used in our small warehouse that keeps track of cargo/shipments etc. It uses Sql Server 2008 Express as a backend which is stored locally.
I know how to get the database in the cloud, their are many options for that, using Amazon or Azure, but how do i get the local client application to the cloud?
I dont have access to the visual studio code, i just have the runtime executable file..
I am sure there is no way to do this, and many of SO users will say i need to re-write the front end.
I have tried to contact the developer and they hav since closed down. Is their anyway i can run this in the cloud?
I welcome all options and solutions!
Thanks.
I believe you have two options for hosting this application:
If you are able to configure the database connection string, you could host the database in the cloud, and distribute the application to your end users. However, you've already stated that you know how to move the database, so I assume this isn't an option.
The only alternative is to run the entire application on a cloud server, and send the user interface to a client using terminal services. This makes it appear as if the application is running locally on the user's computer, while it is actually running on the server.
For an off-the-shelf solution to achieve this, you could consider using Microsoft's RemoteApp Azure service. I'm sure there are other similar offerings available.

how to use a desktop software without having sql server installed on system?

consider I write a desktop software in C# for example,and it reads/writes data to/from sql server,Can I run this software on a system without having sql server installed.
I saw the two links of stackoverflow,but did not get my answer.
I want to know CAN THAT BE DONE OR NOT?
if yes,how?
thanks in advance.
Sql Server must be installed, and running, somewhere to be able to use it. However, this does not need to be on local machine. The most common scenario for Sql Server is to be installed on a dedicated server machine off in a data center somewhere, and either many clients will connect to and use the same database, or one or a few web servers will connect potentially many times per second with different requests. It's not really intended for desktop use.
If you want to build a desktop app, and you want a database to use only as a local data store, Sql Server is actually a really poor choice for this. That includes the free Sql Server Express. Don't use it for applications that will be distributed to end users, where all the data will kept on each user's local system. It is a server-class engine, and works best when it can run on dedicated hardware.
Instead, you want a desktop-class or in-process database engine, such as Sqlite, Sql Server Compact (not Express) Edition, or even MS Access.
There are many SQL engines that can be embedded in desktop application. For example SQLite, there should be one with C# interoperability.

How do I speed up my application connecting to MS SQL Server?

I have a Delphi application running on SQL Server 2000, but it's taking awfully long to connect to the database!
But when I run this application on my development server it connects pretty fast!
I am running on Windows 2003 server, SQL Server 2k personal edition, when I look on my MDAC version in the registry, I see version 2.8 already installed!
Any ideas why this happens on the production machine but not on the development machine?
There's a reasonable chance that this is down to a network level issue connecting to the database. Depending on whether you're running the application and database on the same box of course.
Try connecting to the database from the same machine using a different tool. You could set up a data source and test it from the control panel as an alternative. If the connection is slow from another tool test the connectivity between the servers for other types of connection (e.g. run a ping). It may be that it's resolving the server via broadcast rather than the domain, for instance. Or any number of other issues - firewall, switch, wins etc.
If you are connecting using integrated authentication also ensure that the database can resolve the application server as well as vice versa. This is part of the authentication process and I've seen it cause slow downs in creating database connections before.
In short, I'd be confident that this isn't a problem specific to delphi / sql, but something in the communications between your production servers.
Good luck!
Keep your connection open once you have established it. This is called connection pooling and will improve performance. I have no clue how to do it with a delphi application.
Your problem most likely is network or transport layer related
Are you connecting through TCP, Named Pipes or another mechanism?
Have you tried tracing opening a connection with Microsoft SQL Profiler?
regards,
Lieven
I had a problem a long time ago like this, and it came down to the workstation section of the connection string. its possible if you've copied the connection string from your dev machine that the workstation parameter is still in the connection string and pointing to your dev machine which probably does not exist on your deployment network.
In this case your connection to the database has to wait until the network tries to connect ot a non-existant machine (which obviously takes time). Remove the workstation cluse and it will speed up no end.