簡體   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