- PR -

シングルユーザモードでいくつかのOSQLを実行した場合のエラーについて

1
投稿者投稿内容
未記入
会議室デビュー日: 2006/01/06
投稿数: 3
投稿日時: 2006-01-06 16:02
すがた@名古屋です。

SQLServer2000のデータベースに対して、テーブルのフィールドの追加などの更新を行うためのスクリプトを用意し、幾つかのOSQLをバッチでまとめて実行しいます。
その際にSQLServerのモードをシングルユーザに設定してからバッチを起動しています。

このとき、重い処理のOSQLが完了し、次のOSQLを実行しようとるすると、
「ログイン '○○(←データベース名)' で要求されたデータベースを開けません。ログインは失敗しました」といったメッセージを表示し、そのスクリプトが実行されないといった状況が発生することがあります。

シングルユーザの設定を解除すると、上記のような状況は発生しません。

発生するスクリプトは特定できません。前回ある場所で発生しても、次回は別の重いスクリプトの後で発生するなど、まちまちです。

バッチでOSQLを起動させていて、OSQLが完了して、次のOSQLを実行させてはいるはずなのですが、例えばOSQLとしては終了の信号をだしていても、ログオフは完全に終了しきれていないといった状況はあるのでしょうか。

原因がつかめきれず、根本的解決に至らなくて困っております。

使用しているSQLServerはSQLServer2000、サービスパックは3aです。

ご教示いただけると大変助かります。
よろしくお願い致します。
未記入
会議室デビュー日: 2006/01/06
投稿数: 3
投稿日時: 2006-01-11 09:45
再び すがた@名古屋 です。

今回の質問につきまして、SQLServerの遅延処理かなにかが影響しているのでしょうか?
OSQL.exeをバッチで処理をし、ログインが二重に発生するといったご経験はありますか?

処理OSのケース分けでいうと、Windows2000の方がWindowsXPよりも発生頻度が多いようです。
処理スペックはどちらも同じでPentium4 2.80GHz、メモリ512MBです。

わかりづらい質問をし、申し訳ありません。
質問のポイントが不明の場合はご指摘ください。
よろしくお願い致します。


Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2006-01-11 10:19
経験はないですがありえない話ではなさそうですね。

回避策としてすべてのSQLを1つのファイルで行ってはいかがでしょうか。

type *.sql > all.sql
osql -i all.sql

みたいな感じで。

もしくはunixのsleepコマンドのようなものを使って、ウェイトを入れてから次の処理を実行するなどするとかですかね。
未記入
会議室デビュー日: 2006/01/06
投稿数: 3
投稿日時: 2006-01-11 11:09
Anthyhimeさま。

ご返答ありがとうございました。
やはり、根本的な原因はよくわからないのでしょうか。

>回避策としてすべてのSQLを1つのファイルで行ってはいかがでしょうか。

まずは、こちらを試してみます。
今回質問させていただいた処理は、インストーラ製品内で行っています。
現在、インストーラから幾つかのバッチを起動していて、
そのバッチ内で更に幾つかのOSQL.exeを起動している際に発生していますので、
バッチ内では、ご教示いただいた記述でOSQL.exeを1回起動してみます。

また、念のため、バッチの起動の間にインストーラ処理上でDelay時間を設けるようにしてみます。

これで、シングルユーザモードで、問題が回避できると大変助かります。
ありがとうございました。

すがた。
1

スキルアップ/キャリアアップ(JOB@IT)