SQL Server データベースから情報を取得し、Web サービスを介してオブジェクト モデルをロードし、その情報を SQL Server とは異なるスキーマに基づく Access DB に渡すアプリケーションを作成しようとしています。データベースに含まれていますが、含まれている情報は同じです (したがって、これは ETL プロセスに似ていると思います)。私が実行している問題は、情報を取得しているデータベース (SQL Server) の主キーが GUID であるのに対し、それらを入れているデータベース (Access) は INT であることです。たとえば、次のようになります。
表 1、SQL Server の Persons テーブル:
╔══════════════════════════════════════╦══════════╦════════════╗
║ ID ║ Name ║ CreatedOn ║
╠══════════════════════════════════════╬══════════╬════════════╣
║ 3648F6BB-F743-4952-9C69-93336667F3B1 ║ Person 1 ║ 01/01/2012 ║
║ DE44577A-CAE7-4101-B962-C052214E723B ║ Person 2 ║ 02/01/2012 ║
║ 94115C5E-9C7E-40CF-8A87-D4D837BD5DB3 ║ Person 3 ║ 03/01/2012 ║
║ F93E77D9-C344-420C-9499-BA3B4DD0F0BA ║ Person 4 ║ 04/01/2012 ║
╚══════════════════════════════════════╩══════════╩════════════╝
表 2、Access の Persons テーブル:
╔════╦══════════╦════════════╗
║ ID ║ Name ║ CreatedOn ║
╠════╬══════════╬════════════╣
║ 1 ║ Person 1 ║ 01/01/2012 ║
║ 2 ║ Person 2 ║ 02/01/2012 ║
║ 3 ║ Person 3 ║ 03/01/2012 ║
║ 4 ║ Person 4 ║ 04/01/2012 ║
╚════╩══════════╩════════════╝
したがって、表 1 は SQL Server データベースでデータがどのように返されるかを示し、表 2 は Access データベースで情報がどのように表示されるかを示しています。したがって、すべての GUID は整数である必要がありますが、データ間の関係は同じままにする必要があります。たとえば、SQL Server と Access で人の住所を取得するクエリを実行すると (住所テーブルも同様に設定されます)、GUID や整数が使用されているかどうかに関係なく、クエリは同じ結果を返すはずです。
私が考えていたのは、SQL Server で ROW_NUMBER() を使用し、CreatedOn 日付 (データベースの日時型であり、すべてのレコードで一意である必要があります) で並べ替えることでした:
SELECT
(ROW_NUMBER() OVER (ORDER BY CreatedOn)) AS ID,
Name,
CreatedOn
FROM Table2;
唯一のことは、重複した整数 ID がクエリから返されていることです。たとえば、上記の表 1 は次のようになります。
╔════╦══════════╦════════════╗
║ ID ║ Name ║ CreatedOn ║
╠════╬══════════╬════════════╣
║ 1 ║ Person 1 ║ 01/01/2012 ║
║ 2 ║ Person 2 ║ 02/01/2012 ║
║ 1 ║ Person 3 ║ 03/01/2012 ║
║ 1 ║ Person 4 ║ 04/01/2012 ║
╚════╩══════════╩════════════╝
各 ID を一意にする必要がある場合。私が達成しようとしていることを実行するための良い方法を考えられる人はいますか? 私が現在やろうとしている方法に問題はありますか?
どんな助けでも大歓迎です。