ホームページ データベース mysql チュートリアル 使用Change Tracking实现数据同步

使用Change Tracking实现数据同步

Jun 07, 2016 pm 05:21 PM
sql server

通常的做法是自定义应用程序使用比如触发器、timestamp 列和新表组合来存储跟踪信息,同事还需要自定义清除程序清除过时的数据。

在日常应用中经常会有这样的需求,需要Audit那些数据更改,,或者需要跟踪更改的数据实现对数据的同步。(最常见的应用如数据仓库数据同步,因为数据量巨大,需要将数据的更改同步到数据仓库,这种同步不要求实时)。

通常的做法是自定义应用程序使用比如触发器、timestamp 列和新表组合来存储跟踪信息,同事还需要自定义清除程序清除过时的数据。在SQL Server 2008以后提供了一个功能更改跟踪(Change Tracking).这一种轻量型解决方案(相对于自己自定义的程序,性能要高)为应用程序提供了一种有效的更改跟踪机制。

注意:用程序需要有关所有所做更改的信息以及所更改数据的中间值,则可能适合使用变更数据捕获,而不适合使用更改跟踪。

工作原理:为表配置了更改跟踪后,任何影响该表中的行的 DML 语句都将导致针对每个有所修改的行的更改跟踪信息被记录下来。更改信息会记录到SQL Server内部表中,可以使用查询到内部表,使用CHANGETABLE函数获得数据更改信息。

 下面是启动Change Tracking并且获得更改数据的脚本:

 --创建测试数据库和表

go

   

    20)NULL,

 

