Sql-Server
將表複製到另一個保留標識屬性的 SQL Server
客觀的
我想將 10 個表從 SQL Server 上的數據庫複製到我的本地 SQL Server 中。本地副本用於測試。
問題
複製的表都將其列上的標識屬性
ID
設置為“否”。據我了解,該設置允許列自動遞增(當我嘗試插入值而不給出值時出現錯誤ID
)。伺服器上的表都將此設置設置為“是”,現在當我嘗試在本地副本上將其設置為“是”時,我的軟體(SQL Server Management Studio)要求我刪除並重新創建整個表並因此失去所有數據。
我試過的
以下解決方案都複製表及其數據,但不複製身份屬性:
使用查詢複製每個表(使用連結伺服器):
SELECT * INTO NEW_DB.dbo.tblCopy FROM OPENQUERY([server], 'select * from OLD_DB.dbo.tblData')
導入數據
Task -> Import Data...
(使用本教程)
- 我在選中和未選中“啟用身份插入”的情況下都試過了
在目標數據庫上創建表並簡單地將數據複製/粘貼到其中(這根本不起作用 - 沒有插入數據)
筆記
對於一次性練習來說,使用Generate Scripts SSMS 功能編寫表格腳本可能是最簡單的。右鍵點擊數據庫,選擇Tasks,然後選擇Generate Scripts。
請務必檢查高級選項,以便您準確編寫所需的腳本。這將創建包括該
IDENTITY
屬性的表(以及可選的索引之類的東西)。然後,您可以使用任何方便的方法載入表,包括您已經使用過的*導入和導出數據嚮導。*您將需要選擇“啟用標識插入”選項,因為目標表現在將具有該屬性。
是的,如果導入和導出嚮導處理身份會很好,但它是為多種類型的數據源設計的通用工具,身份是專有的。