数据库'master'中的CREATE DATABASE权限被拒绝

时间:2012-06-19 20:45:31

标签: sql sql-server asp.net-mvc-3

这适用于具有View表的现有数据库。 试图列出一个View表,但在我的Action中遇到了这个错误信息:

CREATE DATABASE permission denied in database 'master'.

要访问的视图表:SomeTable

如果你在数据库上运行它(ServerA_dev_alpha_custom):

sp_helptext 'SomeTable'

你会得到这个:

 CREATE VIEW dbo.[SomeTable] AS  SELECT * FROM ServerA_dev_alpha.dbo.[SomeTable]

以下是模型:

public class SomeTable
{
    [Key]
    public virtual string SomeTableid  { set; get; }
    public virtual string name  { set; get; }
    public virtual string formvalue  { set; get; }
    public virtual string status  { set; get; }
    public virtual DateTime CreateDate { set; get; }    
}

班级名称:

public class SomeDB: DbContext

与连接字符串名称完全匹配:

    <add name ="SomeDB"
         connectionString ="data source=ServerA\DBSome; integrated Security=SSPI; initial catalog=ServerA_dev_alpha_custom"
         providerName="System.Data.SqlClient"/>

在创建模型时发现了错误:

SomeDB _db = new SomeDB();

var model = (from c in _db.SomeTable
  orderby c.CreateDate descending
  select c).Take(20);

当我将连接字符串更改为指向定义表的位置时:ServerA_dev_alpha(数据库)它可以工作。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

即使你有一个现有的数据库设置,初始化程序也为null:

Database.SetInitializer<SomeDB>(null);

二;强制映射到表名称就可以了:

modelBuilder.Entity<SomeTable>()
.ToTable("SomeTable");

答案 1 :(得分:1)

我通过使用sql server授权帐户sa解决了这个问题,而不是使用windows arthorized帐户。

您可以先通过Windows authoration登录SqlServer管理工具,然后在左侧部分窗口(称为“对象资源管理器”)中找到sa - &gt;您的服务器\ SQLEXPRESS(10.xxx) - &gt;安全 - &gt;登录

双击sa,然后为其设置密码和默认数据库。默认数据库应该是您的数据库而不是“master”。然后,切换到“状态”页面,启用sa帐户。

如果您的数据库尚未列在下拉列表中,请在上面提到的左侧部分窗口中右键单击并选择“附加”以附加它。

并且,连接字符串应为:

connectionString =“Data Source =。\ SQLEXPRESS; AttachDbFilename = | DataDirectory | \ MFC.mdf; Initial Catalog = MFC; Integrated Security = false; User Id = sa; Password = your_password_here;”

它对我有用。

相关问题