(

    [MAXID] ASC

--在数据库和表启动更改跟踪:

2

-- AUTO_CLEANUP = ON在经过指定的保持期后会自动删除更改跟踪信息。

ENABLE CHANGE_TRACKING

如果表没有主键启动更改跟踪会出现下面的错误:

Msg 4997, Level16, State 1, Line 1

Cannot enablechange tracking on table 'A'. Change tracking requires a primary key on thetable. Create a primary key on the table before enabling change tracking.

原因:主键列值是来自所跟踪的并记录更改信息的表中的唯一信息。这些值用于标识发生更改的行。要获取这些行的最新数据,应用程序可以使用主键列值联接源表和所跟踪的表。

(也可以在SSMS中启用更改跟踪)

 

 

 

-- 查询数据库和表更改跟踪信息

 

--返回与上次提交的事务相关联的版本

--指定的表中获取更改跟踪信息的最低版本

0

 

--插入测试数据并且查询跟踪信息最新版本号

 1

2

go

go

1

go

 

0

2

 

--将更改跟踪信息与原表信息关联获得最新数据(这些数据就是我们需要同步的数据)

2

GO

 

 

 

0

GO

 

CHANGETABLE返回值:

注意:

  • 如果执行了TRUNCATE TABLE或者Cleanup进程清理了Change Tracking记录,那么可以通过CHANGE_TRACKING_MIN_VALID_VERSION函数了解可获取的最小更新版本号。如果这个最小版本号比复制目的端记录的最近一次复制成功的最大版本号都高,则意味着源数据库已经丢失了一部份尚未复制的记录,也就代表目的系统需要重新初始化。
  • 对于UPDATE语句,如果在启用表的Change Tracking功能是设置了Track_Column_Updated选项为ON,Change Tracking会记录下UPDATE语句影响到字段信息,这个信息可以通过使用CHANGE_TRACKING_IS_COLUMN_IN_MASK函数解析,比如说要知道TestCT表的Name字段是否在版本2的UPDATE操作中被影响到,可以使用CHANGE_TRACKING_IS_COLUMN_IN_MASK(COLUMNPROPERTY(OBJECT_ID('TestCT'), 'Name', 'ColumnId'), SYS_CHANGE_COLUMNS)函数。
  •  

    更多信息参考MSDN:更改跟踪概述

    linux

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    Microsoft SQLサーバーとはどのようなソフトウェアですか? Microsoft SQLサーバーとはどのようなソフトウェアですか? Feb 28, 2023 pm 03:00 PM

    Microsoft SQL Server は、Microsoft によって発売されたリレーショナル データベース管理システムです。統合されたビジネス インテリジェンス (BI) ツールを使用してエンタープライズ レベルのデータ管理を提供する包括的なデータベース プラットフォームです。使いやすく、拡張性が高く、高いパフォーマンスを備えています。関連ソフトウェアとの統合度が高く、高い利点があります。 SQL Server データベース エンジンは、リレーショナル データと構造化データに対して、より安全で信頼性の高いストレージ機能を提供し、ユーザーがビジネス向けに可用性とパフォーマンスの高いデータ アプリケーションを構築および管理できるようにします。

    PDO を使用して Microsoft SQL Server データベースに接続する方法 PDO を使用して Microsoft SQL Server データベースに接続する方法 Jul 29, 2023 pm 01:49 PM

    PDO を使用して Microsoft SQL Server データベースに接続する方法の概要: PDO (PHPDataObjects) は、PHP が提供するデータベースにアクセスするための統合インターフェイスです。これには、データベースの抽象化レイヤーを実装したり、大量のコードを変更せずに異なるデータベース タイプを簡単に切り替えたりできるなど、多くの利点があります。この記事では、PDO を使用して Microsoft SQL Server データベースに接続する方法を紹介し、関連するコード例をいくつか示します。ステップ

    PHP および SQL Server データベースの開発 PHP および SQL Server データベースの開発 Jun 20, 2023 pm 10:38 PM

    インターネットの普及に伴い、Web サイトやアプリケーションの開発は多くの企業や個人の主要なビジネスになりました。 PHP と SQLServer データベースは 2 つの非常に重要なツールです。 PHP は動的な Web サイトの開発に使用できるサーバー側スクリプト言語であり、SQL Server は Microsoft によって開発されたリレーショナル データベース管理システムであり、幅広いアプリケーション シナリオを備えています。この記事では、PHPとSQL Serverの開発とそのメリット、デメリット、活用方法について説明します。まず、しましょう

    SQLサーバーかMySQLか?新しい調査により、データベースの最適な選択が明らかになりました。 SQLサーバーかMySQLか?新しい調査により、データベースの最適な選択が明らかになりました。 Sep 08, 2023 pm 04:34 PM

    SQLServer それとも MySQL?最新の調査により最適なデータベースの選択が明らかに 近年、インターネットやビッグデータの急速な発展に伴い、データベースの選択は企業や開発者にとって重要な課題となっています。多くのデータベースの中でも、最も一般的で広く使用されている 2 つのリレーショナル データベースである SQL Server と MySQL は、非常に物議を醸しています。では、SQLServer と MySQL のどちらを選択すればよいでしょうか?最新の研究により、この問題が明らかになりました。まず、

    SQL Server と PHP を接続する 5 つの方法の簡単な分析 SQL Server と PHP を接続する 5 つの方法の簡単な分析 Mar 21, 2023 pm 04:32 PM

    Web 開発では、PHP と MySQL の組み合わせが非常に一般的です。ただし、場合によっては、SQL Server などの他の種類のデータベースに接続する必要があります。この記事では、PHP を使用して SQL Server に接続する 5 つの異なる方法について説明します。

    SQL Server と MySQL: 高可用性アーキテクチャにはどちらのデータベースが適していますか? SQL Server と MySQL: 高可用性アーキテクチャにはどちらのデータベースが適していますか? Sep 10, 2023 pm 01:39 PM

    SQL Server と MySQL: 高可用性アーキテクチャにはどちらのデータベースが適していますか?今日のデータ主導の世界では、信頼性が高く安定したシステムを構築するために高可用性が必須の 1 つです。データのストレージと管理の中核コンポーネントとして、データベースの高可用性は企業の業務運営にとって極めて重要です。多くのデータベースの中で、SQLServer と MySQL が一般的な選択肢です。では、高可用性アーキテクチャの観点から見ると、どのデータベースがより適しているのでしょうか?この記事では 2 つを比較し、いくつかの提案を示します。

    SQL Server と MySQL の比較: 大規模なデータ処理にはどちらが適していますか? SQL Server と MySQL の比較: 大規模なデータ処理にはどちらが適していますか? Sep 09, 2023 am 09:36 AM

    SQLServer と MySQL は、現在非常に人気のある 2 つのリレーショナル データベース管理システム (RDBMS) です。どちらも大規模なデータを保存および管理するための強力なツールです。ただし、大規模なデータの処理に関してはいくつかの違いがあります。この記事では、大規模なデータ処理への適性に焦点を当てて、SQL Server と MySQL を比較します。まず、SQLServer と MySQL の基本的な特性を理解しましょう。 SQLServerはMicrosoftによって開発されました

    SQL Server と MySQL は競合します。最適なデータベース ソリューションを選択するにはどうすればよいでしょうか? SQL Server と MySQL は競合します。最適なデータベース ソリューションを選択するにはどうすればよいでしょうか? Sep 10, 2023 am 08:07 AM

    インターネットの継続的な発展に伴い、データベースの選択はますます重要になってきています。多くのデータベースの中でも、SQLServer と MySQL の 2 つは注目度の高いオプションです。 SQLServer は Microsoft によって開発されたリレーショナル データベース管理システムであり、MySQL はオープンソースのリレーショナル データベース管理システムです。では、SQLServer と MySQL の間で最適なデータベース ソリューションを選択するにはどうすればよいでしょうか?まず、これら 2 つのデータベースをパフォーマンスの観点から比較できます。 SQLサーバーが処理中です

    See all articles