At work, we have local area network which consists of 1 server and 11 client computers.
I am planning on building an application which runs on client computers that extracts data from the database on server and use the data on calculations and show the result.
The database belongs to an accounting application and the application I will make will run parallel to this application.
Since we have firewall installed, all ports are closed.
So what are my options here and what would you do if you were in my position?
Related
I have developed a c# windows application which uses SQL server 2012 database in Visual Studio 2015 which is running well on my pc.
I am to install this application on a number of computers without SQL server installed on it, but when I run the application, its gives me database connection error.
My question is, how can I create the setup file to be able to run the app on those clients pc without installing SQL server on all those computers. Please I need your help.
Thank you.
Am Emmanuel.
Use an Azure database and have the clients connect to that.
Have a look at https://azure.microsoft.com/en-us/services/sql-database/
Alter your application connection string and make sure you keep the connection string secret.
Server=tcp:myserver.database.windows.net,1433;Database=myDataBase;User ID=mylogin#myserver;Password=myPassword;Trusted_Connection=False;Encrypt=True;MultipleActiveResultSets=True;
An important fact is that the clients need to allow communication via port 1433.
If this is not an option create an API application and query the database via that.
If you need a private database per client you can use a database file and connect to the file
https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/sql-server-express-localdb?view=sql-server-ver15
Update based on reply
You can create a pop-up on the application allowing the users to add valid settings and credentials when your appsettings.json is blank or "a test connect" to the database fails.
I am working on a trading application where we get streaming rates from the server within seconds or even milliseconds. The server and database run on the same Linux environment. The client is actually accessible from any location using JNLP/ Java web start. The user can directly download the JNLP file from a provided URL and launch the client application on his system and directly connect to the server regardless of where the server is located.
Now, the problem is when we are not using SSL, the application runs just fine. But with SSL slowness is observed which drastically reduces the performance of client application. However, the same thing is not observed when client and server both are running on the same machine (Windows). Does anyone have an idea about possible reasons which can cause this slowness?
The problem statement:
Suppose there are 20 windows machines within a local network. One of the machines serves as the server and hosts the database. Now, the other 19 machines have the access to read from the server machine, but the server machine does not have username and password for any of the other 19 machines.
I have to update a desktop application installed on all the machine. There is a spring-boot application, hosted on the server machine which downloads the build. Now, as soon as I download the build I have to notify all the other 19 machines that build has been downloaded so that they can read and update themselves.
Solution 1: Install a windows service which will poll the server and check if updates are available.
Solution 2: Host a POST web API on the 19 machines and notify them by making a post call. I think installing IIS or Tomcat on every machine is not viable.
Is there any other optimal solution for notifying the client?
Note: We cannot take the RDP and neither have credentials but we can make use of already deployed windows application on the other 19 clients.
Solution 3: If your machines share the same domain, use msi install packages to update software all across domain by using Group Policy. It's common way.
Solution 4: Launch desktop application directly from server shared folder. It works good while server machine is always accessible and application is not too heavy for your LAN.
Here you need some care about writing new application files while it running on client computers. Good way is to keep a different folders for different versions and launch with shortcut pointing to latest one:
v1.3\app files here
v1.4\app files here
v1.4.6\app files here
v1.7\app files here
app.lnk → v1.7\app.exe
client machines launch the application with app.lnk.
Upd: if you update application when nobody works (see 1am…2am), you can omit all of this versioning stuff.
Solution 1: It work as well. You can use NSSM to easily launch your update script or exe-file as a Windows service.
I would use a windows service or a scheduled task (both could be the same application you provide, but with some arguments). It frequently checks if a new version is available (maybe only once a day).
If you only have a short time frame when the new version has to be installed on all machines you could also provide an installation date with the new version. (Maybe the check will be done through a REST api where the client sends the current installed version number and the server answers with an status code 200 and the body is either empty or provides an json object containing the new version number, the due date and the download url.)
Then the client can already download the new version and make it available on the machine, but it triggers the installation only when the due date is reached. This check of the due date can happen more often, cause all informations are already on the client machine and can be done locally.
In my Windows virtual machine, one Unix server hosted where Informatica is installed.
I want to connect oracle exadata dB which is present in different server.
I opened firewalls between Unix server to oracle exadata server. While trying to connect from Unix server using SQL client (sqlplus), I am able to connect. But from Informatica client which is present in same windows virtual machine, it is not working.
My doubt is do I need to open firewall from vm window also for client? If so does this mean, for new data source connectivity for informatica client and server we need to treat them separately?
To understand the question, consider this scenario. Two employees log in to an Application server via Windows Remote Desktop Client. Both use the same username e.g., Salesmen. From the Application Server, they launch the ERP application that connects to a Database (located in the Database Server).
Now, if we want to record a log of some of the activities made by each individual salesmen, we can't use SYS_CONTEXT('USERENV','OS_USER') in Oracle because it will return the same OS name i.e., Salesmen.
What I am looking for is to know the Terminal RDP Client Name, who has logged in as "Salesmen" into the Application Server. I tried dbms_system.get_env to get %CLIENTNAME% environment variable but it is also of no use as it is returning null. Is there any other way of identifying who is remotely logged in to the Server having Oracle Client..