ラベル SQLServer の投稿を表示しています。 すべての投稿を表示
ラベル SQLServer の投稿を表示しています。 すべての投稿を表示

2013年3月28日木曜日

SQLServer 15023: ユーザーまたはロール は現在のデータベースに既に存在?!

さらに続き。
環境作成の道のりは険しい。
sql文のバッチファイルを流しただけでは、だめ、とは(><)。

一般ユーザでは、
「ログインにマッピングされたユーザ」で一覧に出てこないデータベースがあったので、
saでログインして、そのユーザに対し、使用したいデータベース名にチェックを入れると、


ユーザー'sql1'の作成に失敗しました。
ユーザー、グループ、またはロール'ユーザ名'は現在のデータベースに既に存在します。
(Microsoft SQL Server 、エラー:15023)

とエラー表示。

【解決方法】
以下のSQLを実行して、ユーザーマッピングを修復した

USE データベース名
EXEC sp_change_users_login 'Update_One', '現在のDBに存在するユーザー名', 'SQL Serverログイン名'

参考にしたサイト↓

SQL Server テーブルが見えない?!

さっきの続き。

Microsoft SQL Server 2008 のSQL Server Management Studio のオブジェクト エクスプローラで、
見えないテーブルがある。
([データベース] フォルダを展開し、さらに特定データベースを展開し、
テーブルを展開しても表示されない。)

saだと見えるので、テーブルはできている。
テーブルはsaで作成し、一般ユーザを登録し、
そのユーザにテーブルアクセスの権限は与えている。

どうやら、スキーマー名がデフォルトのdboため、見えないようだ。
(ユーザ名sql1でスキーマsql1のテーブルは見える)

試行錯誤して、以下を実施したら、見えるようになった。
(正しいかどうかは不明 ^^;)

①インスタンス直下のセキュリティのログインの特定ユーザ名をダブルクリックして
「ログインのプロパティ」を表示
②ユーザマッピングを選択し、「ログインにマッピングされたユーザ」で、
使用したいデータベース名にチェックを入れる。
③その「データベースロールメンバシップ」で、db_datareader、db_datawriterにチェックを入れる

(参考)
SQL Server Management Studio の使い方


SQLServer 現在のセキュリティ コンテキストではアクセスできません?!

1年ぶりのSQLServer2008。すっかり忘れている(^^;;)。
 sqlをバッチで流してデータベースを作成し、その後、 SQLServer2008のSQL Server Management Studioで のオブジェクト エクスプローラで [データベース] フォルダを展開すると、
エラーメッセージが表示された。
現在のセキュリティ コンテキストでは、サーバー プリンシパル 【ユーザ名】はデータベース 【データベース名】 にアクセスできません。 (Microsoft SQL Server、エラー:916)
解決策はマイクロソフトのサイトに詳しく書いてあった 
 要約すると、
オブジェクト エクスプローラで、[データベース] フォルダをクリック→
[オブジェクト エクスプローラの詳細] ページで、列見出しを右クリックし[表示のリセット] をクリック
その後、
オブジェクト エクスプローラで、[データベース] フォルダを右クリックし、[最新の情報に更新] をクリック
それでもだめな場合は、
オブジェクト エクスプローラで、[データベース] フォルダをクリック→
[オブジェクト エクスプローラの詳細] ページで、列見出しを右クリックし[照合順序] チェック ボックスをオフ
その後、
オブジェクト エクスプローラで、[データベース] フォルダを右クリックし、[最新の情報に更新] をクリック