Listing table results in “CREATE TABLE permission denied in database” ASP.NET - MVC4

筅森魡賤 提交于 2019-11-30 12:25:55

Is your web config pointing to the correct database?

Are the credentials correct?

Entity Framework will create tables in the database if you are going to use the MVC4 WebSecutiy() to handle the Authentication and Authorisation of users. This could be throwing the exception.

In this case where you cannot create the tables needed for the membership provider, you will need to exclude this from the system. See this here. Alternatively create a new MVC4 project and select empty template and just put in the bits you need.

I know it's old but since I had the same problems and it took me a while to find the solution... I decided to share the info. So I had to do 2 things to get rid of this problem, 1st was disabling the migrations:

# Migrations/Configuration.cs
internal sealed class Configuration : DbMigrationsConfiguration<IntranetApplication.Models.MyDb1>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
    }
}

however that wasn't enough, I also had to make sure the Seeder doesn't run. You can cancel it with this extra piece of code:

#Global.asax.cs
protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    Database.SetInitializer<Models.MyDb1>(null);
    Database.SetInitializer<Models.MyDb2>(null);

    ...
}

Then finally I can now do a SELECT with LINQ and only have READ access

EDIT
As per Lawrence's suggestion, it's most probably better having it directly inside DB Context Constructor. Thanks for the tip, I updated my code. It would look like this instead:

public partial class MyDb1 : DbContext
{
    public MyDb1()
        : base("name=MyDb1Connection")
    {
        Database.SetInitializer<Models.MyDb1>(null);
    }

    ...
}

I encountered a similar error after refactoring and renaming some code. The issue was that my C# code didn't match table name in the Database.

My code in c#:

public virtual DbSet<MyTableName>

And the table name in SQL Server:

MyActualTableName

Since the table names didn't match (MyTableName != MyActualTableName), I got this (misleading) error:

Create TABLE permission denied in database MyDatabase

Took me awhile to see what I'd messed up, but matching the table names resolved the error.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!