0

Solaris(11) 上で動作する Sybase ASE(15.0.7) データベースを管理しています。私は特に Sybase ASE にかなり慣れていませんが、SQL Server などのデータベースでの作業に関する全体的な知識はかなりあります。最近、プログラマー スクリプトのアップロードなどの作業を行っているときに、データの一部が失われるため、 ASE ISQLユーティリティでは使用せず、コマンド ライン ユーティリティ (isql) から直接使用するように言われました。スクリプトを DB に渡しているときに何かが失われる可能性があるのではないかとかなり混乱しました。かなり奇妙に聞こえると言って、これについて職場の人々と話し合ってみました。

私たちの誰も、真の Sybase の経験豊富な管理者ではありません。通常、彼らはこのケースについて議論の余地のある回答を私に与えることができませんでした。したがって、彼らは ASE isql はノーノーだと主張しているだけです。

それは本当に本当でしょうか?

4

1 に答える 1

-2

これは絶対に真実ではありません。Sybase コマンドライン ユーティリティ 'isql' は、Sybase の顧客によって非常に頻繁に使用されます。混乱は、他の多くのデータベースのクライアント ツールで一般的であるように、isql が「自動コミット」を実行しないという事実から生じると思います。その結果、明示的なトランザクション (BEGIN TRANSACTION) をデフォルトの非連鎖トランザクション モードで開始するか、連鎖トランザクション モードで実行し、'isql' を終了すると、トランザクションはコミットされないため、ASE サーバーはロールバックします。これは「データが失われている」と解釈されるかもしれませんが、実際にはそうではありません。そのため、ASE ではトランザクションを明示的に COMMIT する必要があります。そうしないと、最終的にロールバックされます。

(完全を期すために、デフォルトの非連鎖トランザクション モードでは、BEGIN TRANSACTION を使用しない場合、各 DML コマンドは準備ができたらすぐにコミットします。自動コミットと同じではありませんが、そのように呼ばれることもあります。)

于 2014-09-30T09:27:26.277 に答える