MS-SQL2005、テーブル変換
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
こんにちは。
今までPervasiveばかりやってきました。
MS-SQLについて、どなたか教えて下さい。
環境は、MAGIC 9.4J SP6b、MS-SQL2005です。
ゲートウェイは、MGms7.dllです。(更新日=2006/10/27)
MS-SQLでテーブルを作成し、データを登録しました。
そして、そのテーブルに1項目追加したり、文字型の桁数を増やしたりしても、その後「変更しますか?、バックアップしますか?、インデックスをスキャンしますか?」といったメッセージが出てきません。
私は途中から作業に加わったのですが、他の者のPCで作業しても同様です。
Pervasiveなら当たり前に出てきたメッセージなのですが。
よろしくお願いします。
今までPervasiveばかりやってきました。
MS-SQLについて、どなたか教えて下さい。
環境は、MAGIC 9.4J SP6b、MS-SQL2005です。
ゲートウェイは、MGms7.dllです。(更新日=2006/10/27)
MS-SQLでテーブルを作成し、データを登録しました。
そして、そのテーブルに1項目追加したり、文字型の桁数を増やしたりしても、その後「変更しますか?、バックアップしますか?、インデックスをスキャンしますか?」といったメッセージが出てきません。
私は途中から作業に加わったのですが、他の者のPCで作業しても同様です。
Pervasiveなら当たり前に出てきたメッセージなのですが。
よろしくお願いします。
投票数:1
平均点:10.00
atushi
居住地: 長野県
投稿数: 30
![半人前 半人前](../../uploads/rank3dbf8e94a6f72.gif)
nkmt様、こんにちは
・[設定][データベース]で使用している[DBMS][MSSQL]の特性で、
[オプション]タブの[開発モードでのテーブル変換]の
チェックが入っていないと、テーブル辞書からの変更時
にメッセージが出てきませんので、確認してみて下さい。
・ゲートウェイは、SP6bをインストールすれば、最新が入るので
[MAGIC.INI]の[Gateways\mgms7.dll]などの参照先が間違って
いなければ、特に問題はないかと思います。
・[設定][データベース]で使用している[DBMS][MSSQL]の特性で、
[オプション]タブの[開発モードでのテーブル変換]の
チェックが入っていないと、テーブル辞書からの変更時
にメッセージが出てきませんので、確認してみて下さい。
・ゲートウェイは、SP6bをインストールすれば、最新が入るので
[MAGIC.INI]の[Gateways\mgms7.dll]などの参照先が間違って
いなければ、特に問題はないかと思います。
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
atushiさん、こんにちは。レス有難うございます。
引用:
チェックは付いていました。
試しにチェックを外して、テーブルの項目の属性変更をやると、
開発モードでのテーブル変換にチェックが付いていませんので
データの変換は行いません、といったメッセージが表示されました。
引用:
[MAGIC_GATEWAYS]
;MGCOMM01=mgwsock.dll
MGDB00=Gateways\mgpv2k.dll
;MGDB03=mdcisam.dll
途中省略
MGDB20=Gateways\mgms7.dll
このような感じで書いてあり、dllファイルも
MAGICの作業フォルダに存在しております。
引用:
atushiさんは書きました:
・[設定][データベース]で使用している[DBMS][MSSQL]の特性で、
[オプション]タブの[開発モードでのテーブル変換]の
チェックが入っていないと、テーブル辞書からの変更時
にメッセージが出てきませんので、確認してみて下さい。
チェックは付いていました。
試しにチェックを外して、テーブルの項目の属性変更をやると、
開発モードでのテーブル変換にチェックが付いていませんので
データの変換は行いません、といったメッセージが表示されました。
引用:
atushiさんは書きました:
・ゲートウェイは、SP6bをインストールすれば、最新が入るので
[MAGIC.INI]の[Gateways\mgms7.dll]などの参照先が間違って
いなければ、特に問題はないかと思います。
[MAGIC_GATEWAYS]
;MGCOMM01=mgwsock.dll
MGDB00=Gateways\mgpv2k.dll
;MGDB03=mdcisam.dll
途中省略
MGDB20=Gateways\mgms7.dll
このような感じで書いてあり、dllファイルも
MAGICの作業フォルダに存在しております。
投票数:1
平均点:10.00
atushi
居住地: 長野県
投稿数: 30
![半人前 半人前](../../uploads/rank3dbf8e94a6f72.gif)
nkmt様、こんにちは
>チェックは付いていました。
>試しにチェックを外して、テーブルの項目の属性変更をやると、
>開発モードでのテーブル変換にチェックが付いていませんので
>データの変換は行いません、といったメッセージが表示されました。
-----------------------------------------------------------
失礼しました。ステータス行にメッセージが表示されていました。
-----------------------------------------------------------
確かに不思議な現象です。
問題の切り分けで、現象が出ている環境と範囲を限定したいので
教えて下さい。
・OSは?(WIN VISTA/XP/2000/NT4.0/ME/98/95等)
・MAGICからMS-SQLのテーブルを定義取得してからテーブル変更
しても[テーブル変更メッセージ]は出ないでしょうか?
(MS-SQL上のテーブル定義とMAGIC定義がもし違っていると
MAGIC内部的で矛盾を起こしています。)
・MAGICのテーブル辞書で、[CTRL+G]で開いたときに
[テーブル変更メッセージ]が出ないでしょうか?
またテーブルはオープンできますか?
・MAGICのテーブル辞書で、テーブルを新規で作成してから、
MAGICからテーブル辞書で変更しても出てこないでしょうか?
・MCFを新しく作成して、テーブル辞書でやっても同じですか?
・テーブルは、ビューでしょうか?
>チェックは付いていました。
>試しにチェックを外して、テーブルの項目の属性変更をやると、
>開発モードでのテーブル変換にチェックが付いていませんので
>データの変換は行いません、といったメッセージが表示されました。
-----------------------------------------------------------
失礼しました。ステータス行にメッセージが表示されていました。
-----------------------------------------------------------
確かに不思議な現象です。
問題の切り分けで、現象が出ている環境と範囲を限定したいので
教えて下さい。
・OSは?(WIN VISTA/XP/2000/NT4.0/ME/98/95等)
・MAGICからMS-SQLのテーブルを定義取得してからテーブル変更
しても[テーブル変更メッセージ]は出ないでしょうか?
(MS-SQL上のテーブル定義とMAGIC定義がもし違っていると
MAGIC内部的で矛盾を起こしています。)
・MAGICのテーブル辞書で、[CTRL+G]で開いたときに
[テーブル変更メッセージ]が出ないでしょうか?
またテーブルはオープンできますか?
・MAGICのテーブル辞書で、テーブルを新規で作成してから、
MAGICからテーブル辞書で変更しても出てこないでしょうか?
・MCFを新しく作成して、テーブル辞書でやっても同じですか?
・テーブルは、ビューでしょうか?
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
こんにちは。レス有難うございます。
全ては試せませんでしたが。
OSはWIN XP
> ・MAGICからMS-SQLのテーブルを定義取得してからテーブル変更
> しても[テーブル変更メッセージ]は出ないでしょうか?
> (MS-SQL上のテーブル定義とMAGIC定義がもし違っていると
> MAGIC内部的で矛盾を起こしています。)
やり方がわからなくて、まだやっていません。
> ・MAGICのテーブル辞書で、[CTRL+G]で開いたときに
> [テーブル変更メッセージ]が出ないでしょうか?
> またテーブルはオープンできますか?
項目を増やした後、CTRL+Gすると
DBエラー
(サーバー名) : 列命 '売上金額' は無効です。とメッセージ
が表示され、magicの画面には、テーブルがオープンできません:ABCDEFG
のように表示されます。
> ・MAGICのテーブル辞書で、テーブルを新規で作成してから、
> MAGICからテーブル辞書で変更しても出てこないでしょうか?
テーブルは、magicからしか作っていません。
> ・MCFを新しく作成して、テーブル辞書でやっても同じですか?
やってみましたが、結果は変わりませんでした。
DBDELでテーブルをdrop出来ないのも変化ありませんでした。
> ・テーブルは、ビューでしょうか?
実テーブルです。
全ては試せませんでしたが。
OSはWIN XP
> ・MAGICからMS-SQLのテーブルを定義取得してからテーブル変更
> しても[テーブル変更メッセージ]は出ないでしょうか?
> (MS-SQL上のテーブル定義とMAGIC定義がもし違っていると
> MAGIC内部的で矛盾を起こしています。)
やり方がわからなくて、まだやっていません。
> ・MAGICのテーブル辞書で、[CTRL+G]で開いたときに
> [テーブル変更メッセージ]が出ないでしょうか?
> またテーブルはオープンできますか?
項目を増やした後、CTRL+Gすると
DBエラー
(サーバー名) : 列命 '売上金額' は無効です。とメッセージ
が表示され、magicの画面には、テーブルがオープンできません:ABCDEFG
のように表示されます。
> ・MAGICのテーブル辞書で、テーブルを新規で作成してから、
> MAGICからテーブル辞書で変更しても出てこないでしょうか?
テーブルは、magicからしか作っていません。
> ・MCFを新しく作成して、テーブル辞書でやっても同じですか?
やってみましたが、結果は変わりませんでした。
DBDELでテーブルをdrop出来ないのも変化ありませんでした。
> ・テーブルは、ビューでしょうか?
実テーブルです。
投票数:1
平均点:10.00
atushi
居住地: 長野県
投稿数: 30
![半人前 半人前](../../uploads/rank3dbf8e94a6f72.gif)
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
atushi
居住地: 長野県
投稿数: 30
![半人前 半人前](../../uploads/rank3dbf8e94a6f72.gif)
nkmt様、こんにちは
申し訳ございません。
回答が本題とかけ離れてしまいました。
本題のテーブル変更時の[変更しますか?]が出ない件に戻ります。
以下の手順を行ったら、どこまでうまくいきますでしょうか?
1.[データベース特性][オプションのタブ][定義チェック]が
外れていたらチェックして下さい。
[開発モードでのテーブル変換]のチェック済みは了解しました。
2.MAGICからMS-SQLの新しい名前のテーブルを作成して下さい。
そのときに、[DBテーブル][DB カラム名]は英数字大文字(A〜Z)で
重複のない名前をつけて下さい。
MAGICの型は、数値型と文字型のみにして下さい。
<追記しました>
・数値型の場合:データベースデフォルト値:0
文字型の場合:データベースデフォルト値:''
※レコード作成時に[NULL]が代入されるのを避けるため、
データベースデフォルト値を設定した方が良いでしょう。
3.インデックスは、重複不可を必ず1つ作成して下さい。
[インデックス特性][SQL]の[DB インデックス名]も同様に
英数字大文字(A〜Zのみ)で重複のない名前をつけて下さい。
4.[CTRL+G]を開いてデータを何行か登録して下さい。
5.テーブル辞書のトップに戻ったら、もう一度、
[CTRL+G]を押して、複数行のデータが登録されているのを
確認して下さい。
6.MAGICの型で、数値型か文字型を一番最後のカラムに
追加して、保存して下さい。
7.テーブル辞書のトップに戻って、カーソルを上下すると
[変更しますか?]と出ますので、[Yes]を選択して
処理していきます。(正常)
出なかったら、[8]へ
8.[CTRL+G]を押したときに、[変更しますか?]になります
でしょうか?エラー表示となりますでしょうか?
申し訳ございません。
回答が本題とかけ離れてしまいました。
本題のテーブル変更時の[変更しますか?]が出ない件に戻ります。
以下の手順を行ったら、どこまでうまくいきますでしょうか?
1.[データベース特性][オプションのタブ][定義チェック]が
外れていたらチェックして下さい。
[開発モードでのテーブル変換]のチェック済みは了解しました。
2.MAGICからMS-SQLの新しい名前のテーブルを作成して下さい。
そのときに、[DBテーブル][DB カラム名]は英数字大文字(A〜Z)で
重複のない名前をつけて下さい。
MAGICの型は、数値型と文字型のみにして下さい。
<追記しました>
・数値型の場合:データベースデフォルト値:0
文字型の場合:データベースデフォルト値:''
※レコード作成時に[NULL]が代入されるのを避けるため、
データベースデフォルト値を設定した方が良いでしょう。
3.インデックスは、重複不可を必ず1つ作成して下さい。
[インデックス特性][SQL]の[DB インデックス名]も同様に
英数字大文字(A〜Zのみ)で重複のない名前をつけて下さい。
4.[CTRL+G]を開いてデータを何行か登録して下さい。
5.テーブル辞書のトップに戻ったら、もう一度、
[CTRL+G]を押して、複数行のデータが登録されているのを
確認して下さい。
6.MAGICの型で、数値型か文字型を一番最後のカラムに
追加して、保存して下さい。
7.テーブル辞書のトップに戻って、カーソルを上下すると
[変更しますか?]と出ますので、[Yes]を選択して
処理していきます。(正常)
出なかったら、[8]へ
8.[CTRL+G]を押したときに、[変更しますか?]になります
でしょうか?エラー表示となりますでしょうか?
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
atushi様、おはようございます。
昨日は1日作業から離れておりました。
結果から申しますと全て成功致しました。
テーブルに項目を追加した後、データ変換しますか?も聞いてきて、項目も正常に追加出来ましたし、DBDELも正常に機能しました。報告遅くなり申し訳ありません。
Microsoft SQL Server Manegement Studioのインストールの何かがおかしかったようで、それらをインストールしなおしたら直ったようです。色々とレス頂きまして有難うございました。
昨日は1日作業から離れておりました。
結果から申しますと全て成功致しました。
テーブルに項目を追加した後、データ変換しますか?も聞いてきて、項目も正常に追加出来ましたし、DBDELも正常に機能しました。報告遅くなり申し訳ありません。
Microsoft SQL Server Manegement Studioのインストールの何かがおかしかったようで、それらをインストールしなおしたら直ったようです。色々とレス頂きまして有難うございました。
投票数:0
平均点:0.00