Re: MS-SQL2005、テーブル変換
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命令]を使用します。
>やってみましたが、結果は変わりませんでした。
>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
投稿ツリー
-
MS-SQL2005、テーブル変換
(nkmt, 2007-5-23 13:35)
-
Re: MS-SQL2005、テーブル変換
(atushi, 2007-5-23 14:08)
-
Re: MS-SQL2005、テーブル変換
(nkmt, 2007-5-23 14:23)
-
Re: MS-SQL2005、テーブル変換
(atushi, 2007-5-23 15:49)
-
Re: MS-SQL2005、テーブル変換
(nkmt, 2007-5-23 16:34)
-
Re: MS-SQL2005、テーブル変換
(atushi, 2007-5-23 17:13)
-
Re: MS-SQL2005、テーブル変換
(atushi, 2007-5-24 9:00)
- Re: MS-SQL2005、テーブル変換 (nkmt, 2007-5-25 9:21)
-
Re: MS-SQL2005、テーブル変換
(atushi, 2007-5-24 9:00)
-
Re: MS-SQL2005、テーブル変換
(atushi, 2007-5-23 17:13)
-
Re: MS-SQL2005、テーブル変換
(nkmt, 2007-5-23 16:34)
-
Re: MS-SQL2005、テーブル変換
(atushi, 2007-5-23 15:49)
-
Re: MS-SQL2005、テーブル変換
(nkmt, 2007-5-23 14:23)
-
Re: MS-SQL2005、テーブル変換
(atushi, 2007-5-23 14:08)