我試圖編寫一個應用程序,將從SQL Server數據庫中取出信息,通過webservice加載對象模型,然後通過將該信息導入Access數據庫,該數據庫基於與SQL Server數據庫不同的模式,但所包含的信息相同(因此我認爲這與ETL過程類似)。我遇到的問題是數據庫中的主鍵(SQL Server)是GUID,而我將它們放入(Access)的數據庫是INT。因此,例如:維護數據庫與Guids和另一個與整數鍵之間的數據庫關係
表1,個人表中的SQL Server:
╔══════════════════════════════════════╦══════════╦════════════╗
║ 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:
╔════╦══════════╦════════════╗
║ 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應該是唯一的。任何人都可以想出一個很好的方法去做我想要完成的事情嗎?我目前正在嘗試這樣做的方式有什麼問題嗎?
任何幫助將不勝感激。