我在其app_data文件夹中有一个带有SQL 2005 Express .MDF数据库文件的ASP.NET 3.5应用程序。让我们称之为foo.mdf。根据其自己的ASP.NET应用程序可以无问题连接到数据库。到现在为止还挺好。

然后,如果我安装 SQL Server Management Studio Express 在服务器上并启动它,它找到了本地SQLEXPRESS实例并连接到它,但在数据库列表中没有显示foo.mdf。

因此,我尝试通过右键单击数据库并选择附件并查找.mdf来附加foo.mdf。这是一个模糊错误的失败:

CREATE FILE encountered operating system error 32(error not found)  
while attempting to open or create the physical file
'C:\inetpub\wwwroot\FooApp\App_Data\Foo.mdf'. (Microsoft SQL Server, Error: 5123)

如果我在IIS中停止我的ASP.NET网站,则附加 工作,但是当我重新启动ASP.NET应用程序时,它无法连接到foo.mdf。

因此,看起来SQL Express 2005只会让我的应用程序 或者 管理工作室连接。这似乎真的是胡扯 - SQL Express肯定应该允许多个连接?我期望它的行为像常规SQL Server一样。

希望我做错了。请指教。

有帮助吗?

解决方案

您可以检查您的应用程序连接字符串并查看是否具有 用户实例= true

例如:

Data Source=.\SQLEXPRESS;Integrated Security=true; AttachDbFilename=|DataDirectory|\mydb.mdf;User Instance=true;

来自MSDN :发生用户实例的另一个主要问题是因为SQL Server使用独家访问打开数据库文件。这是必要的,因为SQL Server在内存中管理数据库数据的锁定。因此,如果多个SQL Server实例打开了相同的文件,则可能会导致数据损坏。如果两个不同的用户实例使用相同的数据库文件,则一个实例必须在另一个实例打开之前关闭文件。

如果是问题,则可以将数据库附加在SQL Server Management Studio中,并按照以下方式修改连接字符串,以便多个客户端可以连接到同一数据库。

Server=.\SQLEXPRESS;Database=myDataBase;Trusted_Connection=True;

如果您在您的情况下不是问题,请在上面的链接中查看“常见问题”部分。它可能与“共同问题”部分中的1/2点有关的权限有关

其他提示

我没有使用默认ASP.NET数据库的经验,但是您是否尝试将MDF移至SQL Express数据文件夹? (默认值:c: program Files Microsoft SQL Server MSSQL10_50.SQLEXPRESS MSSQL DATA)在文件夹中,您可以使用管理工作室将文件连接到SQL Express实例。您需要在Web.config文件中修改连接字符串,以使其看起来像:

<connectionStrings>
    <add name="ApplicationServices"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=aspnetdb"
     providerName="System.Data.SqlClient" />
</connectionStrings>

将以下用户帐户添加到您网站的文件夹 * app_data *: sqlservermssqluser $. 。在高级安全权限中查找它,因此您在此处进行搜索,然后对其进行完全控制。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top