Translate

2012年2月27日月曜日

トランザクションレプリケーションの更新可能なサブスクリプション

 SQLServer2005のトランザクションレプリケーションで2拠点間のデータベースを同期するために、作業の中で問題になったところとその解決方法についてまとめておきます。

■構成

 SQLServer2005 Standardをパブリッシャ、SQLServer2005 Expressをサブスクライバとして、「トランザクションレプリケーションの更新可能なサブスクリプション」を組むこと。

■注意点

 以上のような構成を「SQL Server Management Studio」のウィザードで組むためには、次のような注意点があげられる。
  • Distributed Transaction Coordinatorサービスを自動起動するように設定する
  • SQLサーバの認証を「SQL Server認証モードとWindows認証モード」にしておく
  • サブスクライバから接続するためのアカウント情報を、予めパブリッシャに登録しておく

■Distributed Transaction Coordinatorサービス

 サブスクライバからパブリッシャへ更新をトランザクションするには、サービスの「Distributor Transaction Coordinator」サービスを使用するので、次の設定をしてサービスを起動するように設定するようにする必要があります。
  1. パブリッシャとサブスクライバの双方でDistributed Transaction Coordinator(msdtc.exe)サービスを自動実行させる
  2. コントロールパネルの「管理ツール → コンポーネント サービス」を開き、コンソール ルートの「コンポーネント サービス → コンピュータ → マイ コンピュータ」のプロパティをから、msdtc.exeのセキュリティの構成を変更する
  • 「ネットワークDTCアクセス」にチェックを入れる
  • トランザクションマネージャ通信の「受信と送信を許可する」にチェックを入れる
  • 「認証を必要としない」を選択する
MSDTC「セキュリティの構成」

■SQLServerの認証方法

 サーバ認証の方法を、「SQL Server認証モードとWindows認証モード」に変更する。
サーバのプロパティ

■サブスクライブ用のアカウントを作成する

 パブリッシャ側のセキュリティに、予めサブスクライバ側からトランザクションする際に使用するアカウントを追加する。基本的にはレプリケーションを行うデータベースへの読込と書込の権限があれば十分です。
 このアカウントは、サブスクライバの一般ユーザーアカウントをパブリッシャのデータベースに接続するために、リンクサーバのプロパティで使用します。
  1. パブリッシャの「セキュリティ → ログイン」にユーザーアカウントを作成
  2. 認証方法は「SQLServer認証」にして、ログイン名とパスワードは任意
  3. ユーザーマッピングでレプリケートするデータベースにチェックを入れ、"db_datareader"と"db_datawriter"にチェックを入れる
  • この際アカウントの認証方法はSQL Server認証にする必要があります

■パプリケーションとサブスクライバを設定する

 主な設定方法に関しては、Microsoftのサイトなどにも解説されているのでそちらを参考にする。
トランザクション パブリケーションの更新サブスクリプションを有効にする方法 (SQL Server Management Studio)
トランザクション パブリケーションに対して更新可能なサブスクリプションを作成する方法 (SQL Server Management Studio)
  • 更新可能なサブスクリプション用のログイン」ページで、”サブスクライブ用のアカウントを作成する”で作成したアカウントとパスワードを入力する。
  • ExpressにはAgentが無いため、ディストリビュータはパブリッシャ側に置く

■パプリケーションにユーザーを追加する

 最後にパプリケーションのプロパティを開き「パプリケーション アクセス リスト」のページで、実際にサブスクライバ側のサーバに接続してデータを更新するユーザーのアカウントを追加します。

2012年2月20日月曜日

WiXでファイアウォールの例外登録

最近のWindowsはセキュリティが向上した反面、システム開発の立場からは非常にやりにくい状況になっています。特にファイアウォールに関しては Windowsファイアウォールのほかにも、各種セキュリティーソフトなどそれぞれに設定方法が違って頭を悩ませるには十分の内容です。

