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

パスワード:


パスワード紛失

MS-SQL2005、テーブル変換

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2007-5-23 13:35
nkmt  長老   投稿数: 1668
こんにちは。
今までPervasiveばかりやってきました。
MS-SQLについて、どなたか教えて下さい。

環境は、MAGIC 9.4J SP6b、MS-SQL2005です。
ゲートウェイは、MGms7.dllです。(更新日=2006/10/27)

MS-SQLでテーブルを作成し、データを登録しました。
そして、そのテーブルに1項目追加したり、文字型の桁数を増やしたりしても、その後「変更しますか?、バックアップしますか?、インデックスをスキャンしますか?」といったメッセージが出てきません。

私は途中から作業に加わったのですが、他の者のPCで作業しても同様です。

Pervasiveなら当たり前に出てきたメッセージなのですが。

よろしくお願いします。
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2007-5-23 14:08 | 最終変更
atushi  半人前 居住地: 長野県  投稿数: 30
nkmt様、こんにちは

・[設定][データベース]で使用している[DBMS][MSSQL]の特性で、
 [オプション]タブの[開発モードでのテーブル変換]の
 チェックが入っていないと、テーブル辞書からの変更時
 にメッセージが出てきませんので、確認してみて下さい。

・ゲートウェイは、SP6bをインストールすれば、最新が入るので
 [MAGIC.INI]の[Gateways\mgms7.dll]などの参照先が間違って
 いなければ、特に問題はないかと思います。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2007-5-23 14:23
nkmt  長老   投稿数: 1668
atushiさん、こんにちは。レス有難うございます。

引用:

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
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2007-5-23 15:49 | 最終変更
atushi  半人前 居住地: 長野県  投稿数: 30
nkmt様、こんにちは

>チェックは付いていました。
>試しにチェックを外して、テーブルの項目の属性変更をやると、
>開発モードでのテーブル変換にチェックが付いていませんので
>データの変換は行いません、といったメッセージが表示されました。

-----------------------------------------------------------
失礼しました。ステータス行にメッセージが表示されていました。
-----------------------------------------------------------

確かに不思議な現象です。
問題の切り分けで、現象が出ている環境と範囲を限定したいので
教えて下さい。

・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
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2007-5-23 16:34
nkmt  長老   投稿数: 1668
こんにちは。レス有難うございます。
全ては試せませんでしたが。

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
前の投稿 - 次の投稿 | 親投稿 - 子投稿.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
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2007-5-24 9:00 | 最終変更
atushi  半人前 居住地: 長野県  投稿数: 30
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]を押したときに、[変更しますか?]になります
 でしょうか?エラー表示となりますでしょうか?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2007-5-25 9:21
nkmt  長老   投稿数: 1668
atushi様、おはようございます。
昨日は1日作業から離れておりました。
結果から申しますと全て成功致しました。
テーブルに項目を追加した後、データ変換しますか?も聞いてきて、項目も正常に追加出来ましたし、DBDELも正常に機能しました。報告遅くなり申し訳ありません。

Microsoft SQL Server Manegement Studioのインストールの何かがおかしかったようで、それらをインストールしなおしたら直ったようです。色々とレス頂きまして有難うございました。
投票数:0 平均点:0.00

  条件検索へ


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