1

WindowsサーバーでASP.NETを使用して、SQLサーバー2008r2でアプリケーションを開発およびテストしました。ここで、データベースを Windows から Red Hat Linux の Oracle に移動する必要があります。

同じことをテストするためのインフラストラクチャはまだセットアップしていません。それまでの間、誰かがこの種のことを成功させたかどうか知りたいです。任意のリソースへのポインターは大きな利点になります。

接続文字列を変更することだけが必要ですか、それとも Linux でこれを許可する特定の構成がありますか?

環境の準備ができたらこれを確認しますが、同様の経験がある場合は有利なスタートとして共有してください.

前もって感謝します。

PS: テーブル構造、ストアド プロシージャなどを Oracle に移行するには、Sql Developer ツールを使用します。

4

1 に答える 1

0

オラクルへの移行はそれほど簡単ではないため、私の質問に答えたいと思いますが、頭痛の少ないWindowsまたはLinuxで誰でもオラクルに移行するのに役立つヒントがいくつかあります。

Sql開発者ツールが最初に行うことは、ストアドプロシージャ、制約、トリガーなどを含むsqlserverスキーマとデータをOracleに移行することです.

また、データ型のマッピングも適切に行い、必要に応じてデータ型を再マップするオプションを提供します。

いくつかの注意事項と注意事項。

  1. Oracle では、ストアド プロシージャ名の長さは約 30 文字に制限されています。これは、名前が 30 文字を超える移行 SP または識別子が切り捨てられる場合があるため、手動で名前を変更する必要がある領域です。

  2. 直面する可能性のある他の一般的な問題は、日付の挿入とフォーマットに関するものです。次のスニペットを使用して、頭痛を避けることができます。よくあるエラーは「有効な月ではありません」です。

OracleConnection conn = 新しい OracleConnection(oradb); // C# conn.Open(); OracleGlobalization セッション = conn.GetSessionInfo(); session.DateFormat = "DD.MM.RR"; // ここで必要に応じてフォーマットを変更します conn.SetSessionInfo(session);

  1. 最も厄介なエラーは、データの挿入または更新時の文字から数値への変換、または関連するエラーです。

ここでの問題は、SQL プロバイダーのコマンド オブジェクトにパラメーターを追加すると、バインディングは名前で行われますが、Oracle.DataAccess のデフォルトのバインディングは位置によるものです。これが私の頭痛の種を救った投稿です。 uintデータ型のODP .NETパラメータの問題

できることは、command.BindByName = true; を設定することです。

  1. データを返す SP を移行する場合、Oracle は出力パラメータ参照カーソルを作成します。これは、コマンド パラメータを作成する際に注意する必要があります。

たとえば、OracleParameter refp = new Oracle.DataAccess.Client.OracleParameter("cv_1", OracleDbType.RefCursor, ParameterDirection.InputOutput);

command.Parameters.Add(refp);

  1. また、sqlserver では、SP へのパラメーターの前に「@」を付ける必要がありますが、oracle では必要ありません。これは、データ層で簡単に処理できます。

  2. また、Oracle には bit データ型がないため、number(1) は正常に機能します。必要に応じて、bool を数値に変換する必要がある場合があります。

これが誰かが移行の頭痛の種を避けるのに役立つことを願っています. 遭遇した場合は、さらに問題を投稿します。

于 2012-07-13T02:37:28.020 に答える