【问题标题】:Error : Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'错误:找不到存储过程“dbo.aspnet_CheckSchemaVersion”
【发布时间】:2014-10-28 09:52:11
【问题描述】:

我尝试从数据库中获取所有用户,但出现此错误:

"Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'"

代码如下:

    public ActionResult Index()
    {
        var users = Membership.GetAllUsers();
        return View(users);
    }

来自 webconfig 的代码是下一个:

<membership defaultProvider="SqlMembershipProvider">
      <providers>
        <clear/>
        <add name="SqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="DefaultConnection" applicationName="/"/>
      </providers>
    </membership>

为什么这不起作用以及为什么我不断收到错误消息?

【问题讨论】:

    标签: sql-server asp.net-mvc


    【解决方案1】:

    可能有多种原因:

    • 默认情况下,您登录到该过程所在的其他数据库
    • 您的数据库中根本不存在程序(可能已删除?)
    • 您正在内部某处更改数据库。

    尝试使用您以编程方式传递的登录名和密码手动登录 MSSMS,然后执行 sp_helptext aspnet_CheckSchemaVersion 并查看是否获得过程代码?

    【讨论】:

    • 确定我没有登录错误的数据库。我正在使用 SQL Server 2014,我应该在哪里查找存储过程?
    【解决方案2】:

    您需要对您的 sql 服务器运行 aspnet_regsql.exe 以确保创建了表和对象:

      aspnet_regsql.exe -S DBServerName -U DBLogin -P DBPassword -A all -d DBName
    

    【讨论】:

    • 您可以尝试在不带参数的情况下运行它并按照向导步骤操作,它通常位于:C:\Windows\Microsoft.NET\Framework64[您的框架版本]\aspnet_regsql.exe
    • 它不起作用,因为我的应用程序不使用 aspnet_regsql 提供的表。
    • 您使用SqlMembershipProvider,它使用这些表和存储过程。如果您不希望您的应用程序使用这些表,您需要切换到另一个 MembershipProvider 或实现您自己的提供程序。
    【解决方案3】:

    应该有另一个以“用户”为参数的操作结果。

    【讨论】:

      猜你喜欢
      • 2011-01-11
      • 1970-01-01
      • 2011-07-10
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2015-09-24
      • 2017-10-17
      相关资源
      最近更新 更多