在本文中,我們將學習Visual Studio中可用的SQL Server資料庫專案(模板)。我將談以下幾點:
SQL Server資料庫專案簡介建立新的SQL Server資料庫專案從專案的現有資料庫、.sql指令碼檔案或資料層應用程式(.bacpac)匯入資料庫模式釋出以在SQL server中建立新資料庫資料庫在任何應用程式中都扮演著非常重要的角色,當表、檢視、儲存過程的數量增加時,管理專案就變得非常困難。
考慮這樣的場景:多個開發人員正在為下一個版本的專案工作,其中一些人正在處理bug或新增新特性,這同樣需要對資料庫進行一些或許多更改。大多數情況下,開發人員會手動記錄DB(資料庫)的更改。有時他們會忽略一些在生產中造成成本的變化。在許多情況下,Dev、UAT和production DB是不同的,這也是識別差異的麻煩。
市場上有很多工具可以用來比較資料庫,但都是昂貴的或付費的解決方案。
先決條件
Visual Studio(2013, 2015, 2017,或2019)和MS SQL Server。我使用VS 2019和SQL Server 2017 Developer進行演示。
介紹您可以建立一個新的資料庫專案,並從現有資料庫、.sql指令碼檔案或資料層應用程式(.bacpac)匯入資料庫模式。然後,您可以呼叫用於連線資料庫開發的相同的視覺化設計器工具(Transact-SQL編輯器、表設計器),對離線資料庫專案進行更改,並將更改釋出回生產資料庫。還可以將更改儲存為稍後釋出的指令碼。使用Project Properties窗格,您可以將目標平臺更改為不同版本的SQL Server(包括SQL Azure)。
建立新的SQL Server資料庫專案開啟Visual Studio並建立一個空白的解決方案,如下所示:
在解決方案下新增新專案
從左面板選擇SQL Server和SQL Server資料庫專案。為專案提供一個名稱(這裡,我將名稱作為SampleAccount.)。該模板用於建立SQL server資料庫。
下一步是從現有資料庫匯入資料庫方案。
從專案的現有資料庫、.sql指令碼檔案或資料層應用程式(.dacpac)匯入資料庫模式。
因此,右鍵單擊專案並選擇import。有三個選項:資料層應用程式(.dacpac)、資料庫、指令碼(.sql)。
在這裡,我使用Database選項,因為我將從MS SQL資料庫匯入,如下所示。
現在您將看到如下所示的螢幕。此選項可用於提供連線字串。有從本地、網路或Azure選擇資料庫的選項,因此您可以根據您的資料庫選擇該選項。或者,您可以輸入伺服器名稱、身份驗證型別和憑據直接連線到資料庫伺服器。然後選擇要匯入並儲存在專案中的資料庫。
接下來,我們必須設定匯入設定。有一些選擇,
匯入應用程式範圍的物件:這將匯入表、檢視、儲存過程以及物件。匯入參考登入:與登入相關的匯入。匯入許可權:這將匯入相關許可權。匯入資料庫設定:這將匯入資料庫設定。資料夾結構:在專案中為資料庫物件選擇資料夾結構的選項。每個資料夾的最大檔案數:限制每個資料夾的檔案數。在我的例子中,我選擇瞭如下所示的選項。
單擊Start,將顯示進度視窗,如下所示。
完成後,我們可以看到專案中的表、檢視和儲存過程,如下所示。
最後,我們成功地建立了SQL server資料庫專案。現在我們可以使用這個專案從解決方案本身釋出和建立新的資料集。
現在,我將展示如何從這個SQL server資料庫專案在SQL server中釋出和建立新資料庫。
釋出以在SQL server中建立新資料庫我們可以使用具有相同模式的SQL Sever資料庫專案從Visual Studio中輕鬆地直接建立新的資料庫。
右鍵單擊專案並選擇publish選項,如下所示。
提供連線
伺服器名稱、身份驗證型別、憑據。如果要作為新資料庫釋出,則選擇預設資料庫或選擇要釋出的特定資料庫。
您可以看到新資料庫併發布SQL server資料庫,如下所示。
讓我們探索帶有更多規則和選項的高階選項。
選項有:
部署的行為
部署資料庫屬性。總是重新建立資料庫。如果可能發生資料丟失,則阻塞增量部署。在單使用者模式下執行部署指令碼。部署前備份資料庫。不要使用alter程式集語句來更新CLR型別。然後,在高階選項中單擊ok併發布資料庫。
現在,您的資料庫已經在SQL server中建立,您可以登入到SQL server並進行檢查,如下所示。
最後,我們成功地從Visual Studio、SQL server資料庫專案中建立了一個數據庫。
結論在本文中,展示瞭如何在Visual Studio中建立SQL server資料庫專案並匯入SQL資料庫。我們可以使用這個專案模板從Visual Studio本身匯入開發資料庫並最終釋出到UAT、產品或其他伺服器。此外,我們還探討了資料庫匯入和釋出過程中的一些高階選項。對於這個專案,我們有一些額外的有用選項或用例,比如比較和識別兩個資料庫(開發和生產)中的差異,然後我們可以生成更新的指令碼,或者直接從專案中更新。