カテゴリ「SharePoint 全般」の83件の投稿 Feed

2008年1月16日 (水)

データベース周りに関する質問も時々受けますので、今日はコンテンツDBについて取り上げてみたいと思います。サイトコレクションはコンテンツDB内に作成されます。既定では Web アプリケーションを作成するごとに、新規に1つ作成されます。

コンテンツ データベースを構成する

コンテンツ DB 内に作成できるサイトの数には上限があります。既定では15,000個作成できるようになっています。こうした作成できるサイトコレクションの最大サイト数や現在作成されているサイトコレクションの数は [SharePoint サーバーの全体管理] から設定および確認ができます。 データベースは日々肥大化していくことになりますから、SharePoint をインストールしたら最初にこの値は調整しておいた方がよいでしょう。

コンテンツ データべース の設定

[SharePoint サーバーの全体管理]-[Webアプリケーション構成の管理] の [SharePoint Web アプリケーション構成の管理]セクションの "コンテンツ データベース"にアクセスする

Contentdb1

コンテンツ データベースを追加する

上記の設定画面から必要に応じてコンテンツDBを追加できます。データベースを分割して管理したい場合などに使用します。さて、新たにコンテンツDBを作成し複数のコンテンツDBが存在する場合、新らしいサイトコレクションはどのデータベースに作られるのでしょうか。実は"最大サイト数"-"現在のサイト数" の差の大きいコンテンツDBが使用されるようになっています。

たとえば、次のように設定したとします。

  • Content_DB_1 : 最大サイト数 10 、作成されているサイト数 5
  • Content_DB_2 : 最大サイト数 10、作成されているサイト数 0

新規にサイトコレクションを作成すると、Content_DB_2 に新たにサイトが作成されます。

特定のコンテンツ データベースに新たなサイトコレクションを作成する

なお、特定のコンテンツDBに新規にサイトコレクションを作るようにしたい場合は、目的のコンテンツ DB 以外をオフラインにしておく必要があります。

[図.オフラインの設定]
Contentdb2

サイトコレクションを別のコンテンツDBに移動する

この機能を利用して、既存のサイトコレクションを新しいコンテンツDBへ移動することも可能です。

別のコンテンツDBへサイトコレクションを移動する

  1. コンテンツ DB を新たに追加する
  2. 次のコマンドを実行する

    stsadm.exe -o backup http://moss2007/sites/top -filename e:\Backup\topsite.bak
    stsadm.exe -o deletesite http://moss2007/sites/top

  3. 移動先のコンテンツDBを以外をすべてオフラインにする
  4. 次のコマンドを実行する

    stsadm.exe -o restore http://moss2007/sites/top -filename e:\Backup\topsite.bak

2008年1月 9日 (水)

MOSS サイトを管理していて混乱しがちなのがユーザー管理です。特に、MOSS の場合は WSS とは異なり "ユーザープロファイル" を持っていることが混乱を招く最大の要因だと思います。今回は、ユーザー管理に関する私なりの調査内容を記しておきます。※今回は SharePoint が利用する SQL Server データベースの内容についても記述しますが、SharePoint が利用している DB は基本的には参照のみを行い、編集などはしないように注意してください。DBの直接編集はサポートされておらず、SharePoint API を通じて操作することが推奨されています。

1.よくある間違い : ユーザー認証とユーザー プロファイル

セミナーを実施していてよく勘違いされていると感じるのが MOSS のユーザー認証の仕組みです。MOSS はユーザープロファイルを保持できるが故に、ユーザー プロファイルを作成することでユーザー認証ができるようになると考えがちです。しかし、それは間違いです。MOSS そのものがユーザー認証の機能を持っているわけではありません。あくまで、Active Directory (AD) なら ドメインコントローラが認証しますし、スタンドアロンであればローカルのWindows Server 自体がユーザー認証をします。その後、各コンテンツデータベースに格納されているユーザー情報等を使用して、承認(だれにどのようなアクセスが許可されているか) をMOSSがコントロールします。ユーザープロファイルは、"人" にかかわる情報を蓄積している単なるデータベースであり、検索等の目的で利用するもので認証には利用されません。

  • MOSS 上でユーザーを作成することはできない
  • サイトには、あくまで、ADもしくはローカルサーバー上で作成したユーザーを "追加" しているに過ぎない
  • 認証 (Authentication) はADもしくはローカルサーバーが行い、その後 MOSS は承認 (Authorization) を行う

まずはこの点を整理しておくことが肝心です。

2. ユーザー情報の格納場所

ユーザープロファイルが構成されている場合は、ユーザー情報は次の2箇所に格納されます。

  • コンテンツ DB : ユーザー情報を格納
  • 共有サービス プロバイダのDB : ユーザープロファイルを格納

コンテンツDB は、通常は "WSS_Content" もしくは" WSS_Content_<GUID>"  という名前です。また、コンテンツDBは既定では Web アプリケーションごとに1つ作成されますので、3つWebアプリケーションを作成していれば、3つのコンテンツDBが作られているはずです。また共有サービスプロバイダ DB は既定では "SharedServices1_DB" という名前です。

  • コンテンツDBとWebアプリケーションの対応付けの確認方法:
    [SharePoint 3.0 サーバーの全体管理] - [Webアプリケーション構成の管理]-[コンテンツデータベース]

3. コンテンツDB内のユーザー情報

コンテンツDB 内で最初に確認するべきテーブルが 'dbo.UserInfo' です。主な列は次の通りです。

列名説明
tp_SiteID サイトコレクションを識別するID
tp_ID ユーザーを識別するID
tp_GUID AD または ローカルアカウントの SID (コピーされる)
tp_Deleted サイトコレクションから削除されかどうかを示すフラグ
tp_Login ログイン アカウント
tp_Title アカウントの表示名
tp_Email 電子メール アドレス

サイトにユーザーを追加すると、AD 環境では AD のディレクトリデータベースからユーザー情報の一部が UserInfo テーブルに一方向にコピーされます。テーブルを見ると、ユーザー情報はサイトコレクション単位で管理されていることがわかります。たとえば、"SiteCollectionA" と "SiteCollectionB" の2つのサイトコレクションがある場合に、それぞれのサイトコレクション内の任意のサイトに最初にユーザーを追加したときに、UserInfo には tp_SiteIDが "xxxxxxxx" で tp_ID が "2" のエントリおよびtp_SiteIDが "yyyyyyyyy" で tp_ID が "2"  のエントリが追加されます。

4.サイトからのユーザーの削除

すべてのサイトからユーザーを削除しても UserInfo テーブルからエントリは削除されません(ユーザーにひもづくアイテムなどのリンクがどこにも所属しないものとなってしまわないようにするための処置であるようです)。意外とご存じないかも知れませんが、ユーザーの削除には "サイトからの削除" と "サイトコレクションからの削除" の2つがあります。

  • サイトからユーザーを削除するには:
    各サイトの[サイトの管理]-[権限の設定(詳細)]にアクセスし、直接アカウントにアクセス権限を割り当てている場合はそのまま目的のアカウントを選択する。SharePoint グループに所属しているユーザーの場合はサイドリンクバーに表示されるSharePointグループにアクセスし目的のアカウントを選択する。続いて [操作] -[ユーザー権限の削除] をクリック
  • サイトコレクションからユーザーを削除するには:
    各サイトの[サイトの管理]-[ユーザーとグループ]にアクセスし、サイドリンクバーに表示される[すべてのユーザー]をクリックする(サイトコレクション内のユーザーを一覧できる)。削除したいユーザーを選択し、[操作] - [サイトコレクションからのユーザーの削除]をクリック

サイトコレクションから削除されたかどうかは tp_Deleted 列が使用されるようです。この値の既定値は 0 です。サイトコレクションから削除されると既定ではこの値に tp_IDの値が代入され(つまり 0 ではなくなる) エントリ自体は残り続けます。サイトコレクション内のどこかのサイトに同じユーザーが再び追加されるとtp_Deleted 列の値が0に戻ります。

5.実験と結果

以上のことを踏まえて以下のような実験をしました。

  1. AD上に "DeleteUser" という名前のアカウントを作成
  2. テスト用のチームサイトを新規に作成し、DeleteUser を追加
  3. AD上から "DeleteUser" を削除し、新規に同じ名前のアカウントを作成
  4. DeleteUser でチームサイトにアクセス

上記のことを行うと、DeleteUser はWindowsシステムにはログオンできますが、SharePoint サイトには一切アクセスできないようになります。これはSIDの相違が原因です。2.でユーザーを追加したときに、UserInfo テーブルの tp_SystemID 列にアカウントのSID がコピーされます。しかし、このコピーはあくまで一方向のもので、かつ一回限りのものです。3. で新規にアカウントを作成しましたので、当然 SID は変わります。つまりログオン時のSID と UserInfo に登録されている SID が同一ではなくなるため、結果としてアクセス拒否されるようになるようです。このことから、ドメイン移行に伴うアカウント移行を行う場合は注意が必要です。SIDを更新したり、SIDhistory を引き継ぐように構成するには、stsadm.exe が利用できるようです。

