こんばんわ。
toritoriです。
実はわたくし、軽いパニック障害持ちなのですが
今日はやばかったです。
そりゃ発作も起きます。
予定外のMSDEこぼれ話その2。
本日、ユーザーさんへJP1配信を行なう日でした。
今回の処理はマスタを配信し、MSDEにデータをインポートする
臨時処理を行なっています
(インポートするバッチ処理は私が作成しました)
バッチの手順は
①ローカルのTMPフォルダに、マスタデータをコピー
②osqlでテーブルDELETE
③BULK INSERTで一括コピー
④エラーチェック
⑤ログ削除
という感じ。
本日の朝、出勤してパソコンを立ち上げると
配信開始!
のメッセージが表示されました。
「おっ、きたきた。OKをポチっと…」
正常にインストールは終了しましたが、
念のためデータがインストールされているかを
チェックしてみました。
…
…
…すると、配信したマスタデータがすべて0件に!
うわぁぁぁぁー
ありえねぇぇぇー
ちょ、ちょっと、こりゃやばいって。
数千人いるユーザーさん全てに影響が出たら一大事ですよ!
配信モジュールを手動でもう一度実行してみましたが
結果は同じ。
ログを取ってみると、
「BULK INSERT ステートメントを使用する権限がありません」
というエラーが…
今回「エラー」という単語を拾って
エラーログを出すようにしていたため
上記のメッセージだとエラーが拾えてないのか…?
あわわ…ど、どうしよ…(゜Д゜;≡;゜д゜)
失禁しそうなのをこらえつつ
状況をお客さんに説明し、
その方のPCでも確認してみました。
すると、問題なくインストールされています。
?
おかしいな…と思い、他のユーザーさんのPCで確認しましたが
全く問題ありませんでした。
??
調査していく内に、以下のことが判明しました。
・手動で配信モジュールをインストールすると権限で怒られる
・JP1からインストールすると問題ない?
ということは、配信を受けてインストールされているユーザーさんは
問題ないのかな?
しかし、自分のPCでは0件になっているというのがどうにも腑に落ちない…
よくわからないので、データを手で消してから
もう一度私のPCにJP1配信を行なってもらいました。
すると原因判明
このテーブル、同じ名前で別々のオーナーさんが所有しています。
1つは dbo ユーザー、
もう1つは DNSドメインユーザー。
何故だかわかりませんが、
JP1で実行したosqlは
ADMIN権限でログインしているようなので、
BULKADMIN権限も持っているし、
インストールされるオーナーは「dbo」になります。
手動で実行した場合のosqlは
DNSドメインユーザーなので
権限もないし、
インストールされるオーナーは「DNSドメインユーザー」になります。
つまり、こういうこと。
①配信前に自分のマシンでテスト
(エラーに気付かず「DNSドメインユーザー」のテーブルは0件に)
②配信を受ける(ただし、インストールされるオーナーは「dbo」)
③普段使用するテーブルは「DNSドメインユーザー」なので、0件のまま。
ということは
ユーザーさんは「DNSドメインユーザー」でテーブルを所有しているはずなので、
テーブル置き換わってないってこと?
…まあ、件数が0件になってるよりは全然マシなのでOKとしよう
(本当は駄目だけど)
ちなみにいいわけすると、
配信モジュールを作成したマシンではadmin権限を持っていたので、
そこでのインストールはうまくいっていたのですよ
(しかも、SQL Serverのユーザーも「dbo」なので余計気付きにくい)
DNSドメインユーザーでのテストをきちんとやらなかったのは反省点です…
あーもう、SQL Serverわからんよー
だれかタスケテ・゜・(つД`)・゜・
詳しい方、お友達になって下さい(涙)
<今回習得したスキル>
■固定サーバロール
サーバー全体にわたるロールのこと
■sp_helpsrvrole
固定サーバロールの一覧を表示
■sp_helpsrvrolemember
固定サーバロールのメンバに関する一覧を表示
■固定データベースロール
データベース全体にわたるロールのこと
■sp_helprole
■sp_helpdbfixedrole
固定データベースロールの一覧を表示
■sp_dbfixedrolepermission
固定データベースロールの特定の権限の一覧を表示
■BULK INSERTの実行権限
固定サーバロールsysadmin および bulkadmin のメンバーのみ。
toritoriです。
実はわたくし、軽いパニック障害持ちなのですが
今日はやばかったです。
そりゃ発作も起きます。
予定外のMSDEこぼれ話その2。
本日、ユーザーさんへJP1配信を行なう日でした。
今回の処理はマスタを配信し、MSDEにデータをインポートする
臨時処理を行なっています
(インポートするバッチ処理は私が作成しました)
バッチの手順は
①ローカルのTMPフォルダに、マスタデータをコピー
②osqlでテーブルDELETE
③BULK INSERTで一括コピー
④エラーチェック
⑤ログ削除
という感じ。
本日の朝、出勤してパソコンを立ち上げると
配信開始!
のメッセージが表示されました。
「おっ、きたきた。OKをポチっと…」
正常にインストールは終了しましたが、
念のためデータがインストールされているかを
チェックしてみました。
…
…
…すると、配信したマスタデータがすべて0件に!
うわぁぁぁぁー
ありえねぇぇぇー
ちょ、ちょっと、こりゃやばいって。
数千人いるユーザーさん全てに影響が出たら一大事ですよ!
配信モジュールを手動でもう一度実行してみましたが
結果は同じ。
ログを取ってみると、
「BULK INSERT ステートメントを使用する権限がありません」
というエラーが…
今回「エラー」という単語を拾って
エラーログを出すようにしていたため
上記のメッセージだとエラーが拾えてないのか…?
あわわ…ど、どうしよ…(゜Д゜;≡;゜д゜)
失禁しそうなのをこらえつつ
状況をお客さんに説明し、
その方のPCでも確認してみました。
すると、問題なくインストールされています。
?
おかしいな…と思い、他のユーザーさんのPCで確認しましたが
全く問題ありませんでした。
??
調査していく内に、以下のことが判明しました。
・手動で配信モジュールをインストールすると権限で怒られる
・JP1からインストールすると問題ない?
ということは、配信を受けてインストールされているユーザーさんは
問題ないのかな?
しかし、自分のPCでは0件になっているというのがどうにも腑に落ちない…
よくわからないので、データを手で消してから
もう一度私のPCにJP1配信を行なってもらいました。
すると原因判明
このテーブル、同じ名前で別々のオーナーさんが所有しています。
1つは dbo ユーザー、
もう1つは DNSドメインユーザー。
何故だかわかりませんが、
JP1で実行したosqlは
ADMIN権限でログインしているようなので、
BULKADMIN権限も持っているし、
インストールされるオーナーは「dbo」になります。
手動で実行した場合のosqlは
DNSドメインユーザーなので
権限もないし、
インストールされるオーナーは「DNSドメインユーザー」になります。
つまり、こういうこと。
①配信前に自分のマシンでテスト
(エラーに気付かず「DNSドメインユーザー」のテーブルは0件に)
②配信を受ける(ただし、インストールされるオーナーは「dbo」)
③普段使用するテーブルは「DNSドメインユーザー」なので、0件のまま。
ということは
ユーザーさんは「DNSドメインユーザー」でテーブルを所有しているはずなので、
テーブル置き換わってないってこと?
…まあ、件数が0件になってるよりは全然マシなのでOKとしよう
(本当は駄目だけど)
ちなみにいいわけすると、
配信モジュールを作成したマシンではadmin権限を持っていたので、
そこでのインストールはうまくいっていたのですよ
(しかも、SQL Serverのユーザーも「dbo」なので余計気付きにくい)
DNSドメインユーザーでのテストをきちんとやらなかったのは反省点です…
あーもう、SQL Serverわからんよー
だれかタスケテ・゜・(つД`)・゜・
詳しい方、お友達になって下さい(涙)
<今回習得したスキル>
■固定サーバロール
サーバー全体にわたるロールのこと
■sp_helpsrvrole
固定サーバロールの一覧を表示
■sp_helpsrvrolemember
固定サーバロールのメンバに関する一覧を表示
■固定データベースロール
データベース全体にわたるロールのこと
■sp_helprole
■sp_helpdbfixedrole
固定データベースロールの一覧を表示
■sp_dbfixedrolepermission
固定データベースロールの特定の権限の一覧を表示
■BULK INSERTの実行権限
固定サーバロールsysadmin および bulkadmin のメンバーのみ。
兄さんパニック障害持ってたんすか?そうは見えない落ち着いた感じしますが。やはり普段のテンションとの差があると精神的肉体的につらくなってそういう症状が出やすいのかもしれませんね。
俺は差が無いので出ません(笑)常にアドレナリンシュポシュポ!
それにしてもいろいろ触って凄いです。いい職場につけましたね!やめたいなんていったら贅沢ですぜ(^o^)
何買ったの?キングダムハーツ?
彼女がいないうちにやりまくってくらはいw
職場いろいろ触れるのはいいけど、
内容の問題ですよ。
MSDEは詳しい人が一人もいないので大変…
はっきり言って独学。