カテゴリー別アーカイブ: SQL Server

SharePoint Foundation 2013の「構成データベースの設定」で信頼できないドメインからのログインと言われる場合の対処法

先日、SharePoint Foundation 2013を構成している際に今までに見たことがないトラブルが発生した。
最終的に解決できたものの、理屈が不明のため、ここにとりあえずでメモしておく。


環境

  • ドメインサーバ
  • DBサーバ(SQL Server 2014)
  • APサーバ(SharePoint Foundation 2013)

現象

  • 「構成データベースの設定」で情報を入力し、「次へ」をクリックしても「サービスが実行中かご確認ください」というエラーメッセージが表示される
  • DBサーバのイベントログには「このログインは信頼されていないドメインからのログインなので、Windows 認証では使用できません」と表示されている
  • 勿論ログインしようとしているユーザー(設定画面で指定したユーザー)はSQL Severと同ドメインの、権限も有るアカウントである
  • FWを切っても状況は改善しない

参考:「構成データベースの設定」画面


解決方法

正しいドメインのユーザーなのに信頼できないドメインと言われ途方にくれていたが、
まさかの部分を修正して解決した。

APサーバーのhostsファイルにドメインサーバ、DBサーバ、APサーバの名前解決情報が入っていた。
ドメインに所属して同じDNSを用いている以上不要なのでこのhostsファイルの上記名前解決情報を削除したところ、問題が解決した。

理屈は全くわからないのだが、名前解決情報があるために一部ドメインを経由せず認証を行うような挙動になったのかな、と推測している。
再現性を取る時間もないので、とりあえず経験した事実だけ書き記しておこう。


そろそろ転職を考えなくちゃいけないかなぁ。
日々勉強、常に時代に追いつき、追い越さなくてはならない「技術者」には僕は成れない。
自分に見切りを付けてもいい時期かもしれないな。

SQL Serverの照合順序を変更する

SQL Serverでは文字列比較の基準となる照合順序が設定できる。
例えば「大文字小文字を区別する」等である。

これはデータベース毎に設定可能で、特に指定していない場合はSQL Serverセットアップ時に設定したサーバーデフォルト値が適用される。

デフォルトと異なる照合順序をデータベースに設定した場合、トラブルが発生しやすい。
例えば、一時テーブルと作成し、それとデータベース内のテーブルをJOINするようなクエリはエラーになる。
これは、一時テーブルの照合順序はサーバーのデフォルト値になっており、
異なる照合順序でのon Table.col1=temptable.col1という比較が行えないためである。
on Table.col1=temptable.col1 collate Japanese_CI_ASのように、クエリの中で照合順序を指定すればエラーは発生しない。)

仕事の都合で照合順序の変更を余儀なくされたことがあったので、その手順をメモする。
なお、実際に行ったのはSQL Server 2012だが、2008 R2や2014でも同じだと思う。

・データベース単体の照合順序変更方法

以下のクエリを実行すれば良い。
対象のデータベース名をSampleDataBase、照合順序をJapanese_CI_AS_KS_WSとする。

・SQL Server(=システムデータベース)の照合順序変更方法

データベースが存在すると実行できないため、システムデータベースを除く全てのデータベースを削除する。
(復元が必要な場合はバックアップをとっておく。)

SQLのインストールディレクトリ内にSetup.exeがあるので、そこに移動する。
規定ではC:\Program Files\Microsoft SQL Server\110\Setup Bootstrap\Releaseである。
コマンドプロンプトからSetup.exeを以下のコマンドで実行する。

例えば、インスタンス名は規定のMSSQLSERVER、Windows認証でAdministratorがSQL Serverにログイン可能で、
照合順序をJapanese_CI_AS_KS_WSに変更したい場合は以下のようなコマンドを実行する。


なお、実行できない場合、インストールメディアのSetup.exeで試すとうまくいく場合がある。
理由は不明で、偶然かもしれないが、そういう場合もあった。


参考
データベースの照合順序の設定または変更
システム データベースの再構築