2011年11月29日火曜日

SQL Server2000でDTSのインポートのテーブル指定が面倒くさい

SQL Server2000 の SQL Server Enterprise Manager。DTSによるインポートという機能があり、別のデータベースからテーブルやビューをコピーすることができる。データベースのまるごとコピーなら、バックアップと復元を使う方法もあるが、ネットワーク経由だとバックアップファイルのコピーが必要になるためセキュリティ上許されないことがある。そこでポート1433を開放して、ネットワークごしにコピーするためのひとつの選択肢となる。

この機能、SQL Server2000で行おうとするとかなり使いにくい。
「データ変換サービス インポート/エクスポート ウィザード」を使い、「変換元データベースからテーブルとビューをコピー」というので行うと、テーブルとビューを選択するダイアログが表示される。
このダイアログが強烈に使いにくい。テーブル数が数百、数千とあるような大規模なシステムになると地獄を味わう。
テーブルとビューが一覧表示されるリストに、5行と半分ぐらいしかテーブルが表示されない。ダイアログのサイズは固定されていて、大きさを変えることもできない。ちょっとずつスクロールしながら1行ずつ設定していかなければならない。
「すべて選択」「すべて選択解除」というボタンがある。これをクリックするとすべての行のチェックボックスが変化する。あくまですべての行を一気に変えるものなので、部分的に変更したい場合は、ひとつひとつクリックしていく。ShiftキーやCtrlキーによる複数行選択も効かない。本当に一行、一行、設定していかなければならない。マウス操作ではチェックボックスの細かいクリックが辛いのでキーボードで行おうとすると、チェックのオン/オフはスペースキーでできるものの、次の行に移動しようと下矢印キーを押すと、2列目のセルがコンボボックスになっているので、コンボボックスの中身がスクロールしてしまう。
唯一の方法は、はじめにすべて選択にした後、チェックを解除したい行をクリックしてアクティブにし、スペースキーでその行のチェックを解除する、解除することにより2列目のコンボボックスが消える。それで下矢印キーで行移動が効くようになるので、次の行に移動できる。以降はスペースキーと下矢印キーを交互に連打する。選択しなければならない行よりも、選択しない行の方が多くても、マウスクリックでチェックするよりはキーボード連打の方が、幾分、速くて楽だ。
スペースキーと下矢印キー、2つのキーをがんばって連打しつづけて複数行の選択状態を変えることはできても数百行ともなると、かなり辛い。いや、辛かった。

各テーブルやビューには所有者がある。作成先はデフォルトで「dbo」になる。これまた一行ずつ、書き換えていかなければならない。
あらかじめクリップボードに所有者名をコピーしておいて、作成先のセルをクリックし、所有者名の位置までカーソル移動して、Ctrl+Vで貼り付け。次の行をクリックしては、カーソル移動して貼り付け。これを何百行と行わなければならない。いや、行った。

セルを編集状態から抜けようとしたり、なにかの拍子に、間違ってESCキーを押したりすれば、瞬時にダイアログが閉じて、行った編集が全部パーになる。いや、なった。
なったら、またひとつひとつやりなおしだ。涙が出る。

何時間もかけて、「次へ」ボタンを押す段階まで到達できたなら、次の画面でDTSパッケージとして保存しておくことができる。保存しなかったら、せっかく設定した内容は一回限りで終わるので注意したい。
保存したパッケージは、後から編集しなおすことができない。一度作ったら最後、先ほどの画面のテーブルとビューの選択を編集しなおすことはできない。一箇所でも間違っていれば、はじめからやりなおしとなる。

作ったDTSパッケージをちゃんと作って保存できたなら、「データ変換サービス」に登録されているので、そこから実行できる。実行にはかなり時間がかかる。

それで、苦労して作ったDTSパッケージを実行してみると、エラーの嵐・・・
もうエラーの内容を検証する気にもならず、あきらめて他の代替案で行った。代替案があったからいいけど。

これに限らず、SQL Server Enterprise Managerは、何をやっても反応が遅いし、どうにも使いにくい。

0 件のコメント: