- PR -

vb.netで開発と本番を切換える方法は

1
投稿者投稿内容
kosmas
会議室デビュー日: 2008/09/19
投稿数: 8
投稿日時: 2008-12-16 14:29
お世話になります。
検索してみましたが、掛からなかったので、新規投稿させて頂きました。

現在、データベースサーバーの更新の為、
以前開発したOracleデータベースで読み書きするソフトを、改造しなくてはならなくなりました。
現在のサーバーは切換え後に廃棄
開発用と本番用は、同テーブル名を設置し、ユーザー名とパスワードで切換えする

ツールはVisualStudio2005(VB)で、FormをデザインしてOracleDataAdapter⇒DataSet⇒BindingSourceを設定します。
先ず、現在のサーバーから開発機へ切換えの為、DataAdapterで開発機で接続を行い、クエリビルダーを使用して開発し直しました。

ところが、本番機への切換えをする際には、ConnectionStringをForm起動時にテキストファイルから読んで、渡してあげれば済むと考えていましたが、うまくいきませんでした。

原因のひとつに、Formのコードに個別で記述したSERECT文があったり、
Form.Designerにも自動で記述されたSERECT文があります。
これらには、テーブル名の前にユーザー名(ユーザー名.テーブル名)になっています。

サーバー切換えを簡単に出来る方法は無いのでしょうか?
宜しくお願いします。

以上
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2008-12-16 15:42
さかもとと申します。

>>ところが、本番機への切換えをする際には、ConnectionStringをForm起動時にテキストファイルから読んで、渡してあげれば済むと考えていましたが、うまくいきませんでした。

App.Configファイルのことでしょうか?テキストファイルで接続文字列を渡してあげても間違いではありませんが、Configファイルより読み込む方が一般的(?)です。

また、うまくいかないというのはどのようにうまくいかなかったのでしょうか?
(Settings.settings内の接続文字列の変更方法??)

>>原因のひとつに、Formのコードに個別で記述したSERECT文があったり、
Form.Designerにも自動で記述されたSERECT文があります。
これらには、テーブル名の前にユーザー名(ユーザー名.テーブル名)になっています。

自動で記述された「SERECT文」というのはウィザードで作成された結果のことでしょうか?



_________________
------------------------------------------
拝啓、さかもとと申します♪
kosmas
会議室デビュー日: 2008/09/19
投稿数: 8
投稿日時: 2008-12-16 16:02
さかもと様
ありがとうございます。

App.Configファイルを使う方法があったのですか?やり方が分からず・・・
うまくいかないのは、開発機とのアクセスになってしました。
Configファイルで解消するのでしょうか?

自動とはウイザードのことだと思います。
Form1.vb[デザイン]を構築していくと、Form1.Designer.vbのコードが自動記述されることです。

Configファイルをチャレンジしてみます。

以上
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2008-12-16 17:24
さかもとです。

語弊があったかも知れませんが、Configファイルを使えば即解決というわけではありません。

http://adonetvb.com/VB2008Connection02.html

良いサイトがありましたのでURLだけ張っておきます(VS2008ですけど、それほど変わらないかと)
_________________
------------------------------------------
拝啓、さかもとと申します♪
sasagaki
常連さん
会議室デビュー日: 2008/03/10
投稿数: 20
投稿日時: 2008-12-16 17:59
どういうエラーメッセージが出たのか、など
詳細な情報がないので、想像でしかないのですが

テキストファイルから読み込むのも、App.Configから読み込むのも、
(接続文字列そのものが間違っていなければ)同じことです。
ですので、さかもとさんもおっしゃっているとおり、
「Configに変えてみたら直る」とかいうことではないと思います。

そういうことではなく、
SQL文中にテーブルオーナー名が埋め込まれており、
それが開発DBと本番DBとで異なっている事が原因なのでは?

もしそうであれば、SQL文中のテーブルオーナー名を削除して
その代わりにシノニムを定義してあげる、などで解消するのではないでしょうか。

ところで気になったのですが
引用:

Formのコードに個別で記述したSERECT文があったり、
Form.Designerにも自動で記述されたSERECT文があります。
これらには、テーブル名の前にユーザー名(ユーザー名.テーブル名)になっています。


とのことですが、
テーブルオーナー名が付いているものと付いていないものが混在していて
不統一であるということでしょうか?
もしそうであれば、ルールを決めて統一されることをお勧めします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-12-16 23:30
引用:

kosmasさんの書き込み (2008-12-16 14:29) より:

原因のひとつに、Formのコードに個別で記述したSERECT文があったり、
Form.Designerにも自動で記述されたSERECT文があります。
これらには、テーブル名の前にユーザー名(ユーザー名.テーブル名)になっています。


 SERECT 文って、なんでしょう?Live Search で検索したところ、SELECT のタイプ ミスかと思われるのですが、よろしいでしょうか?

 タイプ ミスとして。単に「同じユーザー名でデータベースを構築すればよい」ということではないでしょうか?あるいは、同じ名前のユーザーを作って、参照できるようにすればいいのではないでしょうか。


 データベースの構築では、セキュリティ対策の一環として、ユーザー名と権限の設定があります。ユーザー名を変えるのなら、それに耐えられる作りにしていない、あるいは変更に先立って依存性を調べていないことが間違いです。
kosmas
会議室デビュー日: 2008/09/19
投稿数: 8
投稿日時: 2008-12-17 09:19
Jitta様、返信ありがとうございます。
SELECTのタイプミスでした。スミマセン。
自分はソフト開発を依頼されていまして、サーバーを設置している事業所の情報担当者は、セキュリティを考えて、開発機と本番機でユーザー名などの設定をしたものと思います。
そのような環境で行わなければならない為、又、初めての事でしたので困っていました。

sasagaki様、返信ありがとうございます。
本来は(テーブルオーナー名.テーブル名)なのですね。
テーブルオーナー名とユーザー名が同じでしたので記載してしまいました。
又、シノニムの定義も初めてお聞きしました。
勉強不足でスミマセン。
テーブルオーナー名が付いているものと付いていないものは混在していません。
ウイザードで記述されるものと、Form1.vbへ手で記述するものがあり、
手で記述するものはConfigファイルで対応が聞かないのではと思ったのです。
Configやシノニムについて調べてみます。

皆様
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)