If you're using a connection string that looks like:
then you're using a feature of SQL Express known as "User Instancing".
This feature was introduced in SQL Server Express 2005 and provided the ability for developers to run an instance of SQL Server under their own (non-administrator) login.
There is still a
.\SQLExpress named instance running i.e. the one created at install time. However when you connect to a database using the
AttachDBFilename user instance feature, a new SQL Express instance is spun up to handle access to the
AttachDBFilename database, this "user instance" runs under your windows logon account.
Communication with this instance happens over a named pipe (as you found out).
There's an informative article about User Instancing by Microsoft here:
User Instances for Non-Administrators (MSDN)
Whilst this feature is still available on SQL Server 2008 R2 Express, it looks like it's being deprecated or possibly removed in the near future and you are advised not to use it:
This feature will be removed in a future version of Microsoft SQL
Server. Avoid using this feature in new development work, and plan to
modify applications that currently use this feature.
User instancing is also incompatible with sites running under the
ApplicationPoolIdentity account on IIS7 and IIS7.5. For more information see this MS Knowledgebase article:
Problems with SQL Server Express user instancing and ASP.net Web Application Projects
Web applications built with Visual Studio 2005, Visual Studio 2008, or
Visual Studio 2010 and that rely on user instancing with either SQL
Server Express 2005 or SQL Server Express 2008 do not work with the
new application pool identity. These products were developed and
tested against application pools running with the older NETWORK
If you want to just host your database in the normal
.\SQLExpress instance and have access to it via TCP/IP like a regular SQL Server then you need to do a few things:
Enable TCP/IP for SQL Express. The default install only enables named pipes. You can do this using the SQL Server Configuration Manager:
The default install of SQL Express uses the
NETWORK SERVICE account as the service account. You may need to grant modify permissions for this account on the folder containing your
.mdf file in your
App_Data folder to the
Change your connection string to a regular connection string e.g.
connectionString="Database=MyDatabaseName;Data Source=172.16.3.44\SQLEXPRESS;User ID=dbuser;Password=dbpassword;Initial Catalog=MyDatabaseName;"