2017/04/23

[SQL Server] 如何解決在 SQL Server 2012 匯出資料層應用程式發生錯誤的問題

前言

早期在轉移資料庫,常用土法煉鋼的方法,不是直接產生指令碼,就是直接掛載資料庫,在發現可以用匯出資料層應用程式後,一切都變得簡單多了。但是,對,又是這個但是,版本的支援程度上還是有所不同。

開發環境

  • Windows 10
  • SQL Server 2014

佈署環境

  • Windows Server 2012
  • SQL Server 2012


這是某專案客戶主機的環境,在專案完成要匯入資料前,由於與開發環境不同,不能直接用匯入資料層應用程式 (DAC) 的方式,所以轉移資料時需要用產生指令碼的方法,這時需要在進階選項去針對伺服器版本編寫指令碼,選擇正確的版本來產生指令碼,然後在佈署時直接用指令碼即可完成結構及資料匯入。







在佈署的伺服器執行 SQL 指令完成後,看似一切都完整正常運作了~



由於 資料層應用程式 的檔案可以在高版本向下相容,那麼反向要把客戶端的資料做個匯出資料層應用層程式,再匯回來開發端就容易地多。但是,對,又是這個但是,怎麼匯不出來啊?



好吧,看一下錯誤訊息



不支援項目擴充屬性: [MS_Description]

哎呀~ 這是用來記錄資料欄位的描述用的

原來在 SQL Server 2012 是不支援封裝 MS_Description 這項擴充屬性的,但是較高版本是可以的。所以~最好在產生指令碼前先指定不要產生擴充屬性即可。



如此一來未來在匯出資料應用層程式就可以順利執行囉!



後記

SQL Server 2014 以後的版本就不用這麼麻煩啦,不然哪天忘了 Schema 又沒資料欄位描述,如果有遇到欄位名稱又取得很不人性化 (像是 ERP 欄位都取得不直覺或者又再有編製原則),有時還挺麻煩的,是不是?

沒有留言: