I am a bit confused about how SQL Server processes multiple queries while I run a query in SQL Server Express but the data is located in the Business / Enterprise SQL Server.
I have an Enterprise version of SQL Server installed on the server which has multiple TB of data. I do not have physical access to the server hence I have two approach. Use RDP to connect to the server and run the query, or connect to SQL Server instance via SQL Server Express which is installed on my local machine (obviously we should be in the same domain). I do not have any question about RDP, my concern is about the second approach.
When I run multiple queries on my local machine (not on the server), I noticed that the performance is very slow.
From here and here it look likes that my SQL Server Express is running the query and because of the # CPU limitation, it is very slow.
But I would like to be sure about how SQL Server processes my queries. To be specific, I would like to know more about step 3 and 4 as shown in here. Specially, I would like to know how Express and Enterprise talk to each other over tcp/ip. What does SQL Server Express send to Enterprise and what does Enterprise send to Express?
I found this article, but this one does not look like the thing that I am looking for.
Well, either
you are connected to your local SQL Server Express and the query is run there (locally - with all the limitations)
OR
you are connected (using SSMS from your local machine) to the SQL Server Enterprise database, and then the query is run on that server (not on your local machine - you just use a GUI on your local machine to see what's going on). Since those queries are run on the server, no limitations from your local Express instance will affect your queries
Unless you've setup some kind of replication or a "linked server", there's no "talking" between your local instance and the remote server instance.....
SQL Server is the database engine, and SSMS (SQL Server Management Studio) is just an IDE (Integrated Development Environment).
All queries are ALWAYS executed on the server regardless if it is Express or Enterprise editions.
SSMS does not execute a query ever, it does not do any work. It only passes the query to the server and display the resulting record set. The only speed difference that can be observed would be due to transferring the data set over the network from the server to the client.
Please read: What's the difference between SQL Server Management Studio and the Express edition?
Related
I installed SQL Server 2017 Express as a named Instance alongside my default instance. After rebooting once - both were showing but the I could not connect to SQL Server Express remotely. I then followed the instructions to enable IP on SQL Express using configuration manager and rebooted. Now I can connect remotely but my default instance is showing NO databases!
Also in configuration manager, SQL Server Services does not show any of my instances so that I can check they are running (this was the care even prior to enabling the IP address on the protocol, and when I knew it definitely was running as I could connect to it)
--
Update:
I discovered if I launch SQL Server Configuration Manager 2016 rather than "SQL Server Configuration Manager" I can see all my servers.
SQL Server 2016 appears to be running as is SQL Server Express. There is also a "MSSQLServer" that is stopped - think this may be SQL Server 2012. Not sure at this stage which one had the databases.
Ok so for anyone in a similar situation / panic. Do the following.
Look to see what other SQL Server configuration mangers are showing up. If you have installed multiple versions over the years chances are you'll see more than one.
Try using one of the later ones. You can see the file path too if you need it here.
If you manage to see a list of your database servers, check which are enabled and disabled. I had to disable SQL Server (SQLExpress) first before I could enable SQL Server (MSSQLServer), which in my case referred to SQL Server 2012.
If you want to have SQL Server Express running as a named server running alongside your default server, make sure you assign it a different port number (e.g. 1435) in the SQL Server Network Configuration>Protocols for SQL Express>TCP/IPALL section in SQL Server configuration manager.
I need to deploy a WCF service with a database on client machines. I am confused about SQL Server Express. I need to verify all of the following.
When attaching database files in the App_Data folder, do I still need to install SQL Server Express engine (Windows service) on client machines?
There is a flavor called SQL Server Express LocalDb. That one does not need an engine (Windows service)? But I think it need a prerequisite installation of LocalDb.
Localdb is introduced with SQL Server 2012. There is NO localdb for SQL Server 2008. Correct? I could not find 2008 version on MS site.
Do I still need to install SQL Server Express engine (A win Service)
on client machines?
Yes, they need it installed for your application to query the database. Can't really get around it.
There is a flavor called SQL Express localDb. That one does not need
an engine (win service)? but I think it need a perquisite installation
of localdb.
Yes, you'd still need to install LocalDB on the client machine. It's pretty hassle-free to do, but I think it's overkill unless you really need the full features of a SQL Server instance for your webservice.
Instead of LocalDB I'd strongly recommend using SQL Server Compact Edition - it performs the role you're thinking of (your WCF Service can simply connect directly to the database file on your client machines without installing SQL Server, and is lightweight), but doesn't need to be installed (it's simply included as a DLL with your WCF application):
Unlike other editions of Microsoft SQL Server, SQL CE runs
in-process with the application which is hosting it.
In Microsoft's own words on the differences between LocalDB and SQLCE:
LocalDB and SQL Server Compact?
Small and simple database, lightweight installation, connecting to a
database file -- this will sound familiar to any developer using SQL
Server Compact. The similarities are not accidental, as our goal for
LocalDB was to be as easy to use as SQL Server Compact (while being as
powerful and compatible with full SQL Server as SQL Express).
There are significant differences between LocalDB and SQL Server
Compact:
Execution mode: SQL Server Compact is an in-proc DLL, while LocalDB runs as a separate process.
SQL Server CE is kind of like an updated version of MS Access, the file goes with the application which can "just connect" to the database file without involving any database server installation, and its syntax/features are very close to SQL Server standard.
I'm trying to connect a local SQL Server database to an ETL utility called Pentaho. Pentaho very easily connects to full versions of SQL server without issue.
I've set mixed mode authentication and created a sql server account for the sql server express instance that can be used to login through SSMS.
When I try to log in via Pentaho, I get errors about it not knowing what the server is, or the server not responding. I've tried {localhost, myip, localhost\SQLEXPRESS, myip\SQLEXPRESS, just SQLEXPRESS} as the server name (and SQLEXPRESS is the instance name).
I know I've had trouble connecting other programs to SQLEXPRESS databases in the past. Can someone tell me why it acts different than when using a full install of SQL Server and how I can get around these differences?
If SQL Server Express is on a different server, have you enabled TCP/IP protocol?
My .net windows application uses sql server 2005 database…is sql server 2005 required on the client machines?
my .net application updates tables in the databases, retrieves data also.
If you have a central database server - no, you don't need the full SQL Server on your clients - just the SQL Server client parts.
If you want to run the whole SQL Server 2005 on each machine - then yes, you need SQL Server on each machine in that case. Most likely I'd use SQL Server 2005 Express for local work.
It really depends on your scenario - do you want to have SQL Server locally on each machine?? Then each user has his/her own database and no data is shared.
Most of the time, you would want to have a single, central SQL Server machine and all the clients connect to it, share and use the same data.
Since SQL Server Express is free to use, If I install two instances of the same version on a single CPU machine, will there be any licensing issue even though it is free?
None.
I currently have a VM that has:
SQL Server 2005 Express
SQL Server 2008 Express
MySQL 5.1.49 Community
Oracle Express (10g)
I don't recommend having them all run on start up, unless you actually need to access them.