我目前正在开发一个项目,该项目有一个前端ASP.NET网站,用户将提交"订单"。然后,我需要使用另一个与多个串行端口交互的C#窗体应用程序访问此数据库中的特定表。 (我没有和这个想法结婚,所以如果你认为为这两个功能设置一个网站更好的话,那我就是全心全意的)
无论如何,这个问题是关于能够拥有两个连接字符串的能力(一个来自ASP.NET,另一个来自本地程序。 - 两者都将在同一台计算机上运行)
在C#端,我有一个连接字符串:
"AttachDbFilename=C:\\Users\\Jordan\\Documents\\Visual Studio 2012\\WebSites\\WebSite1\\App_Data\\MyxoData.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;"
使用此配置,当一个项目处于活动状态时,另一个项目无法访问数据库。
无法打开用户默认数据库。登录失败。用户' CMYK-164 \ Jordan'
登录失败
我感觉这是因为我在连接字符串中使用了Integrated Security = true而且" User Instance = True"特别是只允许一台计算机上的一个用户一次登录一个数据库......但是我找不到支持我理论的任何东西......或者解决问题。
任何建议都会非常感谢!
修改
连接字符串不是问题。当另一个应用程序不活动时,这两个应用程序都可以正常工这里的问题是从两个不同的C#应用程序建立到一个数据库的两个并发连接。
答案 0 :(得分:1)
以Rafeal的回应为基础;您需要升级到SQL Server Express。
SQL Server Express LocalDB是一个精简版本,有很多限制;一个是它不支持并发连接。请参阅下面的链接 - 解释并发连接限制的部分可以在权限部分的最后一句中找到。
http://technet.microsoft.com/en-us/library/hh510202.aspx
您可以在此处安装SQL Server Express:
在Visual Studio中,您可以使用Database Explorer创建与新数据库的数据连接,以创建您需要的表和任何存储过程。
如果您不熟悉.Net和SQL Server,则可以使用System.Data.SqlClient命名空间轻松连接到SQL Server Express数据库。由于它是为SQL Server产品设计的,因此它被认为比使用ADO.Net或其他数据提供程序更有效。而且,至少,我发现它使用起来快捷方便。例如,由于提供程序是显式的,因此您无需在连接字符串中指定提供程序,从而导致字符串更短。有关连接字符串的更多信息,请参阅此页:
您可以在本页底部找到打开连接的C#和VB示例:
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.aspx