none
SQL 変更データ キャプチャ(CDC: Change Data Capture)の利用方法について RRS feed

  • 質問

  • 初めて投稿します
    SQL Server2008 R2 developper をインストールして使用しております。
    変更データ キャプチャ(CDC: Change Data Capture)機能を利用したいのですが

    クエリを使い次のコマンドを実行しました

    USE データベース名
    EXEC sys.sp_cdc_enable_db

    その結果エラーが表示されます。
    以下、内容
    『メッセージ22830、レベル16、状態1、プロシージャsp_cdc_enable_db_internal、行186
    データベースokahashi_local でChange Data Capture が有効になっていることを示すメタデータを更新できませんでした。このエラーはコマンド'SetCDCTracked(Value = 1)' の実行中に発生しました。返されたエラーは15517: 'データベースプリンシパルとして実行できません。プリンシパル"dbo" が存在しないか、この種類のプリンシパルで権限を借用できないか、ユーザーに権限がありません。' です。アクションおよびエラーを使用してエラーの原因を特定し、要求を再実行してください。
    メッセージ266、レベル16、状態2、プロシージャsp_cdc_enable_db_internal、行0
    EXECUTE 後のトランザクション数は、BEGIN ステートメントとCOMMIT ステートメントの数が一致していないことを示しています。以前の数= 0、現在の数= 1。
    メッセージ266、レベル16、状態2、プロシージャsp_cdc_enable_db、行0
    EXECUTE 後のトランザクション数は、BEGIN ステートメントとCOMMIT ステートメントの数が一致していないことを示しています。以前の数= 0、現在の数= 1。
    メッセージ3998、レベル16、状態1、行1
    コミットできないトランザクションはバッチの終了時に検出されます。このトランザクションはロールバックされます。』

    現状、エラーが出る理由が分からない状態です。
    調べてみると、
    ストアドプロシジャ sys.sp_cdc_enable_db には
    固定サーバー ロール sysadmin のメンバーシップが必要です
    という文言がMicrosoftのサイトに載っていました。これが原因なのでしょうか。
    これが原因であればsysadmin のメンバーシップをどのように設定すれば良いのでしょうか。

    SQL Serverを使用して間もないため知識もなく不勉強な点も多いですが、
    ご回答宜しくお願い致します。


    • 編集済み daihar 2011年6月22日 2:08 タイトル入力できていなかったため
    2011年6月22日 1:55

回答

  • ストアド プロシージャ sys.sp_cdc_enable_db を、sysadmin が付与されたログインで実行しろということだと思います。

    sa ログインでログイン後に、このストアドプロシージャを実行してみてはどうでしょう。

    もしくは、SQL Server インストール時に指定した Windows ログインでログイン。

    • 回答の候補に設定 山本春海 2011年6月30日 7:41
    • 回答としてマーク 山本春海 2011年7月6日 6:39
    2011年6月27日 10:17