Se você estiver usando uma string de conexão com a seguinte aparência:
AttachDBFilename=|DataDirectory|MyDB.mdf;User Instance=true'
você está usando um recurso do SQL Express conhecido como "Instanciação de usuário".
Esse recurso foi introduzido no SQL Server Express 2005 e forneceu a capacidade de os desenvolvedores executarem uma instância do SQL Server com seu próprio login (não administrador).
Ainda há uma instância com o nome .\SQLExpress
em execução, ou seja, aquela criada no momento da instalação. No entanto, quando você se conecta a um banco de dados usando o recurso de instância de usuário AttachDBFilename
, uma instância do novo SQL Express é girada para manipular o acesso ao banco de dados AttachDBFilename
, essa "instância de usuário" é executada em suas janelas conta de logon.
A comunicação com essa instância acontece em um canal nomeado (como você descobriu).
Há um artigo informativo sobre o Instanciamento de usuários da Microsoft aqui:
Embora este recurso ainda esteja disponível no SQL Server 2008 R2 Express, parece que ele está sendo substituído ou possivelmente removido em breve e é aconselhável não usá-lo:
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.
A instanciação do usuário também é incompatível com os sites em execução na conta ApplicationPoolIdentity
no IIS7 e no IIS7.5. Para mais informações, consulte este artigo do MS Knowledgebase:
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 SERVICE account.
Se você quiser apenas hospedar seu banco de dados na instância normal .\SQLExpress
e ter acesso a ele via TCP / IP como um SQL Server regular, então você precisa fazer algumas coisas:
-
Habilite o TCP / IP para o SQL Express. A instalação padrão só permite pipes nomeados. Você pode fazer isso usando o SQL Server Configuration Manager:
AinstalaçãopadrãodoSQLExpressusaaconta
NETWORKSERVICE
comoacontadeserviço.Talvezsejanecessárioconcederpermissõesdemodificaçãoparaessacontanapastaquecontémoarquivo.mdf
.Anexeoarquivo
.mdf
nasuapastaApp_Data
àinstância.\SQLExpress
.Alteresuastringdeconexãoparaumastringdeconexãoregular,porexemplo
<addname="SupportSystem" connectionString="Database=MyDatabaseName;Data Source=172.16.3.44\SQLEXPRESS;User ID=dbuser;Password=dbpassword;Initial Catalog=MyDatabaseName;" providerName="System.Data.SqlClient"/>