質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Q&A

解決済

2回答

2117閲覧

SQLServerでユーザがテーブルを作成出来ないようにしたい

_doll_

総合スコア22

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

0グッド

0クリップ

投稿2022/08/23 02:32

編集2022/08/24 03:27

前提

SQLServer認証を利用するtestuser01を作成
testuser01でTEST1_DB、TEST2_DBを作成
同ユーザでTEST1_DBにTable1とTable2を作成
同ユーザでTEST2_DBにTable1を作成

実現したいこと

testuser01がTEST1_DBでテーブル作成ができないようにしたい

該当のソースコード

sa で接続し、以下のSQLを実行

sql

1USE TEST1_DB; 2REVOKE CREATE TABLE FROM testuser01; 3GO

sql

1USE TEST1_DB; 2DENY CREATE TABLE FROM testuser01; 3GO

発生している問題・エラーメッセージ

Cannot find the user 'testuser01', because it does not exist or you do not have permission.

試したこと

ソースコードに記載したSQL文
→エラーメッセージ
TEST1_DBのプロパティ→権限を開き、guestの権限で「テーブル作成」の「拒否」にチェックを付ける
→テーブルが作成できてしまう

補足情報(FW/ツールのバージョンなど)

testuser01には

  • bulkadmin
  • dbcreator
  • public

のサーバーロールが設定されています。

SQLServer 2019
SSMS 18

SQLServerは使い始めです。
ドキュメントも読んでいますが、まだいまいち理解ができておりません
追記すべきこと等ありましたら教えていただきたく思います。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/08/24 01:06

質問者さん、その後無言ですが、追加の回答をしたのでそれに対するフィードバックを返してください。役に立った/立たなかったぐらいはすぐに返せるのでは? 役に立たなかったならどこがダメかを書くとより期待に近い回答が出てくるかも。とにかく無言は NG です。
_doll_

2022/08/24 03:26

不快な思いをさせてしまい、申し訳ありません。 回答でいただいた内容をすぐに確認することができない状態でしたので、確認後にお返事させていただくつもりでした。 これからは、確認できない状態でも、できるだけ早く何かしらのレスポンスをすることにします。 大変申し訳ありませんでした。
guest

回答2

0

自己解決

ユーザを新しく作成し、データベースロールメンバーシップに「db_datareader」を選択することで解決しました。

投稿2022/08/25 07:17

_doll_

総合スコア22

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

SSMS が使えるようですが、であればそれから設定してはいかがですか? 以下の記事が参考になると思います。

オブジェクト権限の状態(GRANT/DENY/REVOKE)
http://www.sqlquality.com/Self2012/Self2012_Security/Text/Step03-08.html


【追記】

下のコメント欄の 2022/08/23 14:31 私のコメントで「SSMS の「ログイン」には「testuser01」はあるのですよね? であれば当該 DB にユーザーマッピングしてから、そのユーザーをテーブルに設定してはいかがですか? あとで参考に画像を回答欄に貼っておきます。」と書いた件です。

SSMS の「ログイン」に含まれている DESKTOP-6F7C2QA\surferonwww というユーザーを University という DB にユーザーマッピング。

イメージ説明

University の Student テーブルに DESKTOP-6F7C2QA\surferonwww をユーザーとして登録。

イメージ説明

その結果。

イメージ説明

投稿2022/08/23 02:42

編集2022/08/23 05:43
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

_doll_

2022/08/23 03:13

回答ありがとうございます。 試してみました。 Let's Tryの1で、サイトではユーザが表示されていますが、私の環境では「testuser01」が表示されません。 表示された「guest」で「テーブル作成」を拒否して続けましたが、テーブルが作成できてしまいました。
退会済みユーザー

退会済みユーザー

2022/08/23 05:31

> 私の環境では「testuser01」が表示されません。 SSMS の「ログイン」には「testuser01」はあるのですよね? であれば当該 DB にユーザーマッピングしてから、そのユーザーをテーブルに設定してはいかがですか? あとで参考に画像を回答欄に貼っておきます。
_doll_

2022/08/24 03:26

追記ありがとうございます。 「ログイン」には「testuser01」はあります。 画像の通りに設定を進めてみました。 ユーザマッピングの際に、TEST1_DBのユーザにdboが表示されていました。 1度チェックを外し、再度チェックを付けると「testuser01」に変更されましたが、 ユーザー 'dbo' のRenameに失敗しました。 Cannot alter the user 'dbo'. (Microsoft SQL Server、エラー: 15150) と表示されてしまいました。
退会済みユーザー

退会済みユーザー

2022/08/24 03:45

いろいろいじった結果であろうと想像してますが、だとすると自分にはどうなっているのかは分かりません。可能であれば新たに別のユーザーをログインに追加するなどしてゼロからやってみてはいかがですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問