数据库中的MVC 4 CREATE TABLE权限被拒绝

时间:2014-05-01 15:41:58

标签: asp.net-mvc-4 ef-code-first

我是网络开发的新手。我正在尝试使用下面的URL中的MVC 4和EF Code First来跟踪Movie DB的MVC教程。

http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4

我使用互联网模板创建了一个简单的项目,并创建了一个模拟我的数据库中的实际表格的模型,如教程中所示。然后,我基于现有数据库为表创建了一个新模型,这就是问题开始的时候。当web.config指向localdb时,一切正常。

我将web.config更改为指向我的实际数据库,以查看代码是如何工作的,并且由于某些原因,许多用户已经发布了这个,我得到了数据库权限错误。这是我的模特。

namespace MVCTest.Models
{
    public class ProjectID
    {
        [Key]
        public int ID{ get; set; }
        public int TEMP_ID { get; set; }
        public string STATUS { get; set; }
        public string DESC{ get; set; }
    }
}

这是我的背景。控制器是基于此模型和上下文创建的。

using System.Data.Entity;

namespace MVCTest.Models
{
    public class MVCDBContext : DbContext
    {
        // You can add custom code to this file. Changes will not be overwritten.
        // 
        // If you want Entity Framework to drop and regenerate your database
        // automatically whenever you change your model schema, add the following
        // code to the Application_Start method in your Global.asax file.
        // Note: this will destroy and re-create your database with every model change.
        // 
        //System.Data.Entity.Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseIfModelChanges<MvcMovie.Models.MvcMovieContext>());

        public MVCDBContext()
          : base("name=MVCDBContext")
          //  : base("Data Source=SERVERNAME;Initial Catalog=DBNAME;Integrated Security=True;")
        {
        }

        public DbSet<Movie> Movies { get; set; }
        public DbSet<ProjectID> ProjectIDs { get; set; }
    }
}

该表已经存在,我只想对实际的SQL表进行RUD操作,而不是本地数据库中的操作。

我已尝试过stackoverflow和许多其他网站中列出的许多选项,但对我来说没有任何作用。我剩下的唯一选择是通过EF数据优先,但我想看看是否有人在我废弃这个项目之前有建议并去那里。

这是堆栈跟踪:

Exception Details: System.Data.SqlClient.SqlException: CREATE TABLE permission denied in database 'DBNAME'.

Source Error:

Line 19:         public ActionResult Index()
Line 20:         {
Line 21:             return View(db.ProjectIDs.ToList());
Line 22:         }
Line 23: 

Stack Trace:

[SqlException (0x80131904): CREATE TABLE permission denied in database 'DBNAME'.]
    System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +1754082
    System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +5295874
    System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +242
    System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +1682
    System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout) +280
    System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) +405
    System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +160
    System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement) +224
    System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement) +55
    System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable`1 migrationStatements) +169
    System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable`1 migrationStatements) +42
    System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, XDocument targetModel, IEnumerable`1 operations, Boolean downgrading, Boolean auto) +1025
    System.Data.Entity.Migrations.DbMigrator.AutoMigrate(String migrationId, XDocument sourceModel, XDocument targetModel, Boolean downgrading) +320
    System.Data.Entity.Migrations.Infrastructure.MigratorBase.AutoMigrate(String migrationId, XDocument sourceModel, XDocument targetModel, Boolean downgrading) +64
    System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId) +538
    System.Data.Entity.Migrations.Infrastructure.MigratorBase.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId) +59
    System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration) +897
    System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update() +33
    System.Data.Entity.Internal.DatabaseCreator.CreateDatabase(InternalContext internalContext, Func`3 createMigrator, ObjectContext objectContext) +456
    System.Data.Entity.Internal.InternalContext.CreateDatabase(ObjectContext objectContext) +173
    System.Data.Entity.Database.Create(Boolean skipExistsCheck) +241
    System.Data.Entity.CreateDatabaseIfNotExists`1.InitializeDatabase(TContext context) +396
    System.Data.Entity.Internal.<>c__DisplayClass8.<PerformDatabaseInitialization>b__6() +67
    System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) +110
    System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization() +273
    System.Data.Entity.Internal.LazyInternalContext.<InitializeDatabase>b__4(InternalContext c) +31
    System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input) +143
    System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action) +270
    System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase() +123
    System.Data.Entity.Internal.InternalContext.Initialize() +42
    System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +39
    System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() +137
    System.Data.Entity.Internal.Linq.InternalSet`1.GetEnumerator() +38
    System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator() +99
    System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +369
    System.Linq.Enumerable.ToList(IEnumerable`1 source) +58
    MVCtest.Controllers.ProjectIDsController.Index() in c:\Users\n228322\Data\MVCtest\MVCtest\Controllers\ProjectIDsController.cs:21
    lambda_method(Closure , ControllerBase , Object[] ) +101
    System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +59
    System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +435
    System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +60
    System.Web.Mvc.Async.AsyncControllerActionInvoker.InvokeSynchronousActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +50
    System.Web.Mvc.Async.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41() +75
    System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +44
    System.Web.Mvc.Async.WrappedAsyncResult`1.End() +139
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102
    System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +49
    System.Web.Mvc.Async.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33() +126
    System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +323
    System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult) +44
    System.Web.Mvc.Async.WrappedAsyncResult`1.End() +139
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102
    System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +50
    System.Web.Mvc.Async.<>c__DisplayClass2a.<BeginInvokeAction>b__20() +68
    System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) +184
    System.Web.Mvc.Async.WrappedAsyncResult`1.End() +136
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56
    System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +40
    System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +40
    System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +47
    System.Web.Mvc.Async.WrappedAsyncResult`1.End() +151
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
    System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +44
    System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +47
    System.Web.Mvc.Async.WrappedAsyncResult`1.End() +151
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
    System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +39
    System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +39
    System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +45
    System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +47
    System.Web.Mvc.Async.WrappedAsyncResult`1.End() +151
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
    System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +40
    System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9633216
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

提前致谢。

1 个答案:

答案 0 :(得分:1)

在调用我的Google-fu后,我找到了this potentially applicable thread。对于后代(如果线程被删除或以其他方式无法访问),这里是相关的位(为简洁而大大修剪):

  

大家好,我目前正在尝试设置Umbraco,我在   安装数据库的步骤,但我得到以下错误

Exception Details: System.Data.SqlClient.SqlException: CREATE TABLE permission denied in database 'umbraco'.

[SqlException (0x80131904): CREATE TABLE permission denied in database 'umbraco'.]

另一位网站用户回复如下:

  

您确定您有权在数据库上创建表吗?   您可以通过在与您的connectionstring中相同的帐户登录数据库来检查此问题。然后尝试创建一个表,如果这不起作用修复   该帐户的usercredentials。

注意:如果您按照教程使用了 Web.config 文件中的connectionString应设置为以下内容:

<add name="MovieDBContext" 
   connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" 
   providerName="System.Data.SqlClient" 
/>

根据这一建议,OP回复说:

  

感谢您的回复。我发现了这个问题。右键单击   数据库 - &gt;权限 - &gt;选择create table tickbox。

您是否可以按照这些步骤查看它是否可以解决您的问题?如果没有,那么我担心你将不得不等待在这方面具有一定专业知识的人来帮助你,因为我能做的就是找到谷歌的答案。