以前、
SQL Server 6.5 を Windows 2000 Server にインストールする方法 の記事を書いた。
その記事では、最後にもう一度 Windows 2000を上書きで再インストールする、などという、「力業」を書いてしまったが、そんなことは必要ない。
コマンドラインから、
net stop msdtc
msdtc -uninstall
msdtc -install
とやればよい。
ようするに、まず MSDTCサービスを止めて、
msdtc をサービスから削除、
そして msdtc をサービスに登録、
ということである。
これで、「MSDTC」がサービスから消えて、
「Distributed Transaction Cordinator」が再び現れてくる。
なお、MSDTCには脆弱性が見つかっており、念のため、パッチを当てておくことにする。
http://www.microsoft.com/japan/technet/security/bulletin/ms05-051.mspx
ここからダウンロードできる。もちろん既にパッチが当たっている場合は再度当てる必要はないと思うのだが、一応念のため。
2006年09月17日
SQL Server 6.5a メモ
バックアップでできた *.DAT ファイルを他のマシンのSQL Server に移動して、データを移動することができる。
その場合、ファイル名の変更をしてもよいが、スペースを入れないように注意。ファイル名にスペースが入っている場合、SQL Server はそのファイルをバックアップ・データとして認識しないようだ。
その場合、ファイル名の変更をしてもよいが、スペースを入れないように注意。ファイル名にスペースが入っている場合、SQL Server はそのファイルをバックアップ・データとして認識しないようだ。
SQL Server 6.5a メモ
SQL Server 6.5 を使っていて IDENTITY 列がおかしくなって、新規にレコードを追加できなくなる時がある。
そんなときは、SQL クエリツールを使って、
dbcc checkident ( table_name )
で直る。
以下、ヘルプより。
現在の ID 値をチェックして、その値を ID 列の最大値と比較します。現在の ID 値が無効である場合は、ID 値は ID 列の最大値でリセットされます。ID 情報が無効であると、ID 列に PRIMARY KEY または UNIQUE KEY 制約がある場合、SQL Server はメッセージ 2627 を生成します。
そんなときは、SQL クエリツールを使って、
dbcc checkident ( table_name )
で直る。
以下、ヘルプより。
現在の ID 値をチェックして、その値を ID 列の最大値と比較します。現在の ID 値が無効である場合は、ID 値は ID 列の最大値でリセットされます。ID 情報が無効であると、ID 列に PRIMARY KEY または UNIQUE KEY 制約がある場合、SQL Server はメッセージ 2627 を生成します。
SQL Server 6.5 を Windows 2000 Server にインストールする方法
SQL Server 6.5 は Windows NT 4.0 時代のソフトで、Windows 2000 Server には通常はインストールできません。
以下は、その昔インストール方法をウェブで検索して見つけたものです。
某掲示板(どこだか忘れました)の「ねつ」さんによる投稿でした。
-----------------------------------------
SqlSv6.5 + Windows2000 投稿者:ねつ 投稿日:2004/04/15(Thu) 11:41 [返信]
1)
Windows2000にSQLServer6.5(SP5a)をインストールします。
(媒体は「SQLServer6.5(SP4)」と思います)
通常はエラーになりインストールできませんが、
Setup.Infを修正することでインストール可能です。
(「MSDTC」のチェックでエラーになるようです)
→具体的には「StopService $(!MSDTCService)」で検索して、
先頭から、1つめの「StopService $(!MSDTCService)」が
ある「ifstr(i) $(!STF_OS) == "NT"」から「endif」間の
「shell "" StopService〜」を全てコメントにする。
以下、
ifstr(i) $(!RegistryRebuild) != ""
ifstr(i) $(!STF_OS) == "NT"
; shell "" StopService $(!MSDTCService)
; shell "" StopService $(!SQLMonitorService)
; shell "" StopService $(!SQLSchedulerService)
; shell "" StopService $(!SQLOldSchedulerService)
; shell "" StopService $(!SQLOldServerService)
; shell "" StopService $(!SQLServerService)
; shell "" DoLicense
ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
goto setupnotdone
endif
shell "" DoNewInstall
ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
goto setupnotdone
else
read-syms InstalledTag$(!STF_LANGUAGE)
goto installdone
endif
endif
endif
次に検索でひっかかった「StopService $(!MSDTCService)」
が入っている「ifstr(i) $(!RegistryRebuild) == ""」から
「endif」間の「shell "" StopService〜」から直後の
「ifstr(i) $($R0) != "STATUS_SUCCESSFUL"」の「if文」3行
をコメントにする。
以下、
ifstr(i) $(!RegistryRebuild) == ""
; shell "" StopService $(!SQLMonitorService)
; ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
; goto end_new_inst
; endif
; shell "" StopService $(!MSDTCService)
; ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
; goto end_new_inst
; endif
; shell "" StopService $(!SQLSchedulerService)
; ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
; goto end_new_inst
; endif
; shell "" StopService $(!SQLOldSchedulerService)
; ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
; goto end_new_inst
; endif
; ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
; goto end_new_inst
; endif
; shell "" StopService $(!SQLOldServerService)
; ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
; goto end_new_inst
; endif
shell "" ReportProgress "12", $(!MSG_BOSTATUS_StartFiles)
shell "" InitFileVersionInfo
〜省略〜
→コメントは「;」を行頭に付与する。
2)
非常に速いドライブに SQL Server をインストールすると、
"SQL Server の初期設定をインストールしてます。" の画
面でセットアップ プログラムが応答しなくなることがあ
ります。
この問題を回避するためには SQL Server のインストール
ファイルをローカル ハード ディスクにコピーし、
Instmsdb.sql ファイルを編集します。
Instmsdb.sql スクリプトの一番頭に 「WAITFOR DELAY '0:00:01'」
ステートメントを追加します。
(「http://support.microsoft.com/default.aspx?scid=kb;ja;180649」)
1)、2)どちらでも
インストール完了後に、再度「SQLServer6.5SP5a」を適用してください。
-----------------------------------------
「ねつ」さんの投稿は以上です。
これを我が家で実行してみたところ、インストールはできるのですが、MSDTC関連がおかしくなります。
Windows 2000 Server では、通常「Distributed Transaction Cordinator」というサービスが稼働していますが、このサービスが消えてしまうんですね。
SQL Server 6.5 をインストールした後、Windows 2000 Server を上書きでインストール(インストール画面ではアップグレードを選択する)することで対処しました。ただ、これをしてしまうと、サービスパックやら、IEやらが古いバージョンに戻ってしまうので、そこからバージョンアップさせなければなりません。
以下は、その昔インストール方法をウェブで検索して見つけたものです。
某掲示板(どこだか忘れました)の「ねつ」さんによる投稿でした。
-----------------------------------------
SqlSv6.5 + Windows2000 投稿者:ねつ 投稿日:2004/04/15(Thu) 11:41 [返信]
1)
Windows2000にSQLServer6.5(SP5a)をインストールします。
(媒体は「SQLServer6.5(SP4)」と思います)
通常はエラーになりインストールできませんが、
Setup.Infを修正することでインストール可能です。
(「MSDTC」のチェックでエラーになるようです)
→具体的には「StopService $(!MSDTCService)」で検索して、
先頭から、1つめの「StopService $(!MSDTCService)」が
ある「ifstr(i) $(!STF_OS) == "NT"」から「endif」間の
「shell "" StopService〜」を全てコメントにする。
以下、
ifstr(i) $(!RegistryRebuild) != ""
ifstr(i) $(!STF_OS) == "NT"
; shell "" StopService $(!MSDTCService)
; shell "" StopService $(!SQLMonitorService)
; shell "" StopService $(!SQLSchedulerService)
; shell "" StopService $(!SQLOldSchedulerService)
; shell "" StopService $(!SQLOldServerService)
; shell "" StopService $(!SQLServerService)
; shell "" DoLicense
ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
goto setupnotdone
endif
shell "" DoNewInstall
ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
goto setupnotdone
else
read-syms InstalledTag$(!STF_LANGUAGE)
goto installdone
endif
endif
endif
次に検索でひっかかった「StopService $(!MSDTCService)」
が入っている「ifstr(i) $(!RegistryRebuild) == ""」から
「endif」間の「shell "" StopService〜」から直後の
「ifstr(i) $($R0) != "STATUS_SUCCESSFUL"」の「if文」3行
をコメントにする。
以下、
ifstr(i) $(!RegistryRebuild) == ""
; shell "" StopService $(!SQLMonitorService)
; ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
; goto end_new_inst
; endif
; shell "" StopService $(!MSDTCService)
; ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
; goto end_new_inst
; endif
; shell "" StopService $(!SQLSchedulerService)
; ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
; goto end_new_inst
; endif
; shell "" StopService $(!SQLOldSchedulerService)
; ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
; goto end_new_inst
; endif
; ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
; goto end_new_inst
; endif
; shell "" StopService $(!SQLOldServerService)
; ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
; goto end_new_inst
; endif
shell "" ReportProgress "12", $(!MSG_BOSTATUS_StartFiles)
shell "" InitFileVersionInfo
〜省略〜
→コメントは「;」を行頭に付与する。
2)
非常に速いドライブに SQL Server をインストールすると、
"SQL Server の初期設定をインストールしてます。" の画
面でセットアップ プログラムが応答しなくなることがあ
ります。
この問題を回避するためには SQL Server のインストール
ファイルをローカル ハード ディスクにコピーし、
Instmsdb.sql ファイルを編集します。
Instmsdb.sql スクリプトの一番頭に 「WAITFOR DELAY '0:00:01'」
ステートメントを追加します。
(「http://support.microsoft.com/default.aspx?scid=kb;ja;180649」)
1)、2)どちらでも
インストール完了後に、再度「SQLServer6.5SP5a」を適用してください。
-----------------------------------------
「ねつ」さんの投稿は以上です。
これを我が家で実行してみたところ、インストールはできるのですが、MSDTC関連がおかしくなります。
Windows 2000 Server では、通常「Distributed Transaction Cordinator」というサービスが稼働していますが、このサービスが消えてしまうんですね。
SQL Server 6.5 をインストールした後、Windows 2000 Server を上書きでインストール(インストール画面ではアップグレードを選択する)することで対処しました。ただ、これをしてしまうと、サービスパックやら、IEやらが古いバージョンに戻ってしまうので、そこからバージョンアップさせなければなりません。