繁体   English   中英

SQL Server Express开发人员设置-访问被拒绝

[英]SQL Server Express dev setup - access denied whack-a-mole

我有一个开发环境,需要在其中使用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=True ,则Update-Database命令突然起作用! 然后刷新页面,并从需要数据库的所有端点中看到以下错误:

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

我已经尝试了删除该文件夹的技巧。 它没有解决。

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

是什么赋予了?

弄清楚了,所以我在这里留下下一个开发者的答案:

如前所述,我的开发人员设置正在运行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创建Update-Database
  2. 在数据库上为应用程序池帐户(IIS APPPOOL \\ ACCOUNT)dbcreator和sysadmin创建一个SQL登录名。

我没有对其进行测试,但是我相信您可以继续使用mdf文件,并且只需运行第2-4步,即可继续使用该文件。

故障排除技巧

有关对访问被拒绝问题进行故障排除的帮助,来自Scott Allens 博客上的提示:

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

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

public class DepartmentDb : DbContext 
{
    public DepartmentDb() 
    {
       Debug.Write(Database.Connection.ConnectionString);
    }

    public DbSet<Person> People { get; set; }
 }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM