{"id":378,"date":"2006-12-28T17:25:32","date_gmt":"2006-12-28T16:25:32","guid":{"rendered":"http:\/\/www.glorf.it\/blog\/2006\/12\/28\/sql-talk\/sql-tools\/sql2005-tablediff"},"modified":"2006-12-28T17:26:56","modified_gmt":"2006-12-28T16:26:56","slug":"sql2005-tablediff","status":"publish","type":"post","link":"http:\/\/www.glorf.it\/blog\/2006\/12\/28\/sql-talk\/sql-tools\/sql2005-tablediff","title":{"rendered":"SQL2005: TableDiff"},"content":{"rendered":"<p>Selbst wenn man sich die neue <a href=\"http:\/\/www.glorf.it\/blog\/2006\/12\/08\/sql-talk\/sql-tools\/dbpro-aka-data-dude-version-10-verfuegbar\">DevStudio-Edition &quot;DBPro&quot;<\/a> (inkl. der netten Werkzeuge) nicht leisten mag\/kann und einem die 180-Tage-Testversion zu gro&#223; ist, dann muss man nicht auf die Funktion TableDiff verzichten.<\/p>\n<p>Dieses kleine Programm kommt mit dem SQL-Server-2005 mit und ist eigentlich f&#252;r die Replikation gedacht. Es steht unter &quot;<lw>:\\Programme\\Microsoft SQL Server\\90\\COM\\tablediff.exe&quot; zur Verf&#252;gung. Damit kann man den Inhalt einer Tabelle intelligent von einer DB in die andere kopieren. <\/p>\n<p>Es bietet auch die M&#246;glichkeit, einen echten Diff zwischen zwei Tabellen durchzuf&#252;hren, auch zwischen 2000 und 2005. Im folgenden Beispiel habe ich der &#220;bersichtlichkeit halber die Befehlszeile umgebrochen:<\/p>\n<p><code>\"C:\\Programme\\Microsoft SQL Server\\90\\COM\\tablediff.exe\"<br \/>\n-sourceserver &quot;MyBigPC\\MyYukon&quot; -sourcedatabase &quot;Northwind&quot;<br \/>\n-sourceschema &quot;dbo&quot; -sourcetable &quot;Orders&quot;<br \/>\n-sourceuser sa -sourcepassword samplepwd<br \/>\n-destinationserver &quot;MyBigPC\\MyLittleSQL&quot; -destinationdatabase &quot;Northwind&quot;<br \/>\n-destinationschema &quot;dbo&quot; -destinationtable &quot;Orders&quot;<br \/>\n-destinationuser sa -destinationpassword samplepwd<br \/>\n-f<br \/>\nMicrosoft (R) SQL Server Replication Diff Tool<br \/>\nCopyright (C) 1988-2005 Microsoft Corporation. All rights reserved.<\/p>\n<p>User-specified agent parameter values:<br \/>\n-sourceserver MyBigPC\\MyYukon<br \/>\n-sourcedatabase Northwind<br \/>\n-sourceschema dbo<br \/>\n-sourcetable Orders<br \/>\n-sourceuser sa<br \/>\n-sourcepassword samplepwd<br \/>\n-destinationserver MyBigPC\\MyLittleSQL<br \/>\n-destinationdatabase Northwind<br \/>\n-destinationschema dbo<br \/>\n-destinationtable Orders<br \/>\n-destinationuser sa<br \/>\n-destinationpassword samplepwd<br \/>\n-f<\/p>\n<p>Table [Northwind].[dbo].[Orders] on MyBigPC\\MyYukon and Table [Northwind].[dbo].[Orders] on MyBigPC\\MyLittleSQL are identical.<br \/>\nThe requested operation took 0,46875 seconds.<\/code><\/p>\n<p>Wenn ein Unterschied besteht, dann sieht der Output so aus:<\/p>\n<p><code>Table [Northwind].[dbo].[Orders] on MyBigPC\\MyYukon and Table [Northwind].[dbo].<br \/>\n[MyOrders] on MyBigPC\\MyLittleSQL have 26 differences.<br \/>\nFix SQL written to DIFFIX.633029232857656250.sql.<br \/>\nErr     OrderID Col<br \/>\nSrc. Only       11052<br \/>\nSrc. Only       11053<br \/>\nSrc. Only       11054<br \/>\nSrc. Only       11055<br \/>\nSrc. Only       11056<br \/>\nSrc. Only       11057<br \/>\nSrc. Only       11058<br \/>\nSrc. Only       11059<br \/>\nSrc. Only       11060<br \/>\nSrc. Only       11061<br \/>\nSrc. Only       11062<br \/>\nSrc. Only       11063<br \/>\nSrc. Only       11064<br \/>\nSrc. Only       11065<br \/>\nSrc. Only       11066<br \/>\nSrc. Only       11067<br \/>\nSrc. Only       11068<br \/>\nSrc. Only       11069<br \/>\nSrc. Only       11070<br \/>\nSrc. Only       11071<br \/>\nSrc. Only       11072<br \/>\nSrc. Only       11073<br \/>\nSrc. Only       11074<br \/>\nSrc. Only       11075<br \/>\nSrc. Only       11076<br \/>\nSrc. Only       11077<br \/>\nThe requested operation took 0,296875 seconds.<\/code><\/p>\n<p>Und in der &quot;Fix-Datei&quot; steht dann (gek&#252;rzt):<\/p>\n<p><code>-- Host: MyBigPC\\MyLittleSQL<br \/>\n&#8211; Database: [Northwind]<br \/>\n&#8211; Table: [dbo].[Orders]<br \/>\nSET IDENTITY_INSERT [dbo].[Orders] ON<br \/>\nINSERT INTO [dbo].[Orders] ([CustomerID],[EmployeeID],[Freight],[OrderDate],[OrderID],[RequiredDate],[ShipAddress],[ShipCity],[ShipCountry],[ShipName],[ShippedDate],[ShipPostalCode],[ShipRegion],[ShipVia]) VALUES (&#x0027;HANAR&#x0027;,3,67,2600,&#x0027;1998-04-27 00:00:00.000&#x0027;,11052,&#x0027;1998-05-25 00:00:00.000&#x0027;,'Rua do Pa\u00e7o, 67&#x0027;,'Rio de Janeiro&#x0027;,'Brazil&#x0027;,'Hanari Carnes&#x0027;,'1998-05-01 00:00:00.000&#x0027;,'05454-876&#x0027;,'RJ&#x0027;,1)<br \/>\nINSERT INTO [dbo].[Orders] ([CustomerID],[EmployeeID],[Freight],[OrderDate],[OrderID],[RequiredDate],[ShipAddress],[ShipCity],[ShipCountry],[ShipName],[ShippedDate],[ShipPostalCode],[ShipRegion],[ShipVia]) VALUES (&#x0027;PICCO&#x0027;,2,53,0500,&#x0027;1998-04-27 00:00:00.000&#x0027;,11053,&#x0027;1998-05-25 00:00:00.000&#x0027;,'Geislweg 14&#x0027;,'Salzburg&#x0027;,'Austria&#x0027;,'Piccolo und mehr&#x0027;,'1998-04-29 00:00:00.000&#x0027;,'5020&#x0027;,NULL,2)<br \/>\n&#8230;<br \/>\nINSERT INTO [dbo].[Orders] ([CustomerID],[EmployeeID],[Freight],[OrderDate],[OrderID],[RequiredDate],[ShipAddress],[ShipCity],[ShipCountry],[ShipName],[ShippedDate],[ShipPostalCode],[ShipRegion],[ShipVia]) VALUES (&#x0027;RATTC&#x0027;,1,8,5300,&#x0027;1998-05-06 00:00:00.000&#x0027;,11077,&#x0027;1998-06-03 00:00:00.000&#x0027;,'2817 Milton Dr.&#x0027;,'Albuquerque&#x0027;,'USA&#x0027;,'Rattlesnake Canyon Grocery&#x0027;,NULL,&#x0027;87110&#x0027;,'NM&#x0027;,2)<br \/>\nSET IDENTITY_INSERT [dbo].[Orders] OFF<br \/>\n<\/code><\/p>\n<p>Wenn man auch Unterschiede in den Datens&#228;tzen (&quot;auf Spaltenebene&quot;) sehen will, dann ist die Option &quot;-c&quot; interessant.<\/p>\n<p>N&#252;tzlich, oder?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Selbst wenn man sich die neue DevStudio-Edition &quot;DBPro&quot; (inkl. der netten Werkzeuge) nicht leisten mag\/kann und einem die 180-Tage-Testversion zu gro&#223; ist, dann muss man nicht auf die Funktion TableDiff verzichten. Dieses kleine Programm kommt mit dem SQL-Server-2005 mit und ist eigentlich f&#252;r die Replikation gedacht. Es steht unter &quot;:\\Programme\\Microsoft SQL Server\\90\\COM\\tablediff.exe&quot; zur Verf&#252;gung. Damit [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[14],"tags":[],"_links":{"self":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/378"}],"collection":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/comments?post=378"}],"version-history":[{"count":0,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/378\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/media?parent=378"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/categories?post=378"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/tags?post=378"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}