0

我有一个 ASP.NET 3.5 应用程序,其 App_Data 文件夹中有一个 SQL 2005 Express .mdf 数据库文件。让我们称之为 Foo.mdf。ASP.NET 应用程序本身可以毫无问题地连接到数据库。到目前为止,一切都很好。

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

所以我尝试通过右键单击数据库并选择 Attach.. 并找到 .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 只会让我的应用程序Management Studio 连接。这看起来真的很垃圾——Sql Express 应该允许多个连接吗?我期待它表现得像普通的 Sql Server。

希望我做错了。请指教。

4

3 回答 3

2

你能检查你的应用程序连接字符串,看看它是否有User Instance=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 点,它可能与权限有关

于 2010-10-15T14:46:38.760 回答
1

我没有任何使用默认 ASP.NET 数据库的经验,但是您是否尝试过将 MDF 移动到您的 SQL Express DATA 文件夹中?(默认:C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA) 进入文件夹后,您可以使用 Management Studio 将文件附加到 SQL Express 实例。您需要将 web.config 文件中的连接字符串修改为如下所示:

<connectionStrings>
    <add name="ApplicationServices"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=aspnetdb"
     providerName="System.Data.SqlClient" />
</connectionStrings>
于 2010-10-15T14:48:09.887 回答
0

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

于 2010-12-16T02:24:49.297 回答