![](/img/trans.png)
[英]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.