我正在處理舊的C++ MFC項目(> 10年)。數據庫應用程序適用於從MS Access(2007)遷移到MS SQL Server(2008 R2),我面臨着一些障礙。爲了導出數據,我使用了MS SQL Management Studio(菜單中的「導入」選項) 衆所周知,Access和MS SQL之間的數據類型存在一些差異。這變成了一些麻煩。將MS Access中的數據導出到MS SQL,並更改架構和表格
列 「ID」 從Access(自動編號,不爲空,主鍵)成爲在SQL Server(INT,不爲空,沒有任何自動遞增),只是平常列。所以在向表格中插入新行時出現了很多錯誤。
是/否鍵入Access(-1/0; NULL是不允許的)變成位(1/0/NULL),工作邏輯不應該被破壞,因爲在大多數地方是成爲對比不等於0:
query.Select() .Buff( 「ID」,&代碼) .FromS( 「%TABLE_NAME%」,NULL) 。凡()STR(」 Aktiv <> 0「) .Execute();
尋找解決方案我看到了Access的advice to use SSMA(SQL Server遷移助理)。由於它重新創建了主鍵/外鍵,創建了CHECK的索引,它更好,更智能。但不幸的是,很多外鍵的行動更新/刪除操作變得不是級聯,但沒有行動。模式導入後的警告消息:
MS Access table%Table1%上的FOREIGN KEY約束「Reference77」可能導致循環或多個級聯路徑。表%Table2%到表%表1%中的級聯選項在SQL Server中設置爲No選項。
這並不是一個驚喜的應用程序在刪除對象時會出現一些錯誤,儘管它在Access中都是正常的。爲了測試,我選擇了一個刪除操作(在應用程序中)出現錯誤。我觀看了錯誤消息並更改了無動作 - >級聯通過SSMS(SQL Server Management Studio)參與FOREIGN KEYS。之後,應用程序中的刪除操作成功。
我的問題是:
- 我說得對不對,我只需要改變無動作 - >級聯爲外鍵來獲取數據庫應用程序可以工作完全正確的?或者可能會出現另一個我不知道的問題?
- 如何實現?我希望它是將它應用到客戶端的SQL Server上的一個很好的解決方案。
感謝您的幫助,我真的很感激它!
未來讀者注意事項:在Access 2013中刪除了SQL Server升遷嚮導(推薦選項#3),因此[SQL Server遷移助理(AccessToSQL)](http://msdn.microsoft.com/ en-us/library/hh313039%28v = sql.110%29.aspx)(選項#2)可能是Access 2013及更高版本的最佳可用選項。 –