我正在將數據庫從MS Access移動到MS SQL Server 2012.我的問題涉及我們需要爲SQL Server數據庫解決的數據問題。我們有一個主MS Access表,它生成一個整數鍵,然後在其他幾個表中使用。在Access中,當創建新記錄時,列自動增量。我們遇到的問題是Access表格列中存在空白(記錄被刪除(不明智))。似乎SQL表版本的SQL Server版本的解決方案是將該列的表設置爲PRIMARY和UNIQUE,而不使用IDENTITY值。這意味着我們不會再獲得一個自動增加的號碼。我們必須編寫一些代碼來使用帶有MAX()的SELECT來創建該編號。有沒有更好的方法來解決這個問題?將MS Access從MS Access遷移到MS SQL Server
0
A
回答
2
您有TableA,目前維護使用的主鍵是相關的表。你希望TableB現在控制這個主鍵的創建。我不明白爲什麼你不能繼續在TableB上使用自動遞增主鍵來管理主鍵的創建。以前的值有差距並不重要。 SQL Server有一個辦法。
不能將表中的退出列轉換爲IDENTITY,但可以在SQL Server中使用IDENTITY列創建表,關閉IDENTITY功能,使用您自己的值(缺口和全部)填充它,然後再打開IDENTITY功能。
從文檔上IDENTITY_INSERT:
-- Create products table.
CREATE TABLE products (id int IDENTITY PRIMARY KEY, product varchar(40))
GO
-- Inserting values into products table.
INSERT INTO products (product) VALUES ('screwdriver')
INSERT INTO products (product) VALUES ('hammer')
INSERT INTO products (product) VALUES ('saw')
INSERT INTO products (product) VALUES ('shovel')
GO
-- Create a gap in the identity values.
DELETE products
WHERE product = 'saw'
GO
SELECT *
FROM products
GO
-- Attempt to insert an explicit ID value of 3;
-- should return a warning.
INSERT INTO products (id, product) VALUES(3, 'garden shovel')
GO
-- SET IDENTITY_INSERT to ON.
SET IDENTITY_INSERT products ON
GO
-- Attempt to insert an explicit ID value of 3
INSERT INTO products (id, product) VALUES(3, 'garden shovel').
GO
-- SET IDENTITY_INSERT to OFF.
SET IDENTITY_INSERT products OFF
GO
SELECT *
FROM products
使用這種技術,您可以在SQL Server中,在沒有標識列表B的Access版本轉換爲temp_TableB。然後用IDENTITY列在SQL Server中創建一個真正的TableB。
,那麼你可以
SET IDENTITY_INSERT TableB ON
INSERT INTO TableB ({columnlist})
SELECT * from temp_TableB
SET IDENTITY_INSERT TableB OFF
現在你已經表B正確填寫,並準備創建下一個自動遞增的標識值。
+0
謝謝KnowKungFoo SET IDENTITY_INSERT ON/OFF是答案。我在桌上測試了它,它完全符合我的要求。 – billmac1
相關問題
- 1. 從MS Access遷移後端到SQL Server
- 2. 從MS Access移到SQL Server
- 3. 遷移MS Access 2003中的MS Access 2010
- 4. 將MS Access遷移到MySQL
- 5. 從MS Access遷移到Redshift
- 6. 將MS Access後端遷移到雲
- 7. Unicode的禍! MS-Access 97中遷移到MS-Access 2007年
- 8. MS Access升級到SQL Server
- 9. MS Access查詢到SQL Server
- 10. 將基於MS Access的應用程序遷移到SQL Server 2008
- 11. 將MS Access數據庫遷移到SQL Server Compact Edition
- 12. 將MS Access 2007數據庫遷移到Sql Server 2008
- 13. 將表從MS SQL Server遷移到MySQL
- 14. SQL Server和MS Access 2016
- 15. MS Access/SQL Server Len()Brain Teaser
- 16. SQL Server Express vs MS Access
- 17. SQL的MS Access -
- 18. Oracle到Postgres,MySQL或MS Access遷移
- 19. 將Access從Access遷移到SQL Server
- 20. T-SQL到MS Access SQL
- 21. 將MS SQL Server查詢結果導出到MS Access
- 22. 針對MS Access的數據庫遷移
- 23. SQL Workbench:將Ms Access RDBMS遷移到SQL;取消操作
- 24. MS ACCESS,VB將外部MS Access表導入SQL服務器表
- 25. Sql服務器到Ms Access
- 26. 是從MS Access
- 27. SQL到MS Access SQL查詢
- 28. PDF到MS Access
- 29. postgres到MS Access
- 30. 將數據從MS Access移動到MS Excel
我以爲你可以改變列到身份一旦它在SQL Server?你嘗試過嗎? –
請不要將身份列與序號混淆。您不應該對身份專欄有任何興趣,除了它是唯一的。 – Fionnuala