dotnetがSQL Server Expressに対してデータベースを作成できないのはなぜですか?

asp.net-core asp.net-mvc entity-framework-core sql-server-express

質問

私はこのASP.Net MVCコアチュートリアルをhttps://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/working-with-sqlに行ってきました。そして、私はdotnetの移行を使用してappsettings.jsonファイルのこの接続文字列を使ってlocalDbに対してデータベースを作成することができます:

{
  "ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-MvcMovie-3005e0f3-42f4-4163-94cc-f794a05e8b91;Trusted_Connection=True;MultipleActiveResultSets=true"
  }

今私はSQL Server Expressを使ってそこから作業できるかどうかを知りたいと思います。

だから今私はappsettings.jsonファイルでこれを使用します:

{
  "ConnectionStrings": {
   "SqlExpressConnection": "Server=.\\SQLEXPRESS;Database=MvcMovieDb1;Integrated Security=True;MultipleActiveResultSets=true"
  }

StartUp.ConfigureServices()で、次のように変更します。

services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("SqlExpressConnection")));

コマンドプロンプトで次のコマンドを実行します。

dotnet efデータベースの更新

しかし、今私は: "CREATE DATABASE権限がデータベース 'master'で拒否されました。

efにデータベースを作成する権限を与えるにはどうすればよいですか? CREATE権限を使ってログインを作成すると、dotnet efが使用できるログイン/パスワードパラメータはありますか?


まあ、思ったように私はDBパーミッションを持っていないようです。

私はSSMSの中からdbを追加するテストをしましたが、CREATE権限を持っていないようです。 "CREATE DATABASE権限がデータベース 'master'で拒否されました。

私は自分のコンピュータ管理者ログインアカウントのSSMSにいます。そして私はWindows認証を使用してSSMSを起動します。したがって、一番上の接続ノードは、FullComputerName \ SQLExpress(SQL Server 11.0.6020 - CompanyDomainName \ Samuel)のようになります。

Windows認証ログインは、CompanyDomainName \ Samuelという形式です。私は、コンピュータマネージャ - ユーザの下に自分のCompanyDomainName \ Samuelアカウントが表示されません。このアカウントでどのようにコンピュータにログインできるかわかりません。このアカウントをセキュリティログインのログインとして追加するにはどうすればよいですか?

人気のある回答

ローカルのWindowsアカウントCompanyDomainName\SamuelがSQLExpress管理者です。 Windowsにログオンしているときは、SQLExpressの管理者です。

Integrated security=trueは、WindowsアカウントでSQL Serverに接続するために使用されますが、IIS(またはKestrelまたは任意のWebサーバー)が別のWindowsユーザーアカウントを使用するため、機能しません。

2つの選択肢があります。

  • WebサーバーのWindowsユーザーアカウントをSecurity/Loginsに追加し、 Windows authenticationを確認しWindows authentication ここに画像の説明を入力してください

  • または、 SQL Server authenticationで新しいログインを作成し、代わりにそれを使用するように接続文字列を更新します。
    "Server=.\\SQLEXPRESS;Database=MvcMovieDb1;User Id=dbUserName;Password=thePassword"

(注:この最後の解決策を選択した場合、ソースコードにパスワードを格納するとセキュリティ上の問題が発生する可能性があることに注意する必要があります。 詳細については、このページを読んでください



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