ご存知の通り、SharePoint は SQL Server をデータベースとして利用し、ユーザーが登録したデータはデータベースへ格納されています。普段は、データベースの中を直接見る機会はないのですが、せっかく中を見られるのだからちょっと見てみたくなるのが人の性。というわけで、自分が登録したリスト アイテムがどこに格納されているのかを確認してみました。

20140826-1

データベースの中の値を直接書き換えることは、サポート外となりますのでくれぐれもご注意ください!!

リスト アイテムを探す

SharePoint を構成しているデータベースの数は多く、さまざまなデータベースが作成されていますがユーザーが登録したコンテンツは、全てコンテンツ データベースへ保存されています。そこで、今回はコンテンツ データベースを開きます。(SQL Server Management Studio を利用しています)

20140826-2

コンテンツ データベースの中には、これまたテーブルが多く含まれています。何から探すか、まずはアイテムを登録したサイトを探してみます。サイトの一覧は「AllWebs」テーブルに入っています。アイテムを登録したサイトを、「FullUrl」列や「Title」列などの値を手掛かりに探して「Id」列の値を控えておきます。

20140826-3

次に、アイテムを登録したリストを探します。リストの一覧は「AllLists」テーブルに入っています。ここで、先ほど控えた「Id」列の値で「AllLists」テーブルの「tp_WebId」列をフィルターしましょう。これで、サイトへ作成されているリストの一覧のみが取得できます。ここでも目的のリストを「tp_Title」列の値を手掛かりに探して「tp_ID」列の値を控えておきます。

20140826-4

いよいよ、リストへ登録したアイテムを探しにいきます。リストに登録したアイテムは「AllUserData」テーブルに入っています。ここで、またまた先ほど控えた「tp_ID」列の値で「AllLists」テーブルの「tp_ListId」列をフィルターします。これで、リストに登録されているアイテムの一覧が取得できます。

20140826-5

「tp_ID」列がリスト アイテムのアイテム ID と紐づいているので、それを基に探して…「tp_ColumnSet」の列に入っている値を確認すると、はい!リストに登録されたデータを XML 形式で確認することができました!!

20140826-6

20140826-7

と、確認できたのは良いのですが、値を直接編集することは先にも述べた通りサポート外となります。

情報を探す

データベースやテーブル スキーマーに関するドキュメントはないかな?と、TechNet をあさってみると、SharePoint 2003 時代のものは見つけることができました。ただし、その後のアップデートは無いようですね。SharePoint 2013 のものを見比べると、色々と違いがあります。

Content Database Tables
http://msdn.microsoft.com/en-us/library/dd624759(v=office.11).aspx

さいごに

データベースの中を直接見れたからといって何ができるわけではないのですが、少しだけ SharePoint に詳しくなれたような気がしました。たまにはこうした興味本位のネタも。