ASP.NET MVC新手:无法让aspnet_regsql.exe工作

时间:2009-06-27 17:53:59

标签: sql-server sql-server-express

我刚刚安装了Web Developer Express 2008和MVC框架(遵循所有默认设置,在此过程中安装了SQL Server Express)。我按照最初的NerdDinner步骤,从IDE创建了一个数据库并定义了表(工作正常)。

为了进一步定义我的表,这些表严重依赖于用户群,我不得不弄清楚如何将用户表添加到我新创建的数据库中(因此我可以创建带有外键到users表的表),所以我“跳”到手册中的身份验证和授权部分,他们提到我需要从目录“C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727”运行“aspnet_regsql.exe”。

我找到了该文件并运行了它。

它要求服务器名称并且有一些默认值(它是我的计算机名称的首字母)。我不记得在安装Visual Web Developer期间明确提到任何这样的名称,我认为它是默认的。选择“Windows身份验证”。我也可以选择“SQL服务器身份验证”,但我不记得创建它所需的用户名和密码。

当我选择数据库时,单击“数据库”组合框的下拉列表,需要几秒钟,然后它会发出以下错误消息:

“无法从SQL服务器查询数据库名称列表。 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)“

我在网上对此进行了研究,并没有为我看似微不足道的问题找到一个简单的解决方案。

为了澄清,我不想要远程连接,而是本地连接。

在我继续使用regsql进程之前,是否需要执行本地SQL Server Express安装所需的步骤?

这是普通的香草,开箱即用安装......有什么想法吗?

4 个答案:

答案 0 :(得分:7)

如果您想继续使用该向导,它实际上是一个非常简单的解决方案。在出现此问题的“选择服务器和数据库”屏幕上,“服务器”文本框中的默认值将设置为您的计算机名称。附加要连接的SQL Server的特定实例(即LOCALHOST可能变为LOCALHOST \ SQLEXPRESS)。

如果您指向有效的实例,则“数据库”下拉列表将按预期填充。

答案 1 :(得分:6)

首先,复制MDF文件的备份,以防此命令完全占用您的工作。试试这个:aspnet_regsql -A all -C "Data Source=.\SQLEXPRESS;Integrated Security=True;User Instance=True" -d "PATH_TO_MY_DATABASE.MDF_FILE"

PATH_TO_MY_DATABASE.MDF_FILE更改为MDF文件的完整路径。它很可能位于您的APP_DATA文件夹中。

此信息来自this blog post,我在过去成功使用它来为具有MDF文件数据库的SQL Server Express项目设置成员资格表。

答案 2 :(得分:1)

这个问题根本与asp.net mvc无关,它纯粹是一个数据库问题。

根据你的描述。

  

与网络相关或特定于实例的   建立一个错误时发生错误   连接到SQL Server。服务器   没找到或无法访问。   验证实例名称是否为   正确和SQL Server是   配置为允许远程   连接。

我会确定:

1> sql express正在运行。 2 - ;你为连接设置了什么样的协议。我通常选择tcp / ip。

希望这有帮助。

答案 3 :(得分:1)

您可以查看如何针对SQL Express运行aspnet_regsql(有很多关于它的博客文章)。我有过在过去工作正常的问题(可能是坏运气),但你也可以这样做:

  1. 在创建项目后运行MVC应用程序
  2. 单击“登录”链接,然后注册一个新帐户(这将为您创建一个SQL Express数据库)
  3. 在VS中
  4. (可选但很方便:),将MDF文件添加到项目中(它位于App_Data下)
  5. (可选:)重命名MDF文件,并更新web.config中的连接字符串(用NerdDinner.mdf或您选择的任何名称替换aspnetdb.mdf)
  6. Lame解决方法,我知道,但是它可以让你在没有太多摆弄的情况下启动并运行。