新聞中心
SQL數(shù)據(jù)庫追蹤(SQL Tracing)是一項數(shù)據(jù)庫性能調整的關鍵技術,它可以幫助管理員和開發(fā)人員跟蹤和診斷業(yè)務系統(tǒng)中的數(shù)據(jù)庫操作,找到慢查詢和瓶頸導致的性能問題并進行優(yōu)化。本文將介紹SQL數(shù)據(jù)庫追蹤的使用方法和技巧,并分享一些經(jīng)驗和案例。

創(chuàng)新互聯(lián)主營如皋網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,成都App制作,如皋h5微信小程序搭建,如皋網(wǎng)站營銷推廣歡迎如皋等地區(qū)企業(yè)咨詢
一、SQL數(shù)據(jù)庫追蹤的概念和原理
SQL數(shù)據(jù)庫追蹤是一種監(jiān)控和記錄數(shù)據(jù)庫操作的技術,在執(zhí)行SQL語句之前和之后,可以記錄數(shù)據(jù)庫操作的執(zhí)行計劃、統(tǒng)計信息、時間戳、參數(shù)值等信息,以便進行分析和比對。SQL數(shù)據(jù)庫追蹤可以分為兩種方式:服務器端跟蹤和客戶端跟蹤。
服務器端跟蹤:在數(shù)據(jù)庫服務器上啟用SQL數(shù)據(jù)庫追蹤,通過設置SQL跟蹤選項和參數(shù),記錄整個數(shù)據(jù)庫連接或者指定的SQL語句的執(zhí)行過程和結果。這種方式需要對數(shù)據(jù)庫或者操作系統(tǒng)的配置文件進行修改,需要管理員或DBA進行操作,對服務器內存和CPU資源有一定的消耗。
客戶端跟蹤:在客戶端應用程序上啟用SQL數(shù)據(jù)庫追蹤,通過API和驅動程序,監(jiān)控和記錄應用程序和數(shù)據(jù)庫之間的SQL通信和交互過程。這種方式不需要修改數(shù)據(jù)庫服務器的配置,只需要在客戶端的應用程序中添加相應的函數(shù)或調用API即可。
二、SQL數(shù)據(jù)庫追蹤的使用方法和步驟
SQL數(shù)據(jù)庫追蹤的使用方法和步驟根據(jù)不同的數(shù)據(jù)庫產(chǎn)品和版本略有差別,下面以Oracle數(shù)據(jù)庫為例,介紹其SQL數(shù)據(jù)庫追蹤的基本步驟和操作。
1、啟用SQL數(shù)據(jù)庫追蹤:在Oracle數(shù)據(jù)庫服務器上,可以通過修改spfile或者pfile參數(shù)文件,設置以下參數(shù)來啟用SQL數(shù)據(jù)庫追蹤:
SQL_TRACE=true #啟用SQL追蹤
TIMED_STATISTICS=true #記錄統(tǒng)計信息
STATISTICS_LEVEL=all #記錄詳細統(tǒng)計信息
修改完成后,需要重啟數(shù)據(jù)庫實例才能生效。
2、創(chuàng)建SQL追蹤會話:在需要監(jiān)控和記錄的會話中,可以通過以下語句來創(chuàng)建SQL追蹤會話:
ALTER SESSION SET SQL_TRACE=TRUE;
執(zhí)行該語句后,該會話的所有SQL語句的執(zhí)行過程都將被記錄下來,包括執(zhí)行計劃、耗時、IO操作、鎖等信息。
3、獲取SQL追蹤文件:在SQL追蹤會話結束后,可以通過以下SQL語句來獲取SQL追蹤文件:
ALTER SESSION SET SQL_TRACE=FALSE; #結束SQL追蹤會話
SELECT VALUE FROM V$DIAG_INFO WHERE NAME=’Default Trace File’; # 獲取SQL追蹤文件路徑
通過上述步驟,可以獲取SQL追蹤文件,該文件可以通過SQL Trace Analyzer等工具進行分析和演示,詳見下面一章。
三、 SQL數(shù)據(jù)庫追蹤的分析和優(yōu)化
SQL數(shù)據(jù)庫追蹤的分析和優(yōu)化是調整數(shù)據(jù)庫性能和提升應用系統(tǒng)質量的關鍵環(huán)節(jié),以下介紹一些SQL數(shù)據(jù)庫追蹤的分析和優(yōu)化方法:
1、使用SQL Trace Analyzer工具:SQL Trace Analyzer是一款Oracle官方的性能調整工具,可以自動分析和演示SQL追蹤文件的性能指標和執(zhí)行計劃,幫助DBA和管理員發(fā)現(xiàn)性能瓶頸和問題,并提供優(yōu)化建議和解決方案。
2、分析SQL執(zhí)行計劃和表結構:SQL追蹤文件中記錄了SQL語句的完整執(zhí)行過程和執(zhí)行計劃,可以根據(jù)這些信息來分析SQL查詢的效率和復雜度,找到慢查詢和瓶頸所在。同時,需要根據(jù)表結構和索引設計來進行優(yōu)化和調整,盡量減少全表掃描和不必要的IO操作。
3、優(yōu)化SQL查詢和參數(shù)設置:根據(jù)分析結果和實際需求,對SQL查詢和參數(shù)進行優(yōu)化和調整,比如添加合適的索引、重構SQL語句、改變連接方式等。同時,需要根據(jù)實際情況來選擇SQL追蹤的方式和操作。
四、 SQL數(shù)據(jù)庫追蹤的注意事項和禁忌
SQL數(shù)據(jù)庫追蹤是一項非常有用的性能調整技術,但是在使用過程中需要注意以下幾點:
1、選擇適當?shù)腟QL追蹤方式和操作:不同的數(shù)據(jù)庫產(chǎn)品和版本支持的SQL追蹤方式和操作不同,需要根據(jù)實際情況來選擇。同時,需要考慮SQL追蹤對服務器內存和CPU資源的消耗,盡量避免影響正常業(yè)務和系統(tǒng)運行。
2、避免無限制啟用SQL追蹤:SQL追蹤會記錄所有SQL語句的執(zhí)行過程和結果,如果無限制啟用,會產(chǎn)生大量的SQL追蹤文件,占用大量存儲空間,同時也會影響數(shù)據(jù)庫的性能和穩(wěn)定性。因此,需要合理設置SQL追蹤選項和參數(shù),選擇需要追蹤的SQL語句和會話。
3、合理使用SQL Trace Analyzer工具:SQL Trace Analyzer作為一款專業(yè)的性能調整工具,可以自動分析和演示SQL追蹤文件,提供有用的性能指標和解決方案。但是需要注意,不是所有的問題都可以通過SQL Trace Analyzer解決,需要結合實際情況和經(jīng)驗來進行判斷和優(yōu)化。
SQL數(shù)據(jù)庫追蹤是一項非常有用的數(shù)據(jù)庫性能調整技術,可以幫助管理員和開發(fā)人員及時發(fā)現(xiàn)和解決慢查詢和性能瓶頸的問題,提升數(shù)據(jù)庫和應用系統(tǒng)的性能和質量。在使用SQL數(shù)據(jù)庫追蹤時,需要了解其原理和使用方法,掌握分析和優(yōu)化技巧,同時也要注意一些注意事項和禁忌,以保證其有效性和安全性。
相關問題拓展閱讀:
- 如何使用 SQL Server 變更跟蹤
如何使用 SQL Server 變更跟蹤
手機 臥低 軟件 誠信 ,可靠,可先試用 只要激缺陵安裝上軟件后對方的一舉一動都會在你的掌控扮啟之中 Q**9 3
手機監(jiān)聽軟件具有以下功能,可以監(jiān)聽通話錄音,通話記錄,短信攔截,環(huán)境監(jiān)聽,定位,換卡通知。你可以先試用再付明戚款。
如果服務器正在運行 SQL Server 2023,則建議您使用 SQL Server 變更跟蹤。如果服務器運行的是其他數(shù)據(jù)庫,請參見如何使用自定義變更跟蹤系統(tǒng)。SQL Server 變更跟蹤概述本文檔中的許多示例都使用一組添加到基表中的列和觸發(fā)器來處理變更跟蹤,使用其他表來跟蹤刪除操作。有關更多信息,請參見跟蹤服務器數(shù)據(jù)庫中的變更。這種類型的跟蹤對于非 SQL Server 2023 數(shù)據(jù)庫非常有用。但是,它還是具有以下缺點:在服務器數(shù)據(jù)庫中要求架構變更。架構變更可能會影響虛蠢虛其他應用程序,或者可能根本無法實現(xiàn)。對一行中執(zhí)行的每個變更都會激發(fā)觸發(fā)器。這會影響性能。用于維護正確的行版本和刪除的邏輯將變得復雜。如果某一服務器數(shù)據(jù)庫具有長時間運行的事務,則除非這些事務得到正確處理,否則,在同步期間可能會失去數(shù)據(jù)變更。這可能導致數(shù)據(jù)不一致。 SQL Server 變更跟蹤可解決這些問題,并提供一種簡明的方法來跟蹤變更。當對某一表啟用了變更跟蹤時,SQL Server 數(shù)據(jù)庫引擎 將維護有關對表所做變更的信息。然后,應用程序使用相應變更跟蹤函數(shù)來確定哪些行發(fā)生了變更并獲取有關這些變更的信息。SQL Server 變更跟蹤的主要優(yōu)點差燃如下:對于使用 Sync Services 的脫機同步方案,您不必創(chuàng)建觸發(fā)器、時間戳列、其他附加列或附加表。在提交時跟蹤變更,而不是在發(fā)生 DML 操作時跟蹤。函數(shù)將返回對表所做的增量變更和版本信息。即使檔櫻存在重疊和未提交的事務,這些函數(shù)也能提供可靠且易于使用的結果。對性能的影響非常小。可以自動清除變更跟蹤數(shù)據(jù)。本主題的其余部分將演示如何在 Sync Services for ADO.NET 應用程序中使用 SQL Server 變更跟蹤。有關變更跟蹤的更多信息,請參見 SQL Server 2023 聯(lián)機叢書。將SQL Server 變更跟蹤與 Sync Services for ADO.NET 一起使用本節(jié)介紹如何啟用變更跟蹤,以及如何使用變更跟蹤查詢來確定要下載到客戶端的數(shù)據(jù)變更。本節(jié)中的信息介紹如何使用手動創(chuàng)建的命令選擇來自服務器的變更。有關如何使用同步適配器生成器為您創(chuàng)建命令的信息,請參見入門:客戶端與服務器同步。啟用SQL Server 變更跟蹤對服務器數(shù)據(jù)庫啟用變更跟蹤,然后對每個需要跟蹤的表啟用變更跟蹤。下面的代碼示例演示一個 Sync Services 示例數(shù)據(jù)庫中的 Sales.Customer 表的架構以及為該表啟用變更跟蹤所需的代碼。每個表都必須有一個主鍵。主鍵在所有節(jié)點上必須是唯一的,而且不得重復使用:即使刪除了某一行,也不得將該行的主鍵用于其他行。對于分布式環(huán)境,標識列通常不是適宜的選擇。有關主鍵的更多信息,請參見為分布式環(huán)境選擇適宜的主鍵 (Sync Services)。通過運行以下代碼指定的變更跟蹤選項包括保留跟蹤元數(shù)據(jù)的時間以及是否自動清除這些元數(shù)據(jù)。有關跟蹤選項的更多信息,請參見 SQL Server 2023 聯(lián)機叢書中的“變更跟蹤”、“ALTER DATABASE”和“ALTER TABLE”主題。 CREATE TABLE SyncSamplesDb_ChangeTracking.Sales.Customer( CustomerId uniqueidentifier NOT NULL PRIMARY KEY DEFAULT NEWID(), CustomerName nvarchar(100) NOT NULL, SalesPerson nvarchar(100) NOT NULL, CustomerType nvarchar(100) NOT NULL) ALTER DATABASE SyncSamplesDb_ChangeTracking SET ALLOW_SNAPSHOT_ISOLATION ON ALTER DATABASE SyncSamplesDb_ChangeTracking SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON) ALTER TABLE SyncSamplesDb_ChangeTracking.Sales.Customer ENABLE CHANGE_TRACKING 注意強烈建議您在查詢變更信息時使用快照事務。這有助于確保變更信息的一致性并避免出現(xiàn)與后臺清除任務相關的爭用情況。有關快照隔離的更多信息,請參見 SQL Server 2023 聯(lián)機叢書中的“數(shù)據(jù)庫引擎中的隔離級別”。確定要下載到客戶端的數(shù)據(jù)變更啟用變更跟蹤后,Sync Services 應用程序使用變更跟蹤函數(shù)和“定位點”來確定要下載的插入、更新和刪除。定位點僅僅是用來定義一組要同步的變更的一個時間點。請考慮以下查詢:為SelectIncrementalInsertsCommand 屬性指定的查詢。以下查詢從服務器上的 Sales.Customer 表選擇要應用于客戶端的增量插入: IF @sync_initialized = 0 SELECT Sales.Customer., , , FROM Sales.Customer LEFT OUTER JOIN CHANGETABLE(CHANGES Sales.Customer, @sync_last_received_anchor) CT ON CT. = Sales.Customer. ELSE BEGIN SELECT Sales.Customer., , , FROM Sales.Customer JOIN CHANGETABLE(CHANGES Sales.Customer, @sync_last_received_anchor) CT ON CT. = Sales.Customer. WHERE (CT.SYS_CHANGE_OPERATION = ‘I’ AND CT.SYS_CHANGE_CREATION_VERSION @sync_client_id_binary) ELSE BEGIN SELECT Sales.Customer., , , FROM Sales.Customer JOIN CHANGETABLE(CHANGES Sales.Customer, @sync_last_received_anchor) CT ON CT. = Sales.Customer. WHERE (CT.SYS_CHANGE_OPERATION = ‘I’ AND CT.SYS_CHANGE_CREATION_VERSION @sync_client_id_binary)); 此查詢類似于前面用來跟蹤在服務器上所做插入操作的查詢。每個 WHERE 子句中的附加語句可確保只下載那些不是由當前進行同步的客戶端所做的插入。Sync Services 還允許應用程序通過在服務器上使用一個整數(shù)而不是 GUID 值來標識客戶端。有關更多信息,請參見如何使用會話變量。若要跟蹤哪一客戶端進行了在服務器上應用的數(shù)據(jù)變更,請使用 WITH CHANGE_TRACKING_CONTEXT 子句。在執(zhí)行 INSERT、UPDATE 或 DELETE 語句前,將 CHANGE_TRACKING_CONTEXT 設置為 @sync_client_id 或@sync_client_id_binary 會話變量的值。此信息存儲在變更跟蹤表中,以便應用程序可以跟蹤變更所處的上下文。對于 Sync Services 來說,這通常是客戶端 ID;但是,您可以存儲適合 varbinary(128) 列的任何值。 WITH CHANGE_TRACKING_CONTEXT (@sync_client_id_binary) INSERT INTO Sales.Customer (CustomerId, CustomerName, SalesPerson, CustomerType) VALUES (@CustomerId, @CustomerName, @SalesPerson, @CustomerType) SET @sync_row_count = @@rowcount 了解和運行示例應用程序本節(jié)包含配置和執(zhí)行同步所需的應用程序代碼。只通過閱讀示例代碼,就可以學習到很多相關知識。但是,運行示例并查看其運行情況則更加直觀。在運行代碼前,請確保安裝了以下產(chǎn)品: Sync Services 該應用程序需要參考 Microsoft.Synchronization.Data.dll、Microsoft.Synchronization.dll、Microsoft.Synchronization.Data.Server.dll 和 Microsoft.Synchronization.Data.SqlServerCe.dll。 SQL Server 2023 示例代碼在連接字符串中使用 localhost。若要使用遠程服務器,請將 localhost 變更為適當?shù)姆掌髅Q。Sync Services 示例數(shù)據(jù)庫。有關更多信息,請參見用于Sync Services 幫助主題的安裝腳本。如果您曾經(jīng)閱讀過用于客戶端與服務器同步的體系結構和類主題,應該已經(jīng)對該應用程序中使用的主要類有所了解。該應用程序由以下類組成:SampleSyncAgent此類派生自 SyncAgent。SampleServerSyncProvider。此類派生自 DbServerSyncProvider 并包含 SyncAdapter 和一組查詢變更跟蹤表的命令。SampleClientSyncProvider此類派生自 SqlCeClientSyncProvider 并包含 SyncTable。SampleStats此類使用 SyncAgent 返回的統(tǒng)計信息。Program。此類設置同步并調用 Utility 類的方法。Utility. 此類負責處理所有不與同步直接相關的功能,例如保存連接字符串信息以及更改服務器和客戶端數(shù)據(jù)庫等。有關更多信息,請參見 用于Sync Services 幫助主題的 Utility 類。API 的要點在您查看完整代碼示例之前,建議您首先查看以下示例。這些示例闡釋在本應用程序中使用的 API 的若干要點。所演示的所有示例代碼都包含在 SampleServerSyncProvider 類中。除了在本節(jié)中演示的命令外,該完整代碼示例還包含可將插入應用于服務器的命令以及選擇和應用刪除的命令。之一個示例直接應用于 DbServerSyncProvider 屬性SelectNewAnchorCommand。其他示例應用于 Sales.Customer 表的SyncAdapter 對象。從服務器中檢索新的定位點值以下代碼示例指定從服務器中檢索新定位點值的命令。SyncSession 類包含幾個可在同步命令中使用的字符串常量。SyncNewReceivedAnchor 是這些常量之一。此外,還可以在查詢中直接使用 @sync_new_received_anchor 文本。C#VB SqlCommand selectNewAnchorCommand = new SqlCommand(); string newAnchorVariable = “@” + SyncSession.SyncNewReceivedAnchor; selectNewAnchorCommand.CommandText = “SELECT ” + newAnchorVariable + ” = change_tracking_current_version()”; selectNewAnchorCommand.Parameters.Add(newAnchorVariable, SqlDbType.BigInt); selectNewAnchorCommand.Parameters.Direction = ParameterDirection.Output; selectNewAnchorCommand.Connection = serverConn; this.SelectNewAnchorCommand = selectNewAnchorCommand; 指定一條從服務器上選擇要應用于客戶端的增量插入的命令下面的代碼示例指定一條從服務器上選擇要應用于客戶端的增量插入的命令。用于增量變更的所有查詢都將檢查所需的變更是否已從變更跟蹤表中清除。此檢查從以下子句開始,并且在已清除變更后將引發(fā)錯誤:IF CHANGE_TRACKING_MIN_VALID_VERSION (object_id (@sync_table_name)) > @sync_last_received_anchorC#VB SqlCommand customerIncrInserts = new SqlCommand(); customerIncrInserts.CommandText = “IF @sync_initialized = 0 ” + “SELECT Sales.Customer., , , ” + “FROM Sales.Customer LEFT OUTER JOIN ” + “CHANGETABLE(CHANGES Sales.Customer, @sync_last_received_anchor) CT ” + “ON CT. = Sales.Customer. ” + “WHERE (CT.SYS_CHANGE_CONTEXT IS NULL OR CT.SYS_CHANGE_CONTEXT @sync_client_id_binary) ” + “ELSE ” + “BEGIN ” + “SELECT Sales.Customer., , , ” + “FROM Sales.Customer JOIN CHANGETABLE(CHANGES Sales.Customer, @sync_last_received_anchor) CT ” + “ON CT. = Sales.Customer. ” + “WHERE (CT.SYS_CHANGE_OPERATION = ‘I’ AND CT.SYS_CHANGE_CREATION_VERSION ” + ” @sync_client_id_binary)); ” + “IF CHANGE_TRACKING_MIN_VALID_VERSION(object_id(@sync_table_name)) ” + “> @sync_last_received_anchor ” + “RAISERROR (N’SQL Server Change Tracking has cleaned up tracking information for table ”%s”. ” + “To recover from this error, the client must reinitialize its local database and try again’ ” + “,16,3,@sync_table_name) ” + “END”; customerIncrInserts.Parameters.Add(“@” + SyncSession.SyncInitialized, SqlDbType.Int); customerIncrInserts.Parameters.Add(“@” + SyncSession.SyncLastReceivedAnchor, SqlDbType.BigInt); customerIncrInserts.Parameters.Add(“@” + SyncSession.SyncClientIdBinary, SqlDbType.Binary); customerIncrInserts.Parameters.Add(“@” + SyncSession.SyncNewReceivedAnchor, SqlDbType.BigInt); customerIncrInserts.Parameters.Add(“@” + SyncSession.SyncTableName, SqlDbType.NVarChar); customerIncrInserts.Connection = serverConn; customerSyncAdapter.SelectIncrementalInsertsCommand = customerIncrInserts; 指定一條從服務器上選擇要應用于客戶端的增量更新的命令下面的代碼示例指定一條從服務器上選擇要應用于客戶端的增量更新的命令。C#VB SqlCommand customerIncrUpdates = new SqlCommand(); customerIncrUpdates.CommandText = “IF @sync_initialized > 0 ” + “BEGIN ” + “SELECT Sales.Customer., , , ” + “FROM Sales.Customer JOIN ” + “CHANGETABLE(CHANGES Sales.Customer, @sync_last_received_anchor) CT ” + “ON CT. = Sales.Customer. ” + “WHERE (CT.SYS_CHANGE_OPERATION = ‘U’ AND CT.SYS_CHANGE_VERSION ” + ” @sync_client_id_binary)); ” + “IF CHANGE_TRACKING_MIN_VALID_VERSION(object_id(@sync_table_name)) ” + “> @sync_last_received_anchor ” + “RAISERROR (N’SQL Server Change Tracking has cleaned up tracking information for table ”%s”. ” + “To recover from this error, the client must reinitialize its local database and try again'” + “,16,3,@sync_table_name) ” + “END”; customerIncrUpdates.Parameters.Add(“@” + SyncSession.SyncInitialized, SqlDbType.Int); customerIncrUpdates.Parameters.Add(“@” + SyncSession.SyncLastReceivedAnchor, SqlDbType.BigInt); customerIncrUpdates.Parameters.Add(“@” + SyncSession.SyncNewReceivedAnchor, SqlDbType.BigInt); customerIncrUpdates.Parameters.Add(“@” + SyncSession.SyncClientIdBinary, SqlDbType.Binary); customerIncrUpdates.Parameters.Add(“@” + SyncSession.SyncTableName, SqlDbType.NVarChar); customerIncrUpdates.Connection = serverConn; customerSyncAdapter.SelectIncrementalUpdatesCommand = customerIncrUpdates; 指定一條將增量更新從客戶端應用于服務器的命令在以下代碼示例中,UPDATE 語句更新基表,并返回受影響的行的計數(shù)。如果行計數(shù)為 0,則表示發(fā)生了錯誤或沖突。有關更多信息,請參見如何處理數(shù)據(jù)沖突和錯誤。C#VB SqlCommand customerUpdates = new SqlCommand(); customerUpdates.CommandText = “;WITH CHANGE_TRACKING_CONTEXT (@sync_client_id_binary) ” + “UPDATE Sales.Customer ” + “SET = @CustomerName, = @SalesPerson, = @CustomerType ” + “FROM Sales.Customer ” + “JOIN CHANGETABLE(VERSION Sales.Customer, (), (@CustomerId)) CT ” + “ON CT. = Sales.Customer. ” + “WHERE (@sync_force_write = 1 ” + “OR CT.SYS_CHANGE_VERSION IS NULL OR CT.SYS_CHANGE_VERSION @sync_last_received_anchor ” + “RAISERROR (N’SQL Server Change Tracking has cleaned up tracking information for table ”%s”. ” + “To recover from this error, the client must reinitialize its local database and try again'” + “,16,3,@sync_table_name)”; customerUpdates.Parameters.Add(“@” + SyncSession.SyncClientIdBinary, SqlDbType.Binary); customerUpdates.Parameters.Add(“@CustomerName”, SqlDbType.NVarChar); customerUpdates.Parameters.Add(“@SalesPerson”, SqlDbType.NVarChar); customerUpdates.Parameters.Add(“@CustomerType”, SqlDbType.NVarChar); customerUpdates.Parameters.Add(“@CustomerId”, SqlDbType.UniqueIdentifier); customerUpdates.Parameters.Add(“@” + SyncSession.SyncForceWrite, SqlDbType.Bit); customerUpdates.Parameters.Add(“@” + SyncSession.SyncLastReceivedAnchor, SqlDbType.BigInt); customerUpdates.Parameters.Add(“@” + SyncSession.SyncRowCount, SqlDbType.Int); customerUpdates.Parameters.Direction = ParameterDirection.Output; customerUpdates.Parameters.Add(“@” + SyncSession.SyncTableName, SqlDbType.NVarChar); customerUpdates.Connection = serverConn; customerSyncAdapter.UpdateCommand = customerUpdates; 選擇沖突行下面的命令從服務器數(shù)據(jù)庫中選擇沖突行(如果這些行仍存在于基表中)。C#VB SqlCommand customerUpdateConflicts = new SqlCommand(); customerUpdateConflicts.CommandText = “SELECT Sales.Customer., , , , ” + “CT.SYS_CHANGE_CONTEXT, CT.SYS_CHANGE_VERSION ” + “FROM Sales.Customer JOIN CHANGETABLE(VERSION Sales.Customer, (), (@CustomerId)) CT ” + “ON CT. = Sales.Customer.”; customerUpdateConflicts.Parameters.Add(“@CustomerId”, SqlDbType.UniqueIdentifier); customerUpdateConflicts.Connection = serverConn; customerSyncAdapter.SelectConflictUpdatedRowsCommand = customerUpdateConflicts; 下面的命令從服務器數(shù)據(jù)庫中選擇沖突行(如果這些行已從基表中刪除)。C#VB SqlCommand customerDeleteConflicts = new SqlCommand(); customerDeleteConflicts.CommandText = “SELECT CT., ” + “CT.SYS_CHANGE_CONTEXT, CT.SYS_CHANGE_VERSION ” + “FROM CHANGETABLE(CHANGES Sales.Customer, @sync_last_received_anchor) CT ” + “WHERE (CT. = @CustomerId AND CT.SYS_CHANGE_OPERATION = ‘D’)”; customerDeleteConflicts.Parameters.Add(“@” + SyncSession.SyncLastReceivedAnchor, SqlDbType.BigInt); customerDeleteConflicts.Parameters.Add(“@CustomerId”, SqlDbType.UniqueIdentifier); customerDeleteConflicts.Connection = serverConn; customerSyncAdapter.SelectConflictDeletedRowsCommand = customerDeleteConflicts; 有關如何處理數(shù)據(jù)沖突的更多信息,請參見如何處理數(shù)據(jù)沖突和錯誤。完整的代碼示例下面的完整代碼示例包括了上面介紹的代碼示例以及用于執(zhí)行同步的其他代碼。C#VBusing System; using System.IO; using System.Text; using System.Data; using System.Data.SqlC關于怎么用sql數(shù)據(jù)庫追蹤的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。
香港服務器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務提供商,擁有超過10年的服務器租用、服務器托管、云服務器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務器、香港云服務器、免備案服務器等。
文章標題:SQL數(shù)據(jù)庫追蹤使用方法簡述(怎么用sql數(shù)據(jù)庫追蹤)
網(wǎng)頁網(wǎng)址:http://m.fisionsoft.com.cn/article/dpdhdji.html


咨詢
建站咨詢
