Megosztás:


tablediff segédprogram

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

A tablediff segédprogram két táblában lévő adatok összehasonlítására szolgál a nem konvergenciához, és hasznos a replikációs topológiában a nem konvergenciával kapcsolatos hibák elhárításához. Ez a segédprogram a parancssorból vagy egy kötegfájlból használható a következő feladatok végrehajtásához:

  • Hasonlítsa össze az egyes sorokat a replikációs közzétevőként működő SQL Server-példány forrástáblái és a replikációs előfizetőként működő SQL Server egy vagy több példányának céltáblája között.

  • Gyors összehasonlítást végezhet csak a sorok számának és sémájának összehasonlításával.

  • Oszlopszintű összehasonlítások végrehajtása.

  • Hozzon létre egy Transact-SQL szkriptet a célkiszolgáló eltéréseinek kijavításához és a forrás- és céltáblák konvergenciájához.

  • Naplózza az eredményeket egy kimeneti fájlba vagy egy táblába a céladatbázisban.

Megjegyzés:

A tablediff segédprogram az SQL Server replikációs eszközeinek része. Az SQL Server 2022 -ben (16.x) a replikációs szolgáltatás telepítése után az alapértelmezett helyen tablediff.exe találhatóC:\Program Files\Microsoft SQL Server\160\COM.

Szemantika

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 ]
}

Érvek

[ -? ]

A támogatott paraméterek listáját adja vissza.

-sourceserver source_server_name[\instance_name]

Megadja a forráskiszolgáló nevét. Adja meg az SQL Server alapértelmezett példányának source_server_name . Adja meg a source_server_name\instance_name az SQL Server egy elnevezett példányához.

-sourcedatabase source_database

Megadja a forrásadatbázis nevét.

-sourcetable source_table_name

Az ellenőrzött forrástábla nevét adja meg.

-forrásséma source_schema_name

A forrástábla sématulajdonosa. Alapértelmezés szerint a tábla tulajdonosa dbo lesz.

-sourcepassword source_password

Megadja a forráskiszolgálóhoz sql server-hitelesítéssel való csatlakozáshoz használt bejelentkezés jelszavát.

Fontos

Ha lehetséges, adja meg a biztonsági hitelesítő adatokat futásidőben. Ha a hitelesítő adatokat szkriptfájlban kell tárolnia, a jogosulatlan hozzáférés megakadályozása érdekében gondoskodjon a fájl védelméről.

-sourceuser source_login

Megadja a forráskiszolgálóhoz sql server-hitelesítéssel való csatlakozáshoz használt bejelentkezést. Ha source_login nincs megadva, akkor a rendszer Windows-hitelesítést használ a forráskiszolgálóhoz való csatlakozáskor. Ha lehetséges, windowsos hitelesítést használjon.

-sourcelocked

Az összehasonlítás során zárolja a forrástáblát a TABLOCK és HOLDLOCK táblautasítások használatával.

-destinationserver destination_server_name[\instance_name]

A célkiszolgáló nevét adja meg. Adja meg a destination_server_name az SQL Server alapértelmezett példányához. Adja meg az <destination_server_name>\<instance_name> egy elnevezett SQL Server példányhoz.

-céldatabázis subscription_database

Megadja a céladatbázis nevét.

-céltábla destination_table

A céltábla nevét adja meg.

-destinationschema destination_schema_name

A céltábla sématulajdonosa. Alapértelmezés szerint a tábla tulajdonosa dbo lesz.

-destinationpassword destination_password

Megadja az SQL Server-hitelesítéssel a célkiszolgálóhoz való csatlakozáshoz használt bejelentkezés jelszavát.

Fontos

Ha lehetséges, adja meg a biztonsági hitelesítő adatokat futásidőben. Ha a hitelesítő adatokat szkriptfájlban kell tárolnia, a jogosulatlan hozzáférés megakadályozása érdekében gondoskodjon a fájl védelméről.

-destinationuser destination_login

Megadja a célkiszolgálóhoz SQL Server-hitelesítéssel való csatlakozáshoz használt bejelentkezést. Ha nem ad meg destination_login, a kapcsolat Windows-hitelesítést használ. Ha lehetséges, windowsos hitelesítést használjon.

-célzárva

Az összehasonlítás során zárolja a céltáblát a TABLOCK és HOLDLOCK táblázat-hintjeinek használatával.

-b nagy_objektum_bájtok

Megadja a nagy objektum adattípusú oszlopok összehasonlítandó bájtjainak számát, amelyek közé tartozik a szöveg, az ntext, a kép, a varchar(max), az nvarchar(max) és a varbinary(max). A large_object_bytes alapértelmezett értéke az oszlop mérete. A large_object_bytes-nál nagyobb adatok nincsenek összehasonlítva.

-bf nyilatkozatok száma

Megadja, hogy hány Transact-SQL utasítást írjon az aktuális Transact-SQL szkriptfájlba a -f beállítás használatakor. Ha a Transact-SQL utasítások száma meghaladja a nyilatkozatok száma értéket, létrejön egy új Transact-SQL szkriptfájl.

-c

Az oszlopszintű különbségeket hasonlítja össze.

-Dt

A table_name által megadott eredménytáblát elveti, ha a tábla már létezik.

-et table_name

Megadja a létrehozandó eredménytábla nevét. Ha ez a tábla már létezik, akkor azt kell használnia -DT , vagy a művelet meghiúsul.

-f [ file_name ]

Létrehoz egy Transact-SQL szkriptet, amely a célkiszolgálón lévő táblát konvergenciába állítja a forráskiszolgáló táblájával. Megadhat egy nevet és elérési utat a létrehozott Transact-SQL szkriptfájlhoz. Ha nem adja meg a file_name, a segédprogram létrehozza a Transact-SQL szkriptfájlt abban a könyvtárban, ahol fut.

-o output_file_name

Megadja a kimeneti fájl teljes nevét és elérési útját.

-q

Gyors összehasonlítást végez csak a sorok számának és sémájának összehasonlításával.

-rc ismétlések_száma

Azon esetek száma, amikor a segédprogram újrapróbálkozott egy sikertelen művelettel.

-ri retry_interval

Az újrapróbálkozások közötti várakozási idő másodpercben.

-szigorú

Szigorúan összehasonlítja a forrás- és célsémát.

-t kapcsolati_időtúllépések

Másodpercben beállítja a kapcsolat időtúllépési időtartamát a forráskiszolgálóhoz és a célkiszolgálóhoz való csatlakozáshoz.

Visszaadott érték

Érték Leírás
0 Siker
1 Kritikus hiba
2 Táblázatok közötti különbségek

Megjegyzések

A tablediff segédprogram nem használható nem SQL Server-kiszolgálókkal.

A sql_variant adattípusú oszlopokat tartalmazó táblák nem támogatottak.

Alapértelmezés szerint a tablediff segédprogram támogatja az alábbi adattípus-leképezéseket a forrás- és céloszlopok között.

Forrásadattípus Céladattípus
tinyint smallint, int vagy bigint
smallint int vagy bigint
int bigint
időbélyeg varbinary
varchar(max) szöveg
nvarchar(max) ntext
varbinary(max) kép
szöveg varchar(max)
ntext nvarchar(max)
kép varbinary(max)

Ezzel a beállítással letilthatja ezeket a -strict leképezéseket, és szigorú ellenőrzést hajthat végre.

Az összehasonlítás forrástáblájának tartalmaznia kell legalább egy elsődleges kulcsot, identitást vagy ROWGUID oszlopot. Amikor a -strict beállítást használja, a céltáblának elsődleges kulccsal, identitással vagy ROWGUID oszloppal is rendelkeznie kell.

A céltáblát konvergenciába hozó Transact-SQL szkript nem tartalmazza a következő adattípusokat:

  • varchar(max)
  • nvarchar(max)
  • varbinary(max)
  • időbélyeg
  • xml
  • szöveg
  • ntext
  • kép

Engedélyek

A táblák összehasonlításához engedélyekre van szüksége SELECT ALL az összehasonlítandó táblaobjektumokhoz.

Ahhoz, hogy használni tudja a -et beállítást, a db_owner rögzített adatbázis-szerepkör tagjának kell lennie, vagy legalább CREATE TABLE engedéllyel kell rendelkeznie az előfizetési adatbázisban és ALTER engedéllyel a célkiszolgáló tulajdonosi sémáján.

A beállítás használatához -dt a db_owner rögzített adatbázis-szerepkör tagjának kell lennie, vagy legalább engedéllyel kell rendelkeznie ALTER a célkiszolgáló céltulajdonosi sémájára.

A -o beállítások használatához -f írási engedélyekkel kell rendelkeznie a megadott fájlkönyvtár-helyre.