Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Narzędzie tablediff służy do porównywania danych w dwóch tabelach pod kątem braku zbieżności i jest przydatne do rozwiązywania problemów z niekonwergencją w topologii replikacji. To narzędzie może służyć z wiersza polecenia lub w pliku wsadowym do wykonywania następujących zadań:
Porównaj każdy wiersz między tabelą źródłową w wystąpieniu programu SQL Server działającym jako Wydawca replikacji, a tabelą docelową w jednym lub więcej wystąpieniach programu SQL Server działającym jako Subskrybent replikacji.
Wykonaj szybkie porównanie, porównując tylko liczby wierszy i schemat.
Wykonaj porównania na poziomie kolumny.
Wygeneruj skrypt Transact-SQL, aby naprawić rozbieżności na serwerze docelowym i przenieść tabele źródłowe i docelowe do zbieżności.
Rejestruje wyniki w pliku wyjściowym lub w tabeli w docelowej bazie danych.
Uwaga
Narzędzie tablediff jest częścią narzędzi replikacji programu SQL Server. W programie SQL Server 2022 (16.x) można znaleźć tablediff.exe w domyślnej C:\Program Files\Microsoft SQL Server\160\COM lokalizacji po zainstalowaniu funkcji replikacji.
Składnia
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 (w programowaniu)
[ -? ]
Zwraca listę obsługiwanych parametrów.
-sourceserver source_server_name[\instance_name]
Określa nazwę serwera źródłowego. Określ source_server_name dla domyślnego wystąpienia programu SQL Server. Określ source_server_name\instance_name dla nazwanego wystąpienia programu SQL Server.
-sourcedatabase source_database
Określa nazwę źródłowej bazy danych.
-sourcetable source_table_name
Określa nazwę sprawdzanej tabeli źródłowej.
-sourceschema nazwa_schematu_źródłowego
Właściciel schematu tabeli źródłowej. Domyślnie właścicielem tabeli jest dbo.
-sourcepassword source_password
Określa hasło logowania używanego do nawiązywania połączenia z serwerem źródłowym przy użyciu uwierzytelniania programu SQL Server.
Ważne
Jeśli to możliwe, podaj poświadczenia zabezpieczeń w czasie wykonywania. Jeśli musisz przechowywać poświadczenia w pliku skryptu, należy zabezpieczyć plik, aby zapobiec nieautoryzowanemu dostępowi.
-sourceuser source_login
Określa identyfikator logowania używany do nawiązywania połączenia z serwerem źródłowym przy użyciu uwierzytelniania programu SQL Server. Jeśli nie podano source_login , uwierzytelnianie systemu Windows jest używane podczas nawiązywania połączenia z serwerem źródłowym. Jeśli to możliwe, użyj uwierzytelniania systemu Windows.
-sourcelocked
Blokuje tabelę źródłową podczas porównywania przy użyciu wskazówek tabeli TABLOCK i .HOLDLOCK
-destinationserver destination_server_name[\instance_name]
Określa nazwę serwera docelowego. Określ destination_server_name dla domyślnego wystąpienia programu SQL Server. Określ <destination_server_name>\<instance_name> dla nazwanego wystąpienia programu SQL Server.
-destinationdatabase baza danych subskrypcji
Określa nazwę docelowej bazy danych.
-tabela_docelowa destination_table
Określa nazwę tabeli docelowej.
-destinationschema destination_schema_name
Właściciel schematu tabeli docelowej. Domyślnie właścicielem tabeli jest dbo.
-destinationpassword destination_password
Określa hasło logowania używane do nawiązywania połączenia z serwerem docelowym przy użyciu uwierzytelniania programu SQL Server.
Ważne
Jeśli to możliwe, podaj poświadczenia zabezpieczeń w czasie wykonywania. Jeśli musisz przechowywać poświadczenia w pliku skryptu, należy zabezpieczyć plik, aby zapobiec nieautoryzowanemu dostępowi.
-destinationuser destination_login
Określa identyfikator logowania używany do nawiązywania połączenia z serwerem docelowym przy użyciu uwierzytelniania programu SQL Server. Jeśli nie podasz destination_login, połączenie korzysta z uwierzytelniania systemu Windows. Jeśli to możliwe, użyj uwierzytelniania systemu Windows.
-celzablokowany
Blokuje tabelę docelową podczas porównywania przy użyciu wskazówek tabeli TABLOCK i HOLDLOCK.
-b large_object_bytes
Określa liczbę bajtów do porównania dla kolumn typu danych dużych obiektów, które obejmują tekst, ntext, obraz, varchar(max), nvarchar(max)i varbinary(max). Wartość domyślna large_object_bytes to rozmiar kolumny. Żadne dane większe niż large_object_bytes nie są porównywane.
-bf liczba_instrukcji
Określa liczbę instrukcji Transact-SQL do zapisu w bieżącym pliku skryptu Transact-SQL, gdy -f jest używana opcja. Gdy liczba instrukcji Transact-SQL przekracza number_of_statements, zostanie utworzony nowy plik skryptu Transact-SQL.
-c
Porównuje różnice na poziomie kolumny.
-Dt
Pomiń tabelę wyników określoną przez table_name , jeśli tabela już istnieje.
-et table_name
Określa nazwę tabeli wyników do utworzenia. Jeśli ta tabela już istnieje, musisz użyć -DT polecenia lub operacja zakończy się niepowodzeniem.
-f [ file_name ]
Generuje skrypt Transact-SQL, aby przenieść tabelę na serwer docelowy do zbieżności z tabelą na serwerze źródłowym. Opcjonalnie możesz określić nazwę i ścieżkę dla wygenerowanego pliku skryptu Transact-SQL. Jeśli nie określisz file_name, narzędzie generuje plik skryptu Transact-SQL w katalogu, w którym jest uruchamiany.
-o output_file_name
Określa pełną nazwę i ścieżkę pliku wyjściowego.
-q
Wykonuje szybkie porównanie, porównując tylko liczby wierszy i schemat.
-rc liczba_powtórzeń
Liczba razy, kiedy użytkowność ponawia próbę nieudanej operacji.
-ri retry_interval
Czas w sekundach, aby czekać między ponownymi próbami.
-surowy
Porównuje schemat źródłowy i docelowy ściśle.
-t przekroczenia_czasu_połączenia
Ustawia limit czasu połączenia w sekundach dla połączeń z serwerem źródłowym i serwerem docelowym.
Wartość zwracana
| Wartość | Opis |
|---|---|
0 |
Powodzenie |
1 |
Błąd krytyczny |
2 |
Różnice w tabelach |
Uwagi
Nie można użyć narzędzia tablediff z serwerami spoza programu SQL Server.
Tabele z kolumnami typu danych sql_variant nie są obsługiwane.
Domyślnie narzędzie tablediff obsługuje następujące mapowania typów danych między kolumnami źródłowymi i docelowymi.
| Typ danych źródłowych | Docelowy typ danych |
|---|---|
| tinyint | smallint, int lub bigint |
| smallint | int lub bigint |
| Int | bigint |
| Znacznik czasu | varbinary |
| varchar(max) | tekst |
| nvarchar(max) | ntext |
| varbinary(max) | obraz |
| tekst | varchar(max) |
| ntext | nvarchar(max) |
| obraz | varbinary(max) |
-strict Użyj opcji, aby nie zezwalać na te mapowania i przeprowadzać ścisłą walidację.
Tabela źródłowa w porównaniu musi zawierać co najmniej jeden klucz podstawowy, tożsamość lub kolumnę ROWGUID. Jeśli używasz -strict opcji, tabela docelowa musi również mieć klucz podstawowy, tożsamość lub ROWGUID kolumnę.
Skrypt Transact-SQL wygenerowany w celu przeniesienia tabeli docelowej do zbieżności nie obejmuje następujących typów danych:
- varchar(max)
- nvarchar(max)
- varbinary(max)
- Znacznik czasu
- XML
- tekst
- ntext
- obraz
Uprawnienia
Aby porównać tabele, potrzebne są SELECT ALL uprawnienia do porównywanych obiektów tabeli.
Aby użyć -et opcji, musisz być członkiem db_owner stałej roli bazy danych lub przynajmniej mieć CREATE TABLE uprawnienia w ramach bazy danych subskrypcji i ALTER uprawnienia w ramach schematu właściciela docelowego na serwerze docelowym.
Aby użyć -dt tej opcji, musisz być członkiem db_owner stałej roli bazy danych lub przynajmniej mieć ALTER uprawnienia do schematu właściciela docelowego na serwerze docelowym.
Aby użyć opcji -o lub -f , musisz mieć uprawnienia do zapisu w określonej lokalizacji katalogu plików.