Sdílet prostřednictvím


Tablediff Utility

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytický platformní systém (PDW)

Nástroj tablediff slouží k porovnání dat ve dvou tabulkách pro nekovergenci a je užitečný pro řešení potíží s nekonvergencí v topologii replikace. Tento nástroj lze použít z příkazového řádku nebo v dávkovém souboru k provedení následujících úloh:

  • Porovnejte každý řádek mezi zdrojovou tabulkou v instanci SQL Serveru, která funguje jako vydavatel replikace, a cílovou tabulku v jedné nebo více instancích SQL Serveru, které fungují jako odběratelé replikace.

  • Proveďte rychlé porovnání pouze porovnáním počtu řádků a schématu.

  • Proveďte porovnání na úrovni sloupců.

  • Vygenerujte Transact-SQL skript, který opraví nesrovnalosti na cílovém serveru a přenese zdrojové a cílové tabulky do konvergence.

  • Protokolujte výsledky do výstupního souboru nebo do tabulky v cílové databázi.

Poznámka:

Nástroj tablediff je součástí nástrojů pro replikaci SQL Serveru. V systému SQL Server 2022 (16.x) naleznete tablediff.exe ve výchozím umístění C:\Program Files\Microsoft SQL Server\160\COM po instalaci funkce replikace.

Syntaxe

tablediff
[ -? ] |
{
      -sourceserver source_server_name [ \instance_name ]
      -sourcedatabase source_database
      -sourcetable source_table_name
    [ -sourceschema source_schema_name ]
    [ -sourcepassword source_password ]
    [ -sourceuser source_login ]
    [ -sourcelocked ]
      -destinationserver destination_server_name [ \instance_name ]
      -destinationdatabase subscription_database
      -destinationtable destination_table
    [ -destinationschema destination_schema_name ]
    [ -destinationpassword destination_password ]
    [ -destinationuser destination_login ]
    [ -destinationlocked ]
    [ -b large_object_bytes ]
    [ -bf number_of_statements ]
    [ -c ]
    [ -dt ]
    [ -et table_name ]
    [ -f [ file_name ] ]
    [ -o output_file_name ]
    [ -q ]
    [ -rc number_of_retries ]
    [ -ri retry_interval ]
    [ -strict ]
    [ -t connection_timeouts ]
}

Argumenty

[ -? ]

Vrátí seznam podporovaných parametrů.

-sourceserver source_server_name[\instance_name]

Určuje název zdrojového serveru. Zadejte source_server_name pro výchozí instanci SQL Serveru. Zadejte source_server_name instance_name\ pro pojmenovanou instanci SQL Serveru.

-sourcedatabase source_database

Určuje název zdrojové databáze.

-sourcetable source_table_name

Určuje název zdrojové tabulky, která se kontroluje.

-sourceschema source_schema_name

Vlastník schématu zdrojové tabulky. Ve výchozím nastavení se předpokládá, že vlastník tabulky je dbo.

-sourcepassword source_password

Určuje heslo pro přihlášení použité pro připojení ke zdrojovému serveru pomocí ověřování SQL Serveru.

Důležité

Pokud je to možné, zadejte přihlašovací údaje zabezpečení za běhu. Pokud musíte přihlašovací údaje uložit do souboru skriptu, zabezpečte ho, aby se zabránilo neoprávněnému přístupu.

-sourceuser source_login

Určuje přihlášení použité pro připojení ke zdrojovému serveru pomocí ověřování SQL Serveru. Pokud není zadaný source_login , použije se při připojování ke zdrojovému serveru ověřování systému Windows. Pokud je to možné, použijte ověřování systému Windows.

-sourcelocked

Zamkne zdrojovou tabulku během porovnání pomocí TABLOCK nápověd k tabulce.HOLDLOCK

-destinationserver destination_server_name[\instance_name]

Určuje název cílového serveru. Zadejte destination_server_name pro výchozí instanci SQL Serveru. Zadejte <destination_server_name>\<instance_name> pojmenovanou instanci SQL Serveru.

-cílovádatabáze subscription_database

Určuje název cílové databáze.

-destinationtable destination_table

Určuje název cílové tabulky.

-destinationschema destination_schema_name

Vlastník schématu cílové tabulky. Ve výchozím nastavení se předpokládá, že vlastník tabulky je dbo.

-destinationpassword destination_password

Určuje heslo pro přihlášení použité pro připojení k cílovému serveru pomocí ověřování SQL Serveru.

Důležité

