久しぶりに本題のSQLServer です。
今まで知りませんでした。
MERGE文が使えるんですね。
SQL と言えば、言わずもがな「Select」「Insert」「Update」「Delete」の4文が基本です。
例えば、Table_A と、ほぼ同じ構造を持った Table_B があって、
必ずTable_Aが最新になっているとします。
最新になっているというのは、
1、レコードが増えている。
2、レコードが減っている。
3、レコードが更新されている。
とうことが考えられます。
この状態をTable_Bに反映させる。
例えば、夜間バッチでTable_Bを最新状態にする必要がある場合が想定されます。
今までなら、
Table_Bに不足しているレコードを特定して、Insert文を発行。
Table_Aには無いレコードを特定して、Delete文を発行。
Table_AにもTable_Bにもあるが、更新されているレコードに対して、Update文を発行。
と3回の比較処理を走らせる必要があるので、
大量のレコードの場合に、莫大なコストが必要になることがありました。
これを1回の比較で処理してしまうのが、Merge です。
まあ、言葉の意味のままのステートメントです。
私の場合、ORACLEにあるテーブルをそのままSQLServerに毎日夜間バッチでコピーしたいのですが、総レコード数は40万件以上あるのに、更新または追加されるのは、わずか1000件程度。
その1000件を最新に保つために、 Truncate で全消し、Insert で全書きをしていましたが、あまりにも非効率なのと、ディスクにも負担をかけると思います。
そこで考えたのが、リンクサーバーでORACLEに接続して、OpenQuery を発行します。
その際、更新年月日を参照して、前回処理日以降だけに絞る Where句を付けておきます。
OpenQuery なので、条件が入っても、ORACLE側で高速に処理されて返ってきます。
これで1000件程度のレコードが返ってくる。
これを一旦 Select Into ##tempTable で仮テーブルに保管して、SQLServer 側の本来保管したいテーブルと比較して、 MERGE 処理を行うことにしました。
毎日数分かかっていた処理が、数秒で完了するようになりました。
MERGE の構文自体は、他の方がたくさん例を挙げていただいているので、私は省略です。
でも、1行で書けるといっても、結構手間の必要な構文になります。
比較は1回ですが、マッチした場合の動作(通常は UpDate になるかな。)と、アンマッチの場合の動作を(私の場合は、Insert ですが、 場合によっては、 Delete になる。)それぞれ書かないとダメです。
まあ、当たり前と言えば当たり前ですけどね。
特に、 UpDate の場合は、カラムを全部書かないと(しかも、元と先の両方を書かないと)ダメなので、カラム数の多いテーブルだと、長ーい構文になっちゃいます。
2017年1月28日土曜日
UQモバイルで SIMロック解除が必要
auからUQモバイルに乗り換えを考える場合、SIMロック解除が必要なのかどうかがよく理解できていませんでしたが、身をもって確認できました。
確認したのはXperia 限定のことです。
2016年11月ごろに中古市場で au仕様のXperia Z1 (SOL23) を購入しました。新品未使用状態です。
すぐに UQモバイルに申し込み、数日でSIMが到着。
本体にSIMをセットしてAPNを設定したらすぐに使えました。
「なーんや、SIMロック解除って必要ないやん。」
これは、au仕様の端末でUQモバイルのSIMだから解除が必要ないんだと解釈しました。
これに気をよくして、今度は2016年末に同じくau仕様の Xperia Z4(SOV31) を、これまた中古市場で、新品未使用品を購入しました。
お値段は33000円ぐらいだったと思います。
これも早速 UQモバイルの SIM を挿しましたが、今度は通信できません。
なんで?同じ au仕様で UQモバイルやから問題ないはず。
とおもったのですが、大きな勘違いでした。
au仕様の端末で UQモバイルのSIMを使う場合で、ロック解除が不要のまま使えるのは、Z1が最後の機種のようです。
Z1以降に発売された端末は SIMロック解除が必要だそうです。
20170627訂正
Z3もロック解除必要なしが確認できました。
因みに、Z2 Tablet もロック解除必要なしが確認できました。
なんか、総務省かなんかが SIMロック解除を命令したようですが、逆に邪魔臭くなってるような気がする。
おかげで、(私は)年末に買ったのに、最初の所有者が購入した後、6ヶ月間は解除できないので、私の場合、2月初旬まで解除できません。
今のところ、UQの契約はしたままなので、月額1000円を捨てているような状態。(通信していないので、月3Gの容量をどんどん持ち越していて、2月に使えるようになったら、9Gぐらいからスタートすることになります。)
20170627訂正
UQMobileの持ち越しは1ケ月分だけでした。
なので、MAXでも6Gにしかなりません。
Z4自体は前に使っていたスマホ(Xperia UL SOL22)をUQモバイルで契約して、それにBluetoothでWIFI接続して使っています。
2月になればすぐにロック解除するつもりですが、これまた、auのサイトを読んでいると、契約者でないとネット解除できないような感じ。
ということは、auショップに持ち込んで3000円払って解除してもらわないとだめなのか~。
確認したのはXperia 限定のことです。
2016年11月ごろに中古市場で au仕様のXperia Z1 (SOL23) を購入しました。新品未使用状態です。
すぐに UQモバイルに申し込み、数日でSIMが到着。
本体にSIMをセットしてAPNを設定したらすぐに使えました。
「なーんや、SIMロック解除って必要ないやん。」
これは、au仕様の端末でUQモバイルのSIMだから解除が必要ないんだと解釈しました。
これに気をよくして、今度は2016年末に同じくau仕様の Xperia Z4(SOV31) を、これまた中古市場で、新品未使用品を購入しました。
お値段は33000円ぐらいだったと思います。
これも早速 UQモバイルの SIM を挿しましたが、今度は通信できません。
なんで?同じ au仕様で UQモバイルやから問題ないはず。
とおもったのですが、大きな勘違いでした。
au仕様の端末で UQモバイルのSIMを使う場合で、ロック解除が不要のまま使えるのは、
20170627訂正
Z3もロック解除必要なしが確認できました。
因みに、Z2 Tablet もロック解除必要なしが確認できました。
なんか、総務省かなんかが SIMロック解除を命令したようですが、逆に邪魔臭くなってるような気がする。
おかげで、(私は)年末に買ったのに、最初の所有者が購入した後、6ヶ月間は解除できないので、私の場合、2月初旬まで解除できません。
今のところ、UQの契約はしたままなので、月額1000円を捨てているような状態。(通信していないので、月3Gの容量をどんどん持ち越していて、2月に使えるようになったら、
20170627訂正
UQMobileの持ち越しは1ケ月分だけでした。
なので、MAXでも6Gにしかなりません。
Z4自体は前に使っていたスマホ(Xperia UL SOL22)をUQモバイルで契約して、それにBluetoothでWIFI接続して使っています。
2月になればすぐにロック解除するつもりですが、これまた、auのサイトを読んでいると、契約者でないとネット解除できないような感じ。
ということは、auショップに持ち込んで3000円払って解除してもらわないとだめなのか~。
2016年12月24日土曜日
KODI のビデオ字幕設定
KODI 活躍してます。
Raspberry PI3 にも、Windows のノートパソコンにも、Android スマホにも入れています。
ところが、先日スマホを新しくしたので、同様にKODIをインストールして、ビデオの字幕設定を OpenSubTitles.comに設定したら、「IDとパスワードを入れないと見せないよ。」というようなメッセージがでて、字幕の自動表示ができません。
Raspberry PI とかも同じ OpenSubTitlesにしているのに、そんなメッセージはでません。もちろん、OpenSubTitlesには登録していないので、IDもパスワードも持っていません。
色々彷徨ったら、KODIのAdd-On設定で、Install From Repository から入って、OpenSubTitless を選択するとこうなるようです。
代わりに、 Install From ZIP file を選択して、OpenSubTitles を選んでインストールすれば、今まで通り、字幕が自動的に表示されるようになりました。
まずは、以下のサイトからZIPファイルをダウンロードして、任意のフォルダに保管しておいて、Install From ZIP file からそのZIPファイルを指定すればインストールできます。
http://www.opensubtitles.org/addons/kodi/service.subtitles.opensubtitles_by_opensubtitles.zip
ID パスワード無しでの字幕表示なので、広告が出るのは仕方ないですね。
Raspberry PI3 にも、Windows のノートパソコンにも、Android スマホにも入れています。
ところが、先日スマホを新しくしたので、同様にKODIをインストールして、ビデオの字幕設定を OpenSubTitles.comに設定したら、「IDとパスワードを入れないと見せないよ。」というようなメッセージがでて、字幕の自動表示ができません。
Raspberry PI とかも同じ OpenSubTitlesにしているのに、そんなメッセージはでません。もちろん、OpenSubTitlesには登録していないので、IDもパスワードも持っていません。
色々彷徨ったら、KODIのAdd-On設定で、Install From Repository から入って、OpenSubTitless を選択するとこうなるようです。
代わりに、 Install From ZIP file を選択して、OpenSubTitles を選んでインストールすれば、今まで通り、字幕が自動的に表示されるようになりました。
まずは、以下のサイトからZIPファイルをダウンロードして、任意のフォルダに保管しておいて、Install From ZIP file からそのZIPファイルを指定すればインストールできます。
http://www.opensubtitles.org/addons/kodi/service.subtitles.opensubtitles_by_opensubtitles.zip
ID パスワード無しでの字幕表示なので、広告が出るのは仕方ないですね。
UQモバイルで3台目の契約ができない
先日、UQモバイルを契約するのに、エントリーパッケージを入手することで、事務手数料を安く契約することができると書きましたが、大失敗です。
というのも、私は、自分で使っている古いスマホをUQにしてから、つい先日、子供に使わせているiPhoneもUQに乗り換えました。
これでUQの契約が2台分となっています。
今回購入した Xperia Z4 をUQで契約しようとして、エントリーパッケージを購入して、いざネットで契約手続きをしたら、なんと!「総合的に判断した結果、今回の契約はキャンセルさせていただきます。」という内容の返事が返ってきた!
クレジットカードの契約じゃないんだから審査とか関係ないでしょ!と思って、UQに電話したら、「3台目以降は、最後の契約から90日を経過しないとご契約できません。」やって。
そんなんどこに書いてあるねん!
仕方ないので、嫁さんの名義で契約しました。
因みに、最大契約数は5台だそうで、同一名義では6台以上の契約はできないそうです。
というのも、私は、自分で使っている古いスマホをUQにしてから、つい先日、子供に使わせているiPhoneもUQに乗り換えました。
これでUQの契約が2台分となっています。
今回購入した Xperia Z4 をUQで契約しようとして、エントリーパッケージを購入して、いざネットで契約手続きをしたら、なんと!「総合的に判断した結果、今回の契約はキャンセルさせていただきます。」という内容の返事が返ってきた!
クレジットカードの契約じゃないんだから審査とか関係ないでしょ!と思って、UQに電話したら、「3台目以降は、最後の契約から90日を経過しないとご契約できません。」やって。
そんなんどこに書いてあるねん!
仕方ないので、嫁さんの名義で契約しました。
因みに、最大契約数は5台だそうで、同一名義では6台以上の契約はできないそうです。
2016年12月17日土曜日
UQモバイルの新規申し込み
スマホ2台持ちで、格安SIMは一度Mineoにしましたが、どうも速度が出ないので、同じAU系のUQモバイルに変更しました。
すでに、自分のXperia UL (SOL22)と子供のiPhone 6 の2台分契約しています。
どちらも高速データ通信のみで、月額980円(税別)です。
iPhone 6 を契約する際には、iPhone 6 が対応しているかどうか不安があったので、一旦 TRY UQモバイルでお試しSIM を借りました。
案の定、返してからはTRYからじゃんじゃん勧誘の電話がかかってきて、仕方なく電話で本契約をしました。
今回、自分用のXperia がちょっと調子が悪くなってきたので、新調することにしました。
端末は Xperia Z3 以降の機種でいろいろ探したところ、楽天で Xperia Z4 の白ロム(新品未使用)が33,000円で見つかったので、それを購入。
今使っている Xperia UL も移行作業などで UQ の回線を使うと思い、新端末用にUQ を新規契約することにしました。
他のネットショッピングで徘徊していたところ、偶然、ジョーシンWEBで UQモバイルの「エントリーパッケージ」なるものを発見。
本来、UQの新規申し込みは、3,000円の事務手数料が必要になりますが、このエントリーパッケージを買えば、事務手数料が無料になります。
ジョーシンWEBでのエントリーパッケージは1,200円で購入できますので、1,800円ほどお得になります。
もうほとんど購入ボタン押しかけていたんですが、別途送料が必要になることが分かり、他の何かと一緒に買おうと思い、一旦保留に。
そこで、はたと思いつき、ジョーシンで売ってるのなら、楽天やAmazon にもあるのでは?
検索したところ、見つかりましたよ~。
楽天で、なんと800円!しかも送料無料!
株式会社ジェイネット 88モバイル
http://www.rakuten.ne.jp/gold/hachihachimobile/wimax/wimax.html
これで、2,200円の節約になりました。
20170627追加情報
Amazonで、データ通信専用なら500円で入手できました。
BIGLOBE UQ mobile データSIM専用エントリーパッケージ au対応SIM(ナノ/マイクロ/標準SIM/VoLTE) VEK55JYV
すでに、自分のXperia UL (SOL22)と子供のiPhone 6 の2台分契約しています。
どちらも高速データ通信のみで、月額980円(税別)です。
iPhone 6 を契約する際には、iPhone 6 が対応しているかどうか不安があったので、一旦 TRY UQモバイルでお試しSIM を借りました。
案の定、返してからはTRYからじゃんじゃん勧誘の電話がかかってきて、仕方なく電話で本契約をしました。
今回、自分用のXperia がちょっと調子が悪くなってきたので、新調することにしました。
端末は Xperia Z3 以降の機種でいろいろ探したところ、楽天で Xperia Z4 の白ロム(新品未使用)が33,000円で見つかったので、それを購入。
今使っている Xperia UL も移行作業などで UQ の回線を使うと思い、新端末用にUQ を新規契約することにしました。
他のネットショッピングで徘徊していたところ、偶然、ジョーシンWEBで UQモバイルの「エントリーパッケージ」なるものを発見。
本来、UQの新規申し込みは、3,000円の事務手数料が必要になりますが、このエントリーパッケージを買えば、事務手数料が無料になります。
ジョーシンWEBでのエントリーパッケージは1,200円で購入できますので、1,800円ほどお得になります。
もうほとんど購入ボタン押しかけていたんですが、別途送料が必要になることが分かり、他の何かと一緒に買おうと思い、一旦保留に。
そこで、はたと思いつき、ジョーシンで売ってるのなら、楽天やAmazon にもあるのでは?
検索したところ、見つかりましたよ~。
楽天で、なんと800円!しかも送料無料!
株式会社ジェイネット 88モバイル
http://www.rakuten.ne.jp/gold/hachihachimobile/wimax/wimax.html
これで、2,200円の節約になりました。
20170627追加情報
Amazonで、データ通信専用なら500円で入手できました。
BIGLOBE UQ mobile データSIM専用エントリーパッケージ au対応SIM(ナノ/マイクロ/標準SIM/VoLTE) VEK55JYV
2016年11月20日日曜日
Raspberry Pi3 で KODI と Exodus
Raspberry Pi3 を導入してから、Scratch や Python で遊んでますが、実用的な使い方として、 KODI があります。
これをインストールしておけば、家庭内のファイルサーバーに溜めた 音楽ファイルや ISO化したDVD等を簡単に再生できるメディアプレイヤーとなります。
しかも、 KODI にはアドオン機能でいろいろ便利なことがあります。
中でも、 EXODUS はかなり便利だと思うのですが、なかなか日本語の解説が見つからなくて、アドオンをインストールすることすらできませんでした。
それでも、英語のページを Googleの自動翻訳等で日本語化してもらって、なんとかインストールできました。
とりあえずは、 KODI のメインメニューの「システム」から「ファイルマネージャー」を選択。
「ソースを追加」を選択すると、「メディアのパスを参照するか入力してください。」というメッセージの下に「<無し>」というボックスがあるので、そのボックス自体を選択すると、URLが入力できる。
http://fusion.tvaddons.ag
後は、その下の「メディアサーバーの名前を入れてください。」という欄に好きな名前を付けて(そのまんま「Exodus」とか)、「追加」ボタンを押せば登録完了です。
再度、設定画面の「アドオン」の中の、 Install from repository に入れば、 Exodus repository ができていると思うので、「ビデオアドオン」を選択して、「インストール」を選択。
あとは進んでいくだけ。
こんなところから設定できるとは KODI も奥が深い。
これをインストールしておけば、家庭内のファイルサーバーに溜めた 音楽ファイルや ISO化したDVD等を簡単に再生できるメディアプレイヤーとなります。
しかも、 KODI にはアドオン機能でいろいろ便利なことがあります。
中でも、 EXODUS はかなり便利だと思うのですが、なかなか日本語の解説が見つからなくて、アドオンをインストールすることすらできませんでした。
それでも、英語のページを Googleの自動翻訳等で日本語化してもらって、なんとかインストールできました。
とりあえずは、 KODI のメインメニューの「システム」から「ファイルマネージャー」を選択。
「ソースを追加」を選択すると、「メディアのパスを参照するか入力してください。」というメッセージの下に「<無し>」というボックスがあるので、そのボックス自体を選択すると、URLが入力できる。
http://fusion.tvaddons.ag
後は、その下の「メディアサーバーの名前を入れてください。」という欄に好きな名前を付けて(そのまんま「Exodus」とか)、「追加」ボタンを押せば登録完了です。
再度、設定画面の「アドオン」の中の、 Install from repository に入れば、 Exodus repository ができていると思うので、「ビデオアドオン」を選択して、「インストール」を選択。
あとは進んでいくだけ。
こんなところから設定できるとは KODI も奥が深い。
2016年11月12日土曜日
UPS のスケジュールシャットダウン
UPSのスケジュールシャットダウン機能を使っています。
うちのサーバーは社内業務専用なので、24時間稼働させる必要はありませんから、節電と、ディスクの保護(温存?)を考えて、夜間はシャットダウンして、早朝に自動起動するように設定しています。
このスケジュールはUPSに依存しています。
UPSは本来、商用電源に障害が発生した際に、一時的にUPS本体のバッテリーを利用してサーバー等に電源を供給しつづけて、障害の時間がある一定の時間を超えた場合には、サーバー等に対して、シャットダウンコマンドを送って、安全にシャットダウンさせることが任務です。
さらに、うちのように、スケジューリングを行って、サーバーのシャットダウンとブートを自動的に行うこともできるのが一般的だと思います。
うちのスケジュールは、深夜1時00分にシャットダウンし、6時間後の朝7時00分にブートするようにしています。
サーバーには起動後、別途タスクスケジューラーを使って、毎朝7時15分から特定の処理を実行するようにしています。
ところが、先日、会社の電源機器点検のために、計画停電がありました。
これは、予定上は日曜日の午前8時45分から正午まで全館停電となります。
(今回は実際には、午前8時45分から12時15分ぐらいまでの停電でした。)
そこで、計画停電の前日に、シャットダウンスケジュールを変更して、日曜日の午前1時00分にシャットダウン後、30時間後の月曜日7時00分にブートするように変更しました。
(すなわち、ブートを1回飛ばした感じの設定です。)
月曜日に出勤してみると、サーバーは機嫌よく起動していました。
「よしよし」と思いながら、念のためにイベントビューアを見てみると、「うん?なんか変」
月曜日の朝に起動しているはずなので、月曜日になった瞬間の0時00分とかは起動していないので、イベントなんか何も記録されるはずがないのに、色んなイベントが走っています。
「あれれれ?」となって、イベントをさかのぼってみたら、停電解除(すなわち計画停電後の通電開始)と同時に起動しています。
同じ条件で運用したUPSが5台あるんですが、この現象が発生したのが、H社製の1台だけ。
他の4台は、全てA社製(OEMを含む)で、全てスケジュール通りに起動しています。
このH社製のUPSはどこかのOEMなんだそうですが、クソで、今までから様々な問題というか、思った通りに動いてくれなくて、もう何度窓から投げ捨てようと思ったことか!
で、今回こそもう許せないということで、H社に猛抗議!
H社からの正式回答は、「今のことろ対応策はありません。」というものでした。
そこで、販社に、「即刻他社製のものと入れ替えてくれ!」と伝えたところ、なんとその販社から、
「念のために、A社に照会したところ、『同様の現象はA社でも保証の範囲ではありません。今回はたまたま設定どおりに起動しただけで、次回はどうなるかわかりません。』というものでした。」という答えが返ってきました。
そんなことってあり得る?
うちのサーバーは社内業務専用なので、24時間稼働させる必要はありませんから、節電と、ディスクの保護(温存?)を考えて、夜間はシャットダウンして、早朝に自動起動するように設定しています。
このスケジュールはUPSに依存しています。
UPSは本来、商用電源に障害が発生した際に、一時的にUPS本体のバッテリーを利用してサーバー等に電源を供給しつづけて、障害の時間がある一定の時間を超えた場合には、サーバー等に対して、シャットダウンコマンドを送って、安全にシャットダウンさせることが任務です。
さらに、うちのように、スケジューリングを行って、サーバーのシャットダウンとブートを自動的に行うこともできるのが一般的だと思います。
うちのスケジュールは、深夜1時00分にシャットダウンし、6時間後の朝7時00分にブートするようにしています。
サーバーには起動後、別途タスクスケジューラーを使って、毎朝7時15分から特定の処理を実行するようにしています。
ところが、先日、会社の電源機器点検のために、計画停電がありました。
これは、予定上は日曜日の午前8時45分から正午まで全館停電となります。
(今回は実際には、午前8時45分から12時15分ぐらいまでの停電でした。)
そこで、計画停電の前日に、シャットダウンスケジュールを変更して、日曜日の午前1時00分にシャットダウン後、30時間後の月曜日7時00分にブートするように変更しました。
(すなわち、ブートを1回飛ばした感じの設定です。)
月曜日に出勤してみると、サーバーは機嫌よく起動していました。
「よしよし」と思いながら、念のためにイベントビューアを見てみると、「うん?なんか変」
月曜日の朝に起動しているはずなので、月曜日になった瞬間の0時00分とかは起動していないので、イベントなんか何も記録されるはずがないのに、色んなイベントが走っています。
「あれれれ?」となって、イベントをさかのぼってみたら、停電解除(すなわち計画停電後の通電開始)と同時に起動しています。
同じ条件で運用したUPSが5台あるんですが、この現象が発生したのが、H社製の1台だけ。
他の4台は、全てA社製(OEMを含む)で、全てスケジュール通りに起動しています。
このH社製のUPSはどこかのOEMなんだそうですが、クソで、今までから様々な問題というか、思った通りに動いてくれなくて、もう何度窓から投げ捨てようと思ったことか!
で、今回こそもう許せないということで、H社に猛抗議!
H社からの正式回答は、「今のことろ対応策はありません。」というものでした。
そこで、販社に、「即刻他社製のものと入れ替えてくれ!」と伝えたところ、なんとその販社から、
「念のために、A社に照会したところ、『同様の現象はA社でも保証の範囲ではありません。今回はたまたま設定どおりに起動しただけで、次回はどうなるかわかりません。』というものでした。」という答えが返ってきました。
そんなことってあり得る?
登録:
投稿 (Atom)