stsadm.exe -o migrateuser -oldlogin <ドメイン名\ユーザー名> -newlogin <ドメイン名\ユーザー名> (-ignoresidhistory)

ドメインの移行をしたわけでなく、今回の実験のように単純に削除した同一名のアカウントを再び利用したい場合にも、"-ignoresidhistory" オプションを指定すれば利用できるようになるです。がコマンド実行後、"ユーザープロファイル移行中にエラーが発生しました" というエラーメッセージが表示されます。ただ結果的には、実験環境ではエラーメッセージにも関わらず、同一名アカウントでのアクセスができるようになりましたので tp_SystemIDは更新されているようです。

6. UserInfo と ユーザープロファイル

サイトにユーザーを追加すると UserInfo テーブルにユーザー情報のエントリが作成されることはすでに説明しました。さて、肝心のユーザープロファイルとの兼ね合いについてです。ユーザープロファイルは共有サービス管理で管理され、ADやLDAP, BDC などのデータソースからユーザー情報をSharePoint 側へ一方向に取得できます。ユーザープロファイルは管理画面からスケジューリングすることで、一定のタイミングでデータソースから最新の情報を更新できるようになっています。ユーザープロファイルには、上司や自己紹介、技能などのさまざまなプロパティ情報が格納されます。AD 側のユーザーアカウントのプロパティとマッピングしてやることで、そのままAD上のプロパティ情報を取り込むこともできますし、SharePoint 側で独自のプロパティを用意して利用することもできます。

さて、ここからが本題です。実は、ユーザープロファイルがあると、プロファイルの情報の一部がコンテンツDB側に同期されるようになっています。SharePoint は内部プロセスとしてタイマジョブという処理を行います。このジョブの中に、"プロファイルの同期" というものがあり、既定では1時間置きに実行されています。

  • タイマジョブの確認方法:
    [SharePoint 3.0 サーバーの全体管理]-[サーバー構成の管理]-[タイマジョブの状態]

ユーザーアカウントの情報以外にも、自己紹介、写真などの情報も同期されるようです。が、これらのユーザー情報は、コンテンツDB内の"dbo.AllUserData" テーブルの方で保持しているようです。

7.よくある混乱 : "ようこそ○○さん"

少し話は変わって、サイトの上部にはサインインしたユーザー名が表示されているかと思います("ようこそ ○○さん" の部分)。たとえば、あるユーザーが結婚したため苗字が変わったのでAD上でアカウントの表示名を変えます。すると当然SharePoint サイトに表示されるユーザー名にもすぐに反映してほしいところですが、そうはいきません。実は、この情報は UserInfo テーブル内の情報(tp_Title列)を参照しています。よって、プロファイルの方の更新を待ってからでしか最新情報が反映されません(プロファイル更新後、最大で1時間は待つ必要がある)。

しかも、この"ようこそ ○○さん" のドロップダウンメニューにある "個人用設定" をクリックした時に、個人用サイトを作成していると個人用サイトにジャンプします(個人用サイトが作成されていない場合は、UserInfoテーブルを参照)。個人用サイトで編集するユーザーのプロファイルは、あくまで 共有サービスプロバイダDBが管理しているユーザープロファイルデータです(SharedServices1_DB内のdbo.UserProfile_Fullテーブル)。この辺は、ユーザー情報がどう管理されているか分かりにくくしているところだと思います。※ユーザーの表示名、アカウント名など一部のプロパティは既定では編集不可となっています。よってインポートによる定期的な更新が不可欠ですね。

***************************************************
大変長くなってしまいましたが、以上がユーザー管理に関する調査結果でした。参考になれば幸いです。

2008年1月 8日 (火)

皆様、あけましておめでとうございます。本年もよろしくお願いいたします。

本日の内容はリストについてのTips 等をご紹介します。たとえば、チームサイトには「お知らせ」や「リンク」といった既定のリストが用意されていますし、リストテンプレートから新規にリストを作成することも可能です。こうしたリストはリレーショナルデータベースのテーブルと同じように列と行からなる「リスト構造」となっています。従って、広義ではドキュメントライブラリをはじめとする一連の "ライブラリ" も "リスト" と呼ばれることがあります。ただし、今回はライブラリを除くリストについて説明します。

