ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

Re: MS-SQL2005、テーブル変換

このトピックの投稿一覧へ

通常 Re: MS-SQL2005、テーブル変換

msg# 1.1.1.1.1.1
depth:
5
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2007-5-23 17:13 | 最終変更
atushi  半人前 居住地: 長野県  投稿数: 30
nkmt様、こんにちは

>やってみましたが、結果は変わりませんでした。
>DBDELでテーブルをdrop出来ないのも変化ありませんでした。

DBDELでテーブルを削除したい場合は、以下の点を
確認してみて下さい。

・バッチプログラムを作成して、[トランザクション開始]を
 [N=なし]にして[DBDEL]を実行してみて下さい。

・他の端末で、トランザクションが開始されている場合は、
 他の端末のMAGICを閉じてからやってみて下さい。

・MS-SQL上の定義と合っていないときは、テーブル辞書にて
 定義を手動で合わせてから[CTRL+G]でオープンできるのを
 確認後に、テーブル辞書上で[F3]にてテーブル削除できませんか?

・<さらに追記>
 テーブル辞書のデータベースを別のもの(Pervasive等)に
 変更するだけでも、変更前のデータベースのテーブル及び
 レコードは削除されます。
 レコードは、変更先のデータベースに移動します。 
 これでもMS-SQLのテーブル削除できませんでしょうか?

・<追記しました>
 もしかしたら、なんらかのデータベースエラーが起きて、
 削除前の状態にロールバックしているのかもしれません。
 例えば、キーが重複するだけでもロールバックします。
 必ず重複不可のキーを1つは設定して下さい。

 また親タスク等で事前にそのテーブルがオープンされている
 と削除できないので、チェックしてみて下さい。

・<さらに追記>
 トランザクション内で、CREATE TABLEやDROP TABLEなどの
 DDL命令を実行すると、自動的にコミット(暗黙のコミット)
 されて、トランザクションが終了してしまうため、基本的に
 トランザクション内でDDL命令は、実行しないで下さい。

 またトランザクション内のMAGICのループで、複数回DDL命令を
 やってしまうと、データベースエラーで落ちる原因になります。
 DDL命令にて自動コミットが正常に終了した所は、当然
 ロールバックされません。

 SQL系PGで実際にワークテーブルを使用する場合は、
 テーブルを残してレコードのみ削除します。
 具体的には、処理開始前にトランザクションなしで
 [TRANCATE TABLE テーブル名]を埋め込みSQLにて
 バッチ実行します。
 注意点として、TRANCATE TABLEは、[DDL命令]ですので、
 トランザクション内で使用しないようにします。
 トランザクション内で実行する場合は、[DML命令]を使用します。
投票数:0 平均点:0.00

投稿ツリー

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約