當前位置:首頁 » 操作系統 » 資料庫單元

資料庫單元

發布時間: 2022-12-27 09:37:58

⑴ 如何:編寫在單個事務范圍內運行的資料庫單元測試

如果您使用此方法,則可以在測試結束之後回滾在測試過程中執行的任何更改。下面的過程說明了具體的做法:在使用 BEGIN TRANSACTION 和ROLLBACK TRANSACTION 的Transact-SQL 測試腳本中創建事務。為某個測試類中的單個測試方法創建一個事務。為給定測試類中的所有測試方法創建一個事務。系統必備組件對於本主題中的某些過程,運行單元測試的計算機必須正在運行 Distributed Transaction Coordinator 服務。有關更多信息,請參見本主題末尾的過程。使用Transact-SQL 創建事務使用Transact-SQL 創建事務在資料庫單元測試設計器中打開單元測試。指定要創建事務的腳本類型。例如,可以指定預先測試、測試或後期測試。在Transact-SQL 編輯器中輸入測試腳本。插入BEGIN TRANSACTION 和ROLLBACK TRANSACTION 語句,如下面的簡單示例所示。此示例使用名為 OrderDetails 並包含 50 行數據的資料庫表:BEGIN TRANSACTION TestTransaction UPDATE "OrderDetails" set Quantity = Quantity + 10 IF @@ROWCOUNT!=50 RAISERROR('Row count does not equal 50',16,1) ROLLBACK TRANSACTION TestTransaction注意在執行 COMMIT TRANSACTION 語句之後不能對事務進行回滾。有關ROLLBACK TRANSACTION 如何與存儲過程和觸發器一起使用的更多信息,請參見 Microsoft 網站上的 ROLLBACK TRANSACTION (Transact-SQL)。為單個測試方法創建事務在該示例中,在使用 TransactionScope 類型時,會使用環境事務。默認情況下,「執行連接」和「特權連接」將不使用環境事務,因為這些連接是在執行該方法之前創建的。SqlConnection 具有一個 EnlistTransaction 方法,該方法將活動連接與某個事務相關聯。環境事務在創建之後會自行注冊為當前的事務,您可以通過 Current 屬性來訪問它。在該示例中,環境事務在釋放之後進行回滾。如果要提交在運行單元測試時進行的任何更改,則必須調用 Complete 方法。為單個測試方法創建事務在「解決方案資源管理器」中,右擊測試項目中的「引用」節點,然後單擊「添加引用」。將顯示"添加引用"對話框。單擊「.NET」選項卡。在程序集列表中,單擊「System.Transactions」,然後單擊「確定」。打開單元測試的 Visual Basic 或 C# 文件。包裝預先測試、測試和後期測試操作,如下面的 Visual Basic 代碼示例所示: <TestMethod()> _ Public Sub dbo_InsertTable1Test() Using ts as New System.Transactions.TransactionScope( System.Transactions.TransactionScopeOption.Required) ExecutionContext.Connection.EnlistTransaction(Transaction.Current) PrivilegedContext.Connection.EnlistTransaction(Transaction.Current) Dim testActions As DatabaseTestActions = Me.dbo_InsertTable1TestData 'Execute the pre-test script ' System.Diagnostics.Trace.WriteLineIf((Not (testActions.PretestAction) Is Nothing), "Executing pre-test script...") Dim pretestResults() As ExecutionResult = TestService.Execute(Me.PrivilegedContext, Me.PrivilegedContext, testActions.PretestAction) 'Execute the test script System.Diagnostics.Trace.WriteLineIf((Not (testActions.TestAction) Is Nothing), "Executing test script...") Dim testResults() As ExecutionResult = TestService.Execute(ExecutionContext, Me.PrivilegedContext, testActions.TestAction) 'Execute the post-test script ' System.Diagnostics.Trace.WriteLineIf((Not (testActions.PosttestAction) Is Nothing), "Executing post-test script...") Dim posttestResults() As ExecutionResult = TestService.Execute(Me.PrivilegedContext, Me.PrivilegedContext, testActions.PosttestAction) 'Because the transaction is not explicitly committed, it 'is rolled back when the ambient transaction is 'disposed. 'To commit the transaction, remove the comment delimiter 'from the following statement: 'ts.Complete() End Sub Private dbo_InsertTable1TestData As DatabaseTestActions注意如果使用的是 Visual Basic,則除了 Imports Microsoft.VisualStudio.TestTools.UnitTesting、Imports Microsoft.VisualStudio.TeamSystem.Data.UnitTesting 和Imports Microsoft.VisualStudio.TeamSystem.Data.UnitTest.Conditions,還必須添加 Imports System.Transactions。如果使用的是 Visual C#,則除了 Microsoft.VisualStudio.TestTools、Microsoft.VisualStudio.TeamSystem.Data.UnitTesting 和 Microsoft.VisualStudio.TeamSystem.Data.UnitTesting.Conditions 的 using 語句,還必須添加 using System.Transactions。還必須在這些程序集中添加對項目的引用。為某個測試類中的所有測試方法創建一個事務為某個測試類中的所有測試方法創建一個事務打開單元測試的 Visual Basic 或 C# 文件。在TestInitialize 中創建事務,並在 TestCleanup 中釋放它,如下面的 Visual C# 代碼示例所示:TransactionScope _trans; [TestInitialize()] public void Init() { _trans = new TransactionScope(); base.InitializeTest(); } [TestCleanup()] public void Cleanup() { base.CleanupTest(); _trans.Dispose(); } [TestMethod()] public void TransactedTest() { DatabaseTestActions testActions = this.DatabaseTestMethod1Data; // Execute the pre-test script // System.Diagnostics.Trace.WriteLineIf((testActions.PretestAction != null), "Executing pre-test script..."); ExecutionResult[] pretestResults = TestService.Execute(this.PrivilegedContext, this.PrivilegedContext, testActions.PretestAction); // Execute the test script // System.Diagnostics.Trace.WriteLineIf((testActions.TestAction != null), "Executing test script..."); ExecutionResult[] testResults = TestService.Execute(this.ExecutionContext, this.PrivilegedContext, testActions.TestAction); // Execute the post-test script // System.Diagnostics.Trace.WriteLineIf((testActions.PosttestAction != null), "Executing post-test script..."); ExecutionResult[] posttestResults = TestService.Execute(this.PrivilegedContext, this.PrivilegedContext, testActions.PosttestAction); }啟動Distributed Transaction Coordinator 服務本主題中的某些過程使用 System.Transactions 程序集內的類型。在按照這些過程操作之前,必須確保要運行單元測試的計算機上正在運行 Distributed Transaction Coordinator 服務。否則,測試將失敗,並出現下面的錯誤消息:「測試方法 項目名稱.測試名稱.方法名稱 引發異常: System.Data.SqlClient.SqlException: 伺服器『計算機名稱』上的 MSDTC 不可用」。啟動Distributed Transaction Coordinator 服務打開「控制面板」。在「控制面板」中打開「管理工具」。在「管理工具」中打開「服務」。在「服務」窗格中,右擊 「Distributed Transaction Coordinator」 服務,再單擊「啟動」。該服務的狀態應當更新為「已啟動」。現在應當能夠運行那些使用 System.Transactions 的單元測試。重要事項即使您啟動了分布式事務處理控制器服務,仍然可能出現以下錯誤:System.Transactions.: Network access for Distributed Transaction Manager (MSDTC) has been disabled. Please enable DTC for network access in the security configuration for MSDTC using the Component Services Administrative tool. ---> System.Runtime.InteropServices.COMException: The transaction manager has disabled its support for remote/network transactions. (Exception from HRESULT: 0x8004D024)。如果出現此錯誤,您必須為網路訪問配置分布式事務處理控制器。有關更多信息,請參見啟用網路 DTC 訪問 。

