2017-10-11 72 views
1

環境實現tSQLt框架與數據庫是SQL TFS項目

  • SQL Server的一部分 - 的IaaS。

  • TFS部署建立和SQL文件部署到相應的數據庫

方案

  • 我有一個TFS SQL項目爲我的數據庫。我們在TFS SQL Project中進行更改,並使用TFS構建部署這些更改。

  • TFS Build通過比較我的 數據庫和TFS SQL Project來生成差異腳本.TFS Build生成特定於環境的腳本。

  • 基本上,如果對象是不存在於數據庫中,但在SQL項目存在,那麼它就會產生創建報表,如果對象是存在於數據庫中,但在SQL項目缺少那麼它將 生成掉落語句

問題

  • 我想用我的數據庫實現tSQLt框架。通過考慮上述場景,我們可以遵循哪些最佳實踐?

  • 基本上 - 如果我們在SQL項目中創建對象,那麼我們將部署這些tsqlt對象直到PROD。哪種做法不好?

+0

你是在談論TFS SQL或SSDT項目(Visual Studio中的簡單數據庫項目)?我不確定TFS SQL是什麼意思...... –

+0

這是SSDT項目(Visual Studio的數據庫項目) –

+0

@datacentricity已經給出正確答案了 –

回答

2

如果您認爲您不應該將tSQLt框架或相關的單元測試部署到生產環境中,那麼您是正確的。

您正在尋找的解決方案是複合材料項目。您的解決方案大概已經擁有一個包含所有代碼的數據庫項目 - 例如稱爲MyDb。您需要將另一個數據庫項目添加到同一個解決方案中 - 您可以將其稱爲MyDb.tests(儘管名稱不重要)。第二個數據庫將包含tSQLt框架和所有測試。這是一個非常快人一步一步:

  1. 在沙箱稱爲MyDb.tests創建一個空數據庫,並添加 的tSQLt框架,這個數據庫
  2. 在Visual Studio中,導入從MyDb.tests的tSQLt對象到您的解決方案中的新的MyDb.tests數據庫項目中。或者,您可以創建tSQLt數據庫的dacpac並引用該數據庫。 個人而言,在導入時,我通常選擇按 架構對對象進行分組,因爲這樣可以很好地按照測試類對項目進行排序。
  3. 仍然在Visual Studio中,在MyDb.tests中,將數據庫引用添加到 「master」然後將另一個數據庫引用添加到您的解決方案中的MyDb數據庫 項目。確保你指定了相同的服務器,相同的數據庫 。開始向MyDb.tests添加測試,同時繼續到 在MyDb中編寫您的生產代碼。
  4. 當您將MyDb.Tests構建或發佈到您的沙盒時,生成的 數據庫將包含來自MyDb的tSQLt框架,您的測試和所有 對象和代碼。
  5. 在MyDb.tests中,您甚至可以添加一個後期部署腳本,其中 包含對tSQLt.RunAll的調用,以便您每次重新啓動MyDb.tests項目時都會運行 。

當您開始部署到測試,UAT或生產時,您只需從MyDb項目構建和發佈,並且不包含任何tSQLt框架或測試。

還有比這更給它一點 - 特別是如果你喜歡在SSMS來開發,然後導入您的對象回來到Visual Studio,但這裏有幾個鏈接,可以幫助:

https://kzhendev.wordpress.com/2014/01/08/setting-up-ssdt-database-projects-and-tsqlt/

https://www.red-gate.com/simple-talk/sql/sql-tools/sql-server-data-tools-ssdt-and-database-references/

+0

非常感謝。 –

相關問題