Sql-Server

將表複製到另一個保留標識屬性的 SQL Server

  • May 7, 2021

客觀的

我想將 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...使用本教程

    • 我在選中和未選中“啟用身份插入”的情況下都試過了
  • 在目標數據庫上創建表並簡單地將數據複製/粘貼到其中(這根本不起作用 - 沒有插入數據)

筆記

  • 我寧願不依賴第三方工具。我正在使用 SQL Server Management Studio 2018。
  • 我知道 Stack Overflow 上的這個問題,它談到了完全相同的問題。但如上所述,啟用“啟用身份插入”不會複製身份屬性。
  • 我也知道關於伺服器故障另一個問題,它的兩個答案都是關於第三方工具的,但我不想使用它。
  • 我只有源伺服器/數據庫的讀取權限。
  • 這些表最多包含 6,000 行。
  • 源數據庫包含更多的表,我只想複製 10 個特定的表。

對於一次性練習來說,使用Generate Scripts SSMS 功能編寫表格腳本可能是最簡單的。右鍵點擊數據庫,選擇Tasks,然後選擇Generate Scripts

請務必檢查高級選項,以便您準確編寫所需的腳本。這將創建包括該IDENTITY屬性的表(以及可選的索引之類的東西)。

然後,您可以使用任何方便的方法載入表,包括您已經使用過的*導入和導出數據嚮導。*您將需要選擇“啟用標識插入”選項,因為目標表現在將具有該屬性。

是的,如果導入和導出嚮導處理身份會很好,但它是為多種類型的數據源設計的通用工具,身份是專有的。

引用自:https://dba.stackexchange.com/questions/291105