⑵ 資料庫的最小單元是什麼

資料庫最小的單元是:欄位。
原因:在關系型資料庫系統(RDBMS)中,每個資料庫是由一個或者多個數據表組成的,數據表則是由一行或多行的記錄組成的,一行或者一條記錄則是由一個或者多個欄位組成的。所以最小單元是欄位。

⑶ 資料庫中文檔的組成單元是什麼

記錄是資料庫的構成單元,一個記錄的相關數據被看作一個整體的集合。

⑷ 什麼是分布式資料庫

分布式計算機系統所支撐的分布式資料庫是資料庫技術與計算機網路技術相結合的產物。與常見的集中式資料庫相比,雖然分布式資料庫的數據分散存儲在網路上的各點,但它可以為網上所有的用戶所共享,任何地方的合法用戶都可以十分方便地獲取和處理所需的數據,就像數據在他們本地的計算機上一樣。

熱點內容
功夫特牛腳本 發布:2025-05-11 00:32:37 瀏覽:340
autojs腳本代碼 發布:2025-05-11 00:32:35 瀏覽:936
spl編程 發布:2025-05-11 00:25:14 瀏覽:64
linux搭建android開發環境 發布:2025-05-11 00:18:45 瀏覽:947
web本地存儲 發布:2025-05-11 00:13:33 瀏覽:360
為什麼暗格里的密碼搜不到了 發布:2025-05-11 00:13:31 瀏覽:942
oracle存儲過程使用變數 發布:2025-05-11 00:10:07 瀏覽:741
用安卓下載蘋果的軟體叫什麼 發布:2025-05-11 00:08:22 瀏覽:115
斷牙腳本 發布:2025-05-11 00:04:21 瀏覽:68
sim卡的密碼怎麼設置密碼 發布:2025-05-10 23:41:09 瀏覽:718