是否應該允許開發人員使用 LocalDB 與“開發”實例?
就像之前在此處發布的關於“開發人員應該能夠查詢生產數據庫嗎? ”的問題的脈絡,我想了解您對另一個特別煩人的話題的看法!
許多公司阻止開發人員在開發機器上安裝 SQL Server Express 等,而是提倡使用集中式開發 SQL Server。
具體而言,這樣做是為了確保:
- 開發伺服器和生產伺服器之間的更新檔級別一致性
- 能夠證明和驗證上述任何更新檔
- 數據安全; 只有開發伺服器上的數據用於開發
- 可恢復性;數據可恢復且仍在備份
- 移至生產時可能導致問題的排序規則差異
對我來說,所有這些論點都特別無效,也許修補的除外;但是,如果本地電腦上的數據庫純粹用於開發活動,而不是測試,那麼當應用程序通過測試/UAT 等進入生產時,更新檔將被證明。
排序規則似乎不是一個正當的理由,好像這是數據庫的一個問題,無論如何都應該在創建它時設置它。據我所知,只有 SharePoint 和 SCCM 有這方面的問題;)
現在,假設它僅用於開發,並且數據庫不會“移動”到生產環境,唯一的移動將是:
- 創建用於部署到生產的數據庫的腳本
- 來自“生產”第三方系統的備份在適合驗證和開發的情況下被恢復和截斷
任何人都可以看到任何問題嗎?我錯過了什麼嗎?
我想最大的擔憂之一是本地數據庫實例過時的能力,但這是一個軟體管理問題,而不是一個 IMO 的 DBA。
是的。所有開發人員都應該有一個本地的 SQL Server 實例和一個共享的 SQL Server 實例。它們存在於不同的目的。兩者都是需要的。
也許您目前的環境看起來像這樣?
上面,幾個開發人員正在編寫更改並將它們部署到公共 SQL Developer 數據庫中。這是不好的。Microsoft MVP Troy Hunt在此處記錄了這種過時方法的一些痛點。主要的是…
- 無法進行適當的來源控制。 大的!
- 沒有伺服器級別的權限就無法進行性能調整。
- 無法在不影響他人的情況下進行實驗。
這種模式會導致開發者衝突。衝突的症狀之一是數據庫蔓延。許多數據庫是在開發人員尋找一個安全、隔離的空間來完成他們的工作時創建的。組織堅持這種模式有幾個原因。首先是他們沒有投資合適的原始碼控制系統。另一個是他們只是繼承了這種設計模式,懶得去改變它。微軟一直在穩步擺脫這種模式,進入更像這樣的東西……
在上圖中,每個開發人員都使用 Visual Studio 將他的數據庫更改寫入並保存到 SQL Server 的本地實例中。然後將這些本地更改同步到適當的原始碼控制系統中。在這裡,每個開發人員都可以在一個他的更改在簽入之前不會影響其他任何人的環境中進行設計和試驗。到那時,衝突就會得到解決。
上面使用的本地數據庫可以是 LocalDB、Express 或 Developer 版本。Simple-Talk 在權衡每個方面的優缺點方面做得很好。Microsoft 為本地開發數據庫編寫瞭如此多的選擇是有原因的:LocalDB、Express、Developer.. 我們應該使用它們!
如果您需要選擇,很難不爭辯說每個開發人員都安裝了本地版本SQL Server Developer版本。它是完全免費的,並且與企業版具有相同的功能。它將允許您的整個團隊以安全的方式在整個 Microsoft BI 堆棧(SQL Server、SSIS、SSRS 和 SSAS)中進行探索和設計。
我們仍然可以保留公共數據庫,但它不應該用於開發,應該用於測試。這是一個系統級設置與生產同步的伺服器。硬體、作業系統、更新檔等。