翻譯|使用教程|編輯:莫成敏|2019-09-20 14:41:44.967|閱讀 321 次
概述:從另一個團隊繼承數據庫?在格式化SQL的方式上更改了團隊策略?當您開發它時,什么阻止您很好地格式化整個數據庫的代碼?手動的過程可能需要比預期更長的時間。本篇文章演示了使用SQL Compare和SQL Prompt在單個操作中重新格式化整個數據庫的簡單3步方法。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
SQL Compare是一款比較和同步SQL Server數據庫結構的工具。現有超過150,000的數據庫管理員、開發人員和測試人員在使用它。當測試本地數據庫,暫存或激活遠程服務器的數據庫時,SQL Compare將分配數據庫的過程自動化。
從另一個團隊繼承數據庫?在格式化SQL的方式上更改了團隊策略?當您開發它時,什么阻止您很好地格式化整個數據庫的代碼?手動的過程可能需要比預期更長的時間。本篇文章演示了使用SQL Compare和SQL Prompt在單個操作中重新格式化整個數據庫的簡單3步方法。
首先,為開發數據庫生成最新的構建腳本,包括表、代碼模塊等等。您可以使用SQL Prompt根據團隊的標準重新格式化整個構建腳本。到目前為止一切都很簡單,但接下來呢?
下一個任務是將這些格式更改保存到開發數據庫中。您需要設計一個遷移腳本,該腳本在執行時會將每個代碼模塊、作為視圖的對象、表值函數、標量函數、觸發器和過程,以應用新的代碼格式。這樣,這些例程的新來源將保留在數據庫中。但是,由于復雜的對象間引用,這可能不像通過構建腳本并將CREATE語句更改為ALTER那么簡單。當您嘗試運行這些ALTER命令時,您可能會遇到麻煩。
例如,除了在視圖、另一個函數或過程中引用之外,函數也可以綁定到表列上的計算列、默認約束或檢查約束。如果您嘗試以這種方式更改正在使用的函數,您將收到錯誤:
Cannot ALTER '<name of referenced object>' because it is being referenced by object '<Name of referencing object>'.
為避免這種情況,您必須在更改函數之前刪除引用和約束,然后替換它們。如果一個函數被引用很多,這使得改變函數相當棘手。此外,如果WITH SCHEMABINDING正在使用,將強制執行依賴項。這意味著在更改之前必須更改所有下游例程以刪除模式綁定??偠灾?,它可能會變得復雜。
成功執行了遷移腳本之后,您還需要在源代碼管理中更新表和代碼模塊中的各個對象腳本,以反映數據庫的新格式化版本。當然,源代碼管理中的規范源代碼是唯一可以保存CREATE TABLE語句格式以及所有注釋的地方。
幸運的是,一旦您生成了構建腳本,并使用SQL Prompt對其進行了格式化,SQL Compare可以為您完成剩下的這項艱苦工作。
步驟1:在SSMS中生成并格式化構建腳本
第一項任務是生成最新的數據庫構建腳本。最簡單的方法是在沙箱中使用SSMS Generate Scripts向導,在開發數據庫的最新副本上。在SSMS對象資源管理器窗格中,右鍵單擊要進行美化的源代碼的開發數據庫。然后導航任務 | 生成腳本...以啟動向導。
我們將為新數據庫生成所有內容,并將其放在新的查詢窗口中。
向導的其余部分是不言而喻的。您將在新的查詢窗口中找到構建腳本。
我們不想重建我們的開發數據庫,因此,在構建腳本中,我們需要將對數據庫的所有引用更改為新數據庫的名稱。這些引用將被SSMS括起來,因此您應該在全局搜索中包含這些括號,并在數據庫名稱上替換表達式,無論它們在何處引用。因此,如果您的數據庫名為Snibbo,并且您希望構建腳本創建NewSnibbo,則找到[Snibbo]并替換為[NewSnibbo]。通過這樣做,即使“find”字符串在注釋、字符串或其他符號的其他地方使用,操作也會更加安全。因為除非您使用數據庫名稱作為數據庫對象的名稱,否則它們將不帶括號。即使您不明智地調用數據庫[Select],如果將其更改為[SelectCopy] ,也不會損害您的查詢。
腳本開頭的CREATE DATABASE語句需要更改為最簡單的...
CREATE DATABASE <nameOfNewDatabase>
然后,您應該可以通過單擊菜單項SQL Prompt > Format SQL輕松地重新格式化此腳本。(或按Ctrl K Ctrl Y)。由于您可能已選擇刪除不必要的方括號,因此最好先更改數據庫名稱。
步驟2:使用SQL Compare自動生成部署腳本
下一個任務是使SQL Compare創建一個部署腳本,該腳本可以改變開發數據庫中的每個代碼模塊以反映新的格式。
此時您有兩種選擇:
將重新格式化的構建腳本保存到文件中,并將其與當前數據庫進行比較,或
使用重新格式化的構建腳本來創建新數據庫并從中進行同步。
我將演示第二種技術,因此我們需要使用構建腳本臨時創建一個新版本的數據庫,該版本將在其模塊中包含所有重新格式化的代碼。
在這個例子中,使用Sandbox開發服務器,我已經使用了一個名為PhilsScripts的數據庫,其中包含大量的診斷腳本。已經生成了一個構建腳本,對其進行了格式化,并使用該構建腳本在名為BetterPhilsScripts的服務器上創建了一個新數據庫。然后執行SQL Compare并指定新格式化的BetterPhilsScripts作為源,并將PhilsScripts指定為目標。
我們比較兩者并發現SQL Compare已檢測到SQL Prompt所做的所有更改。然后,我們檢查部署腳本,當我們滿意時,我們會部署更改。
步驟3:更新源代碼管理
使用SQL Compare,您可以將數據庫保存在腳本目錄中,或更新源控制系統的現有腳本目錄。這會將每個對象保存在自己的文件中,但也可以維護構建腳本。我使用PowerShell腳本來執行此操作;當我在開發數據庫中一次更改多個對象時,它會定期保存對象腳本,然后我可以使用Github Desktop或Gmaster通過本地存儲庫進行檢查。
整理
因此,通過SQL Prompt和SQL Compare的組合,不僅可以重新格式化整個數據庫或模式的例程,還可以更新單個源文件或構建腳本以進行源代碼控制。如果您使用“遷移”方法進行數據庫開發,則還可以將SQL Compare同步腳本保存為源代碼控制,作為遷移腳本的基礎。這一切都使得重新格式化SQL代碼變得更加愉快,而不僅僅是一件苦差事。
本教程到這里就完結了,希望這篇文章對您有所幫助~喜歡的朋友可以下載SQL Prompt和SQL Compare正式版嘗試一下~
金喜正規買球相關的文章:
SQL Compare教程:工作示例——比較和部署兩個數據庫(上)
SQL Compare教程:工作示例——比較和部署兩個數據庫(下)
SQL Compare快照:輕量級數據庫版本控制和回滾機制(上)
SQL Compare快照:輕量級數據庫版本控制和回滾機制(下)
SQL Compare教程:使用SQL Compare來維護對象級源代碼控制(上)
SQL Compare教程:使用SQL Compare來維護對象級源代碼控制(下)
想要購買SQL Compare正版授權,或了解更多產品信息請點擊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn