C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

C#プログラムでSQL Server にLocalDBを登録

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■88358 / inTopicNo.1)  C#プログラムでSQL Server にLocalDBを登録
  
□投稿者/ ぽんすけ (16回)-(2018/08/22(Wed) 15:28:37)

分類:[データベース全般] 

C#のアプリケーションにおいて、
SetUPProjectを利用して、インストーラを作成しております。
カスタムインストーラプロジェクト内で、local DBの構築を使用としておりますが、
うまくいっておりません。

以下、コードになります。

----------------------------------------------------------------------------------------------------------------------------
string ConnectionStr = @"Data Source = (localdb)\MSSQLLocalDB; Initial Catalog = master; Integrated Security = SSPI; Persist Security Info=False; Trusted_Connection = True; Pooling = True; server=(local)";
SqlConnection con = new SqlConnection(ConnectionStr);
con.Open();
var command = con.CreateCommand();

command.CommandText = "GRANT CREATE DATABASE TO PUBLIC";
command.ExecuteNonQuery();

//データベース作成
command.CommandText = "CREATE DATABASE tesDB";
command.ExecuteNonQuery();


以下、略
----------------------------------------------------------------------------------------------------------------------------

ビルド後、実行した結果、「Error1001 権限の許可者がGRANT権限を持っていません。」と表示されてしまいます。

ConnectionStrに設定が足りていないのでしょうか。
識者の方々、すみませんがご教示お願い致します。



引用返信 編集キー/
■88366 / inTopicNo.2)  Re[1]: C#プログラムでSQL Server にLocalDBを登録
□投稿者/ はまぐり (62回)-(2018/08/23(Thu) 10:00:06)
No88358 (ぽんすけ さん) に返信

> ビルド後、実行した結果、「Error1001 権限の許可者がGRANT権限を持っていません。」と表示されてしまいます。

権限の許可者はGRANT CREATE DATABASEのSQLを実行するアカウントのことで
GRANT権限がないとGRANTのSQLを実行できないということだと思います

じゃあどうしますかと
権限がないならば権限を与えればいい、または、権限のあるアカウントを使えばいいと思うんですよ

GRANT (データベースの権限の許可) (Transact-SQL)
https://docs.microsoft.com/ja-jp/sql/t-sql/statements/grant-database-permissions-transact-sql?view=sql-server-2017
| 権限の許可者 (または AS オプションで指定されたプリンシパル) は、
| GRANT OPTION によって与えられた権限を保持しているか、
| 権限が暗黙的に与えられる上位の権限を保持している必要があります。

これかな、WITH GRANT OPTIONで権限を付与するか
saアカウントのような権限のあるアカウントを使えばいんじゃないでしょうか
引用返信 編集キー/
■88368 / inTopicNo.3)  Re[1]: C#プログラムでSQL Server にLocalDBを登録
□投稿者/ WebSurfer (1585回)-(2018/08/23(Thu) 10:29:06)
No88358 (ぽんすけ さん) に返信

直接の回答ではなくてすみませんが・・・

> カスタムインストーラプロジェクト内で、local DBの構築を使用としておりますが、

そこがどうしても解決できなければ、開発環境であらかじめ .mdf ファイルを作って、
それもアプリと一緒にユーザーに配布・インストールしてもらって、アプリではそれを
LacalDB にアタッチして使うようにしてはいかがですか?


#以前 MSDN Forum で LocalDB を開発目的以外に使うのはどうかという議論がありました。

LocalDB をどう考えますか?どう捉えていますか?
https://social.msdn.microsoft.com/Forums/ja-JP/82afff90-bea5-4987-9f4d-857a3c75fc4c/localdb?forum=sqlserverja

ライセンス的に問題があるのかどうか、結局は使う人が Microsoft に確認しないと分か
らないという話のようでした。注意された方が良いと思います。

引用返信 編集キー/
■88369 / inTopicNo.4)  Re[2]: C#プログラムでSQL Server にLocalDBを登録
□投稿者/ ぽんすけ (19回)-(2018/08/23(Thu) 15:05:29)
はまぐり様、 WebSurfer様

ご教示どうもありがとうございます。

一度整理してから取り掛かってみます。
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