swirl
Home Software Blog Wallpapers Webtools
Where is my database anyway?
Tuesday 10, March 2015   |   Post link
Entity Framework changes quite a few things about application development the foremost being not having to worry about the database at the start of development cycle. If you use Visual Studio to create ASP.NET MVC applications for learning purpose, all database related stuff just works out of the box - as if by magic.

Traditionally when developing any application requiring a database the first line of code to run would probably be:

CREATE DATABASE MyTestWebApp
Entity Framework creates the database and tables if you're using code-first approach. However it would be nice to know where exactly the database files are and where the server is. Let's start from the web.config file which ideally should have the first clue as to the whereabouts of the database engine. The connection string section of it reads:
<connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0; AttachDbFilename=|DataDirectory|\aspnet-Checkboxes-20150215043057.mdf;Initial Catalog=aspnet-Checkboxes-20150215043057;Integrated Security=True"
      providerName="System.Data.SqlClient" />
</connectionStrings>
LocalDB - is this SQL Express? or SQL Server or some other thing?

As per Sql Server blogs SQL Server local db is a more developer friendly version of SQL Server Express. Its mainly used to test against local data since it accepts only local connections using named-pipe.

It doesn't run as service and is started on demand. You can check this; run a sample web application which makes use of a database connection like the one given above, you'll see the sqlserv.exe process in Task Manager:

localdb-instance.png

When an application tries to connect to a LocalDb database, if the local db executable is not already running it is starts as a child process of the application and shares the same security context. Most examples use Windows authentication but it's not necessary you can just as well use SQL authentication by creating the sql login in LocalDb.

You can connect to localdb using Sql Server Management Studio which comes with Sql Express 2012 or any other version of Sql Server 2012 which has management studio as part of the install.

connect-localdb.png

The next question is where are the database files stored? The string 'DataDirectory' is an AppDomain property which is read and substituted with the value set for it when connection to the database is being made. For a web application its set to the App_Data folder - how convenient. The master database is stored in the user's AppData local folder e.g. C:\Users\Siddharth\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances. You can attach your application's database datafile to a full-fledged SQL Server instance so migrating from locadb to another version should not be a problem at all.

Sql localdb runs the same sqlservr.exe as other version of Sql Server like Express or Developer or even Enterprise Edition. From programming point of view, you can do most of the things you can with a 'real' SQL Server like run all T-SQL queries, stored procedures and more. There are limitation which are detailed in the following blog (http://www.sqlcoffee.com/SQLServer2012_0004.htm). For learning purposes, localdb seems to fit the bill.


Categories: Sql Server (2) TSQL (5)

Comments

Posts By Year

2023 (5)
2022 (10)
2021 (5)
2020 (12)
2019 (6)
2018 (8)
2017 (11)
2016 (6)
2015 (17)
2014 (2)
2013 (4)
2012 (2)

Posts By Category

.NET (4)
.NET Core (2)
ASP.NET MVC (4)
AWS (5)
AWS API Gateway (1)
Android (1)
Apache Camel (1)
Architecture (1)
Audio (1)
Azure (2)
Book review (3)
Business (1)
C# (3)
C++ (2)
CloudHSM (1)
Containers (4)
Corporate culture (1)
Database (3)
Database migration (1)
Desktop (1)
Docker (1)
DotNet (3)
DotNet Core (2)
ElasticSearch (1)
Entity Framework (3)
Git (3)
IIS (1)
JDBC (1)
Java (9)
Kibana (1)
Kubernetes (1)
Lambda (1)
Learning (1)
Life (7)
Linux (1)
Lucene (1)
Multi-threading (1)
Music (1)
OData (1)
Office (1)
PHP (1)
Photography (1)
PowerShell (2)
Programming (28)
Rants (5)
SQL (2)
SQL Server (1)
Security (2)
Software Engineering (1)
Software development (2)
Solr (1)
Sql Server (2)
Storage (1)
T-SQL (1)
TDD (1)
TSQL (5)
Tablet (1)
Technology (1)
Test Driven (1)
Unit Testing (1)
Unit Tests (1)
Utilities (3)
VC++ (1)
VMWare (1)
VSCode (1)
Visual Studio (2)
Wallpapers (1)
Web API (2)
Win32 (1)
Windows (9)
XML (2)

Posts By Tags

.NET(6) API Gateway(1) ASP.NET(4) AWS(3) Adults(1) Advertising(1) Android(1) Anti-forgery(1) Asynch(1) Authentication(2) Azure(2) Backup(1) Beliefs(1) BlockingQueue(1) Book review(2) Books(1) Busy(1) C#(4) C++(3) CLR(1) CORS(1) CSRF(1) CTE(1) Callbacks(1) Camel(1) Certificates(1) Checkbox(1) CloudHSM(1) Cmdlet(1) Company culture(1) Complexity(1) Consumer(1) Consumerism(1) Containers(3) Core(2) Custom(2) DPI(1) Data-time(1) Database(4) Debugging(1) Delegates(1) Developer(2) Dockers(2) DotNetCore(3) EF 1.0(1) Earphones(1) Elastic Search(1) ElasticSearch(1) Encrypted(1) Entity framework(1) Events(1) File copy(1) File history(1) Font(1) Git(2) HierarchyID(1) IIS(1) Installing(1) Intelli J(1) JDBC(1) JSON(1) JUnit(1) JWT(1) Java(3) JavaScript(1) Kubernetes(1) Life(1) LinkedIn(1) Linux(2) Localization(1) Log4J(1) Log4J2(1) Lucene(1) MVC(4) Management(2) Migration history(1) Mirror(1) Mobile Apps(1) Modern Life(1) Money(1) Music(1) NGINX(1) NTFS(1) NUnit(2) OData(1) OPENXML(1) Objects(1) Office(1) OpenCover(1) Organization(1) PHP(1) Paths(1) PowerShell(2) Producer(1) Programming(2) Python(2) QAAC(1) Quality(1) REDIS(2) REST(1) Runtimes(1) S3-Select(1) SD card(1) SLF4J(1) SQL(2) SQL Code-first Migration(1) SSH(2) Sattelite assemblies(1) School(1) Secrets Manager(1) Self reliance(1) Service(1) Shell(1) Solr(1) Sony VAIO(1) Spirituality(1) Spring(1) Sql Express(1) System Image(1) TDD(1) TSQL(3) Table variables(1) Tables(1) Tablet(1) Ubuntu(1) Url rewrite(1) VMWare(1) VSCode(1) Validation(2) VeraCode(1) Wallpaper(1) Wallpapers(1) Web Development(4) Windows(2) Windows 10(2) Windows 2016(2) Windows 8.1(1) Work culture(1) XML(1) Yii(1) iTunes(1) renew(1) security(1)