Pokud je to možné, zadejte přihlašovací údaje zabezpečení za běhu. Pokud musíte přihlašovací údaje uložit do souboru skriptu, zabezpečte ho, aby se zabránilo neoprávněnému přístupu.

-destinationuser destination_login

Určuje přihlášení použité pro připojení k cílovému serveru pomocí ověřování SQL Serveru. Pokud nezadáte destination_login, připojení používá ověřování systému Windows. Pokud je to možné, použijte ověřování systému Windows.

-destinationlocked

Zamkne cílovou tabulku během porovnání pomocí náznaků TABLOCK a HOLDLOCK.

-b large_object_bytes

Určuje počet bajtů, které se mají porovnat pro sloupce s velkými datovými typy objektů, mezi které patří text, ntext, obrázek, varchar(max), nvarchar(max) a varbinary(max). Výchozí hodnota pro large_object_bytes je velikost sloupce. Žádná data větší než large_object_bytes nejsou porovnávána.

-bf počet_výroků

Určuje počet příkazů Transact-SQL, které se mají při použití možnosti zapisovat do aktuálního souboru -f skriptu Transact-SQL. Když počet příkazů Transact-SQL překročí number_of_statements, vytvoří se nový soubor skriptu Transact-SQL.

-c

Porovnává rozdíly na úrovni sloupců.

-Dt

Pokud tabulka již existuje, zahodí výslednou tabulku zadanou table_name .

-et table_name

Určuje název výsledné tabulky, která se má vytvořit. Pokud tato tabulka již existuje, musíte ji použít -DT nebo operace selže.

-f [ file_name ]

Vygeneruje Transact-SQL skript, který přenese tabulku na cílovém serveru do konvergence s tabulkou na zdrojovém serveru. Volitelně můžete zadat název a cestu pro vygenerovaný soubor skriptu Transact-SQL. Pokud nezadáte file_name, nástroj vygeneruje soubor skriptu Transact-SQL v adresáři, ve kterém běží.

-o output_file_name

Určuje úplný název a cestu výstupního souboru.

-q

Provádí rychlé porovnání pouze porovnáním počtu řádků a schématu.

-rc počet_opakování

Kolikrát nástroj opakuje neúspěšnou operaci.

-ri retry_interval

Interval v sekundách, jak dlouho čekat mezi opakovanými pokusy.

-striktní

Porovnává zdrojové a cílové schéma výhradně.

-t časové limity připojení

Nastaví časový limit připojení v sekundách pro připojení ke zdrojovému serveru a cílovému serveru.

Návratová hodnota

Hodnota Popis
0 Úspěch
1 Kritická chyba
2 Rozdíly v tabulce

Poznámky

Nástroj tablediff nemůžete použít u serverů, které nejsou SQL Serverem.

Tabulky s sql_variant sloupci datového typu se nepodporují.

Nástroj tablediff ve výchozím nastavení podporuje následující mapování datových typů mezi zdrojovými a cílovými sloupci.

Datový typ zdroje Cílový datový typ
tinyint smallint, int nebo bigint
smallint int nebo bigint
int bigint
časová značka varbinary
varchar(max) text
nvarchar(max) ntext
varbinary(max) obrázek
text varchar(max)
ntext nvarchar(max)
obrázek varbinary(max)

-strict Tuto možnost použijte k zakázání těchto mapování a provedení přísného ověření.

Zdrojová tabulka v porovnání musí obsahovat alespoň jeden primární klíč, identitu nebo ROWGUID sloupec. Při použití -strict této možnosti musí mít cílová tabulka také primární klíč, identitu nebo ROWGUID sloupec.

Skript Transact-SQL vygenerovaný tak, aby cílovou tabulku přenesl do konvergence, neobsahuje následující datové typy:

  • varchar(max)
  • nvarchar(max)
  • varbinary(max)
  • časová značka
  • xml
  • text
  • ntext
  • obrázek

Dovolení

K porovnání tabulek potřebujete SELECT ALL oprávnění k objektům tabulky, které porovnáváte.

Pokud chcete tuto možnost použít -et , musíte být členem db_owner pevné databázové role nebo mít CREATE TABLE alespoň oprávnění v databázi předplatného a ALTER oprávnění ke schématu cílového vlastníka na cílovém serveru.

Chcete-li použít -dt tuto možnost, musíte být členem db_owner pevné databázové role nebo alespoň mít ALTER oprávnění ke schématu cílového vlastníka na cílovém serveru.

Pokud chcete použít možnosti -o nebo -f, musíte mít oprávnění k zápisu do zadaného umístění adresáře.