[英]CREATE FILE error (access is denied) connecting to SQL Server Express 2012
[英]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。
Initial Catalog=MyDatabase
而不是AttachDbFilename=|DataDirectory|\\MyProject.mdf
User Instance=True
。 现在,您的连接字符串如下所示: Data Source=.\\SQLEXPRESS;Initial Catalog=FullStackFitness;Integrated Security=True
Update-Database
创建Update-Database
。 我没有对其进行测试,但是我相信您可以继续使用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.