WiX3.0以降でファイアウォールの例外登録ができることがわかったので、備忘録として設定方法について記録しておきます。

まず、ファイアウォールの機能はExtensionとして提供されているので、ソース(*.wxs)とコンパイル(Candle)、リンク(Light)の3箇所に手を加える必要があります。

■ソース

FirewallExtensionを使用するためには、まずはじめにWix要素に「FirewallExtension」を名前空間「fire」としてインクルードするための一文を追加する必要があります。
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:fire="http://schemas.microsoft.com/wix/FirewallExtension">
次に、ファイアウォールを設定したいFile要素もしくはComponent要素に、FirewallException要素を追加します。下の例はアプリケーションの実行ファイル(myapp.exe)に対して通信を許可する例外を追加するものです。

このほかにも特定ポートなどの通信を許可する設定などもできるようです。
<File Id="myapp.exe" Name="myapp.exe" Source="D:\MyApp\myapp.exe" KeyPath="yes">
    <fire:FirewallException Id="myapp.exe" Name="MyAppName" Scope="any"/>
</File>
※ファイアウォールの要素名には接頭辞「fire:」をつける必要があります。

■コンパイル&リンク

インストーラのコンパイルとリンクの際には、引数に"-ext"を使って「WiXFirewallExtension」ライブラリを追加する必要があります。
candle.exe myapp.wxs -out myapp.wixobj -ext WixFirewallExtension

light.exe myapp.wixobj -ext WixUIExtension -ext WixFirewallExtension -cultures:ja-jp  -out myapp.msi -pdbout myapp.wixpdb myapp.wixobj
以上です。

赤で書いたところが追加が必要なところです。

2012年2月17日金曜日

既定のブラウザ(メールクライアント)の設定が毎回出てくる

 ブラウザやメールクライアントにMicrosoft製の製品以外を使用していると、まれに既定のブラウザやメールクライアントの設定を毎回聞いてくることがあります。
 この不具合による問題点と解決方法を以下に説明します。

■問題点

このような症状が出ている場合、次のような問題も発生します。
  • 毎回既定の設定を聞いてくる
  • アプリケーションからメールに添付して送信しようとするとエラーになる、もしくはOutlookExpressが起動する
  • アプリケーションからURLを開こうとするとエラーになる、もしくはInternetExplorerが起動する

■解決方法

次の設定を行うことで既定のブラウザやメールクライアントを変更することができます。
  • Windows XP

  1. コントロールパネルを開き「プログラムの追加と削除」を起動します。
  2. ダイヤログの左端にある「プログラムのアクセスと既定の設定」を選択します。
  3. 右の枠から「カスタム」を選択して、既定のブラウザやメールクライアントにチェックを付けます。
  • Windows Vista/7

  1. スタートメニューから「既定のプログラム」を選択し「コントロールパネル」の「既定のプログラム」を開きます。
  2. 次に「プログラムのアクセスとコンピュータの既定の設定」を選択します。
  3. 「カスタム」を選択して、既定のブラウザやメールクライアントにチェックを付けます。 

■参考資料

Thunderbirdの索引ファイル(msf)の破損について

Thunderbirdを使用していると稀にmsfファイルが破損したので修復をしてください。という類のメッセージが表示されることがあります。
これが表示されると受信ファイルなどの内容が表示されないなどの問題が出て非常に使い勝手が悪い・・・

また、msfファイルが破損していると内容が表示されないまでも、Thunderbird全体のパフォーマンスが落ちるなどの不具合もあるようです。

これの対処方法について説明します。

■症状

 Thunderbirdを起動すると、次のようなメッセージが表示される?
症状を確認していないためダイヤログの画像はありません・・・

■対処方法

問題の発生したフォルダのプロパティを表示して、「フォルダを修復(R)」ボタンを押すだけ。

■注意事項

 フォルダの修復を実行すると、メールの重要度やスターマークなどの情報が失われるらしいので注意してください。確認した限りではそれらの情報は失われてませんでしたが・・・