リストでは、既定で次の4つファイルが使用されます。

  • AllItems.aspx : 既定の「すべてのアイテム ビュー」の表示
  • DispForm.aspx : プロパティの表示
  • NewForm.aspx : 新しいアイテム作成時に表示
  • EditForm.aspx : プロパティの編集時に表示

DispForm.aspx, NewForm.aspx, EditForm.aspx は1アイテムに対してプロパティの新規作成、表示、編集操作を行うもので "フォームページ" とも呼ばれます。

さて、このフォームページの中でも NewForm.aspx のカスタマイズについて面白いTipsを見つけたのでご紹介します。

次のようにURLを指定することで NewForm.aspx のページに任意の Web パーツを追加できるようになります。

  • リストのURL/NewForm.aspx?ToolPaneView=2

通常、NewForm.aspx ページを直接編集しようと思うとSharePoint Designer 2007 を使用する必要がありますが、この方法でアクセスすることで NewForm.aspx が編集モードで表示されるようになります。たとえば " コンテンツ エディタ Web パーツ" を追加してやると 任意の HTMLやJavaScriptを記述できるため、新規アイテムを作成する際のちょっとした説明を付け加えることなどが可能です。覚えておくと便利そうですね。

[図:NewForm.aspx の編集モード]

Newform_edit


<参考>Microsoft SharePoint Blog (英語)

2007年12月31日 (月)

今日はいよいよ大晦日です。今年の締めくくりに何を書こうかと思いましたが、MOSS にこれから取り組もうとされている方も多くいらっしゃるようですので、「MOSS 製品に取り組むにはどのような点を勉強していけばよいのか」を整理して、今年の締めくくりとしたいと思います。

MOSS の学習に入る前に

MOSS の学習には実機環境で検証するのが一番です。最初は検証用の環境であれば Virtual PC などの仮想環境が良いと思います。たとえば、Virtual PC や Virtual Server の場合は「復元ディスク」を有効にして利用すると、何かトラブルがあった場合でも、トラブル発生前の状態まで手軽に戻せます。インストール手順については、「ひと目でわかる~」の書籍にも書いています。

MOSS の入門者

1. 基本構造の理解

MOSS はどのように動作しているかをある程度理解した上で、基本機能を学習していくのがお勧めです。

学習のポイントとしては、以下のことを把握することです。

  • MOSS の Web サイトは IIS 上でホストされている
  • MOSS は ASP.NET 2.0 ベースのWeb アプリケーションであり、サイトに格納するコンテンツ(ファイルを含む) はバックエンドのDBが保持している (MOSS の Web サイトは MOSS の DB の出し入れをするための窓口の役割ということになる)

また余力があれば、追々で構いませんので、以下のMOSS の屋台骨となるシステムについて基本機能を把握しておくことをお勧めします。

  • IIS 6.0 (サイトの管理、アクセス許可、アプリケーションプール)
  • Active Directory (ユーザー、グループ管理、Kerberos 認証)
  • SQL Server (データベース管理、セキュリティ、バックアップ/復元)
  • ASP.NET 2.0 Web アプリケーション開発

2. 用語の理解

また、MOSS 独特の用語も覚える必要があります。最初に覚えるのは 「Webアプリケーション」「サイトコレクション」「サイト」の3つです(「ひと目」にこれも書いています)。

3. 押さえておきたい基本機能

MOSS の機能を一通り学習するには、手始めにチームサイトのテンプレートをベースに学習することをお勧めします。

チームサイトでは、リストやライブラリの概念を把握することが先決です。

リスト、ライブラリ

  • リストとライブラリのそれぞれのテンプレートで何ができるのかを一通り検証する
  • リストやライブラリでカスタムビューを作成して、あらかじめ用意されているシステム列(ID列、バージョン列、作成日時列など)にどのようなものがあるのかを確認する
  • カスタム列を追加して、リストやライブラリをカスタマイズする

SharePoint の肝となるのはやはりドキュメントライブラリを使用したドキュメント管理です。ドキュメントライブラリで重要なのはバージョン管理やコンテンツタイプの概念です。

ドキュメントライブラリ

  • バージョン管理 (マイナーバージョン/メジャーバージョンの管理、チェックイン/チェックアウト、承認)
  • カスタム コンテンツ タイプの作成とドキュメントライブラリへの割り当て
  • ドキュメントワークフローの利用

コンテンツ タイプは最初、分かりずらいように思えるかもしれませんが、MOSS では大変重要な概念です。

ワークフローは非常に奥の深いものですが、まずはビルトインで用意してあるワークフローでどのようなことができるのかを確認することから始めるとよいです。

最後に、忘れてはならないのがアクセス権限の概念です。サイト、リスト/ライブラリ、アイテム単位でのアクセス権限の割り当てが可能ですが、どのように設定するのかを確認しておきます。アクセス権の部分の詳細も別途、このブログで紹介します。

MOSS の中級者 (入門者レベルの内容は理解できた方)

入門レベルの内容が把握できたら、次のステップです。MOSS のその他の機能を必要に応じて追加学習します。(※2008/1/3 にシステム管理者向けの項目を一部追記しました)

システム管理者向け

  • 「SharePoint 3.0 サーバーの全体管理」の「サーバー構成の管理」サイトにて主に、ファームサーバー、サーバーのサービス、送信メールの設定、ブロックするファイルの種類、代替アクセスマッピング、バックアップと復元関連項目全般、既定のデータベースサーバーの設定項目を把握
  • 「SharePoint 3.0 サーバーの全体管理」の「アプリケーション構成の管理」サイトにて主に、Webアプリケーションの全般設定(タイムゾーン、アップロードできるファイルの上限、ごみ箱の設定など)、コンテンツ データベース、クォータテンプレート、サイトコレクションのクォータとロック、認証プロバイダの設定項目を把握
  • Information Rights Management とドキュメント ライブラリの統合による情報漏えい防止対策の実装方法の把握
  • リスト、ライブラリの受信メール機能 (メールを使用して、リストやライブラリにアイテムの投稿ができます) の実装方法の把握
  • エンタープライズ検索の設定や構成
  • キャパシティプランニング、パフォーマンスチューニング、障害復旧方法の把握

開発者向け

  • InfoPath 2007 を使った電子フォーム開発と MOSS 連携
  • MOSS 2007 Enterprise Edition の機能として利用できる InfoPath Forms Services, Excel Services, Business Data Catalog の基本機能を把握する
  • エンタープライズ検索機能のカスタマイズ

ちなみに開発者の方は XMLおよびXML 関連技術 (XSLT, XPathなど) の基本は必ず知っておくべきでしょう。さらに開発者の方がMOSSサイトの機能拡張を学習される場合は、次のステップで学習されるとよいです。

  • SharePoint Designer 2007 を使用したサイトのUI カスタマイズ方法
  • SharePoint Designer 2007 を使用した JavaScript 、データビューを使用した機能拡張とカスタムワークフロー開発
  • サイト定義やリスト定義とフィーチャ フレームワークの理解

MOSS の上級者 (中級者レベルまで理解できた方で、システム開発者の方)

さらに上級となると MOSS をベースとした機能拡張やシステム連携が中心となってきます。

  • MOSS API / MOSS Web サービス
  • Visual Studio 2005 extensions for Windows SharePoint Services を使用した Web パーツ開発、イベントレシーバーの実装など
  • Visual Studio 2008 (2005 も可) によるカスタム ワークフロー開発

などですね。

と、今年はここまで。。。

どこまでお役に立てるかはわかりませんが、来年も引き続き MOSS の技術教育に携わっていく予定です。現場の声を直接伺えることが何より大事だと思っておりますので、機会がありましたら、セミナー等にぜひご参加いただき直接お声掛けください。また、このブログを通じて、色々と情報提供をさせていただこうと思っています(コメントは大歓迎です!) 。

皆様にとってもよい一年になりますよう心よりお祈り申し上げます。来年もどうぞよろしくお願いいたします。

2007年12月26日 (水)

「新規アイテムを投稿したときに表示される "New!" のアイコンはどれくらいの期間表示されるのですか?」 というご質問をときどき頂きます。

答えは2日間(既定値)です。

この New! のアイコンの表示期間は次の方法で指定することも可能です。

■stsadm.exeを使用する場合
stsadm.exe -o setproperty -propertyname days-to-show-new-icon -propertyvalue [表示する日数] -url [仮想サーバーのURL]

■SharePoint API を使用してプログラムからアクセスする場合SPWebApplication.DaysToShowNewIndicator プロパティを変更する。

いずれも設定期間を0にすると、New!は表示されなくなります。


参考までに New! のアイコンファイルそのものはどこにあるかといえば、SharePoint ハイブ (C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\) 内のTEMPLATE\LAYOUTS\1041\IMAGESフォルダ内にある "New.gif" です。

********************
なんだかんだと過ごしている間にクリスマスも過ぎてしまいましたね。今年も残すところ1週間を切りました。やりたいこと、やらなければいけないことが、山積みなのに、遅遅として進まずです。このまま年越しかしら。。。