创建数据库权限在数据库"master"中被拒绝



这适用于具有视图表的现有数据库。尝试列出视图表,但在我的操作中遇到了此错误消息:

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=ServerADBSome; 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(数据库)它有效。

有什么想法吗?

即使您有一个现有的数据库将初始值设定项设置为 null 也可以:

Database.SetInitializer<SomeDB>(null);

其次;强制映射到表名可以解决问题:

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

我通过使用sql server授权帐户sa而不是Windows项目化帐户来解决此问题。

您可以通过先通过Windows授权登录SqlServer管理工具,然后在左侧部分窗口(称为"对象资源管理器")中找到sa-> You Server\SQLEXPRESS(10.xxx) -> 安全性 ->登录名

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

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

并且,连接字符串应为:

connectionString="Data Source=.\SQLEXPRESS;附加数据库文件名=|DataDirectory|\MFC.mdf;Initial Catalog=MFC;Integrated Security=false;用户 ID =sa;密码=your_password_here;"

它对我有用。