1

そのため、私はこれまでやったことのないことを研究する任務を負っています。

VS2010 で C# を使用して構築された 3 つのアプリケーション モジュールは、 dbo.Samples などのテーブルを含む 1 つのデータベース (Database1) を使用しており、これらはすべてスキーマ「dbo.Table」を持っています。上層部の不明な理由により、Database1 の下にあるこれらすべてのテーブルを、padmin.PSTIF、petro.Facilities、webdc.AppTransactions など、さらに多くのスキーマを持つ Database2 に移動するように要求されました。

これら 3 つのモジュールでは、すべての接続文字列がapp.configファイルを介して構成され、表示のためのすべてのデータ トランザクション/選択は、接続文字列を使用してハードコーディングされた SQL ステートメントを介して行われます。

私の懸念は、dbo.Samplesを Database1 から Database2 に移動し、スキーマをmoss.Samplesなどに変更した場合、これらのハードコーディングされた各ステートメントも更新する必要があるかどうかです。現在、「SELECT * FROM Samples」のようなコードを書くことができます。接続文字列を Database2 に更新したとしても、新しいスキーマを使用するため、このステートメントを変更する必要がありますか?

編集:

DB2 のテスト環境バージョンに DB1 のダミー コピー テーブルをいくつか追加し、アプリケーションで実験しました。接続文字列を DB2 を指すように変更した後、ハードコーディングされた SQL ステートメントをそれぞれ確認し、テーブルの使用ごとに変更して新しいスキーマを含める必要があることがわかりました ( に変更FROM Sample) FROM moss.Sample

接続文字列自体で使用したいスキーマを指定できるかどうかは誰にもわかりませんか? これにより、可能であれば、3 つのアプリケーションで約 200 の個々のステートメントを変更する必要がなくなります。

私の接続文字列の例は次のとおりです。

<connectionStrings>
    <add name="conString" connectionString="Data Source=SERVER.domain.state.acroynym.us;Initial Catalog=DatabaseName;Integrated Security=true;"
        providerName="System.Data.SqlClient" />
</connectionStrings>

に変更しようとしInitial Catalog=DatabaseNameましInitial Catalog=DatabaseName.mossたが、アプリケーションはデータベースが見つからないことを返しDatabaseName.mossました。

4

2 に答える 2

1

Analytic Lunatic さん、こんにちは。

データベース側でも追加の手順が必要になる場合があります。データベースをコピーするだけでは、その追加情報がすべてコピーされるわけではありません。トリガー、制約、インデックス、およびアクセス許可は、新しいデータベースに自動的にコピーされません。コピー ウィザードを使用した方がよい場合があります。

于 2013-09-26T19:51:31.043 に答える
0

あなたの質問には、非常に多くの暗黙の問題、潜在的な問題、不明な点があります...いくつかの点:

1) はい、さまざまな方法で、あるテーブルから別のテーブル、または 2 つの完全に異なるデータベースにデータを簡単に移動できます。SSIS"select into"を含みます。

2) いいえ、本番コードで「select *」を実行することはめったにありません。

3) はい、あるテーブルの 1 つの列にアクセスするハードコードされたステートメントは、おそらく別のテーブルの別の列にアクセスするように変更する必要があります :)

于 2013-09-26T19:35:08.950 に答える