【问题标题】:SQL Server Express dev setup - access denied whack-a-moleSQL Server Express 开发设置 - 访问被拒绝 whack-a-mole
【发布时间】:2016-08-15 02:20:19
【问题描述】:

我有一个需要使用 IIS 和 SQL Server Express 的开发环境。我的连接字符串如下所示:

<add name="DefaultConnection" 
     connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\MyProject.mdf;Integrated Security=True;User Instance=True" 
     providerName="System.Data.SqlClient" />

当我运行应用程序并浏览到该站点时,这非常有用。数据从数据库返回,我可以登录 Management Studio 并查看该数据。问题是当我尝试使用Update-Database 推送新的数据迁移时。

然后我收到此错误消息:

用户“AzureAD\MyAccount”登录失败

如果我从我的连接字符串中删除User Instance=TrueUpdate-Database 命令会突然起作用!然后我刷新我的页面并从需要数据库的所有端点看到以下错误:

数据库“master”中的 CREATE DATABASE 权限被拒绝。

我已经尝试过删除此文件夹的技巧。没解决。

C:\Users\MyAccount\AppData\Local\Microsoft\Microsoft SQL Server Data

什么给了?

【问题讨论】:

    标签: sql entity-framework visual-studio sql-server-express


    【解决方案1】:

    想通了,所以我把答案留给下一个开发者:

    正如我所提到的,我的开发设置正在运行 IIS 和 SQL Express。

    1. 更新连接字符串以指向Initial Catalog=MyDatabase 而不是AttachDbFilename=|DataDirectory|\MyProject.mdf
    2. 删除User Instance=True。您的连接字符串现在看起来像:

    Data Source=.\SQLEXPRESS;Initial Catalog=FullStackFitness;Integrated Security=True

    1. 运行Update-Database创建数据库。
    2. 为数据库上的应用程序池帐户 (IIS APPPOOL\ACCOUNT) dbcreator 和 sysadmin 创建 SQL 登录。

    我没有对其进行测试,但我相信您可以继续使用 mdf 文件,并且只需运行步骤 2 到 4 即可使其正常工作。

    疑难解答提示

    帮助解决访问被拒绝问题来自 Scott Allens blog 的提示:

    我建议的第一步是尝试确定框架正在使用什么连接字符串,因为异常不会告诉你连接字符串,并且连接字符串可以通过各种约定、配置和代码来控制.

    为了找出连接字符串,我会在我的 DbContext 派生类的默认构造函数中添加一些日志记录。

    public class DepartmentDb : DbContext 
    {
        public DepartmentDb() 
        {
           Debug.Write(Database.Connection.ConnectionString);
        }
        
        public DbSet<Person> People { get; set; }
     }
    

    使用调试器运行应用程序并观察 Visual Studio 输出窗口。或者,设置断点并在尝试建立数据库连接的应用程序的某个位置时观察 ConnectionString 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多