ApexSQL Diff API release notes

Release: 2011.02.0021
Date: May 14, 2013
Description: Hot-fix release

Fixes:

  • The application generates CREATE/ALTER role statements in the wrong order when one role is a member of the other
  • The application creates constraints before it adds a function into the synchronization script
  • The "Index was outside the bounds of the array" error is encountered when calling the "Synchronize" function from the class DataProject for a table with BLOB fields

Known limitations:

  • Data sources containing SQL tables without a unique clustered index cannot be compared against backups in "Data mode"

Release: 2011.02.0019
Date: December 05, 2012
Description: Hot-fix release

Fixes:

  • The API ignores the following switches: "SynchronizeDifferentRows", "SynchronizeAdditionalRows", "SynchronizeMissingRows" and synchronizes all data in different databases as a result

Known limitations:

  • Data sources containing SQL tables without a unique clustered index cannot be compared against backups in "Data mode"

Release: 2011.02.0018
Date: October 10, 2012
Description: Hot-fix release

Fixes:

  • "The type initializer for 'ApexSql.Backup.CoreEngineer' threw an exception" error is encountered during initialization if the API is not activated after evaluation period expires

Known limitations:

  • Tables without unique clustered index cannot be compared from backups in Data mode

Release: 2011.02.0017
Date: August 15, 2012
Description: Hot-fix release

Enhancements:

  • The API is now FIPS compliant

Fixes:

  • Synchronization pre-processing and post-processing scripts are not executed

Known limitations:

  • Tables without unique clustered index cannot be compared from backups in Data mode

Release: 2011.02.0016
Date: June 20, 2012
Description: Medium feature, medium fix release

Fixes:

  • SQL Server 2012 databases and backups are now fully supported for comparison and synchronization
  • Natively compressed backups are now supported for comparison
  • SPARSE and FILESTREAM columns can now be extracted and compared from backups in Data mode
  • The following SQL Server 2012 object types are now fully supported in Structure mode:
    • Sequence
    • Search property list

Changes:

  • API assemblies are compiled for .NET Framework 3.5 with SP1 target

Known limitations:

  • Tables without unique clustered index cannot be compared from backups in Data mode

Release: 2011.01.0014
Date: February 02, 2012
Description: Major feature, major fix release

Enhancements:

  • Dynamic libraries (*.dll) built with activated API now do not require activation when used same as executables (*.exe)
  • Performance in Structure mode has been improved for all common usage scenarios ranging from 10 to more than 700%. Most noticeable improvements are Script Folder and Source Control data source comparison (up to 400%), synchronization script execution (up to 400% and higher) and synchronization to Script Folder and Source Control data sources (up to 700% and higher)
  • Comparison performance in Data mode has been improved up to 15% depending on the case
  • SQL Server Denali/2012 RC0 databases and backups can now be compared and synchronized in both Structure and Data modes
  • The following new SQL Server Denali/2012 RC0 features can now be compared and synchronized in Structure mode:
    • Search property list name attribute for Fulltext Indexes,
    • Poison message handling attribute for Queues,
    • Geometry and Geography Auto Grid tessellation scheme for Spatial Indexes
  • SQL Server 2005 and higher version encrypted objects can now be decrypted and processed (requires membership in the sysadmin server role)
  • Separate backup sets can now be selected for comparison from Backup data sources
  • Synchronization summaries and warnings are now available in Data mode via DataProject.Summaries and DataProject.Warnings properties
  • Fulltext Stoplists are now fully supported for comparison and synchronization in Structure mode
  • The following new properties have been implemented in ConnectionProperties class:
    • ExecutionTimeout,
    • Encrypt

Fixes:

  • ApexSql.Diff.UnhandledException exception is encountered when exporting a database containing objects with ‘$’ character in names to Source Control Visual Source Safe system using Native driver
  • ApexSql.Diff.UnhandledException exception is encountered when exporting multiple databases into the same Subversion system project using Native driver
  • System.NullReferenceException exception is encountered when accessing StructureProject.SourceConnectionProperties and StructureProject.StoreSourceEncryptedPassword properties if data source type is Script Folder
  • System.NullReferenceException exception is encountered when accessing Database.CompatibilityLevel and Database.Collation properties
  • System.StackOverflowException exception is encountered when looping through ComparedDataObject.DifferentRows property using foreach
  • System roles are not synchronized to Script Folder data sources
  • Constraint names are scripted not qualified into synchronization script
  • Indexes are differently scripted for different SQL Server versions
  • ApexSql.Diff.UnhandledException exception is encountered when comparing a database with a script folder that contains duplicate primary key definitions
  • Primary key and unique constraints with different column order are detected as equal with ‘ASC/DESC for Index Columns’ option ON
  • Extended properties on User Defined Data Types do not get exported to Script Folder data source from SQL Server 2000 databases
  • Partition Functions based on NCHAR and NVARCHAR data types get synchronized incorrectly
  • ApexSql.Diff.UnhandledException exception is encountered when comparing Tables with a few indexes different in secondary attributes
  • Unsupported WHERE clause of statistics objects get synchronized from SQL Server 2008 to SQL Server 2000/2005 data sources
  • Dependent Tables may not get included in synchronization script when synchronizing Triggers with SynchronizationOptions.IncludeDependentObjects option ON
  • Synchronization script attempts to change CHECK/NOCHECK attribute of foreign key constraint after dropping
  • Difference code is not set for User Defined Data Types different in nullability in HTML Reports generated for SQL Server 2008 databases
  • Some differences in spaces for script-based objects do not get marked in HTML Reports
  • Differences in parameter type of Partition Functions are not detected
  • Comments enclosed within /* */ are not ignored when Ignore Comments option is ON
  • Data source type is not indicated for Script Folder and Source Control data sources in HTML Reports
  • Differences in parameter order of Stored Procedures are not detected
  • Tables dependent on XML Schema Collections get synchronized with errors
  • Differences in DATA_COMPRESSION attribute of Tables are not synchronized
  • Spaces after commas (,) are not ignored when ComparisonOptions.IgnoreSpacesInBodies option is ON
  • Equal Stored Procedures with parameters of XML data type are reported as different
  • Associated unique constraint gets unnecessarily recreated in synchronization script when renaming respective table column
  • "The XML data type cannot be compared or sorted, except when using the IS NULL operator." error is encountered when executing DELETE statements against Tables without natural keys containing XML columns
  • ApexSql.Diff.UnhandledException exception is encountered when comparing columns of DECIMAL(30, 29) data type
  • ApexSql.Diff.UnhandledException exception is encountered when comparing character data encrypted by EncryptByPassPhrase function
  • Application detects false differences in character data without trailing spaces when ComparisonOptions.IgnoreTrailingSpaces option is OFF
  • ComparisonOptions.IgnoreTrailingSpaces option is not applied to the columns from the selected comparison key
  • SQL_VARIANT column data gets converted to text in generated synchronization scripts
  • Different rows may be incorrectly identified as missing and additional when comparing a SQL Server 2000 database vs a SQL Server 2000 backup
  • Precision is scripted incorrectly into synchronization script for DATETIME2 values
  • Unicode data stored in columns of non-Unicode text data types is synchronized incorrectly
  • GEOGRAPHY data is scripted incorrectly into synchronization script when synchronizing to a CHAR column

Changes:

  • ComparisonOptionsBase.TreatListAsExclude property is no longer supported in Structure mode and was marked as obsolete
  • Application assemblies are now signed using ApexSQL private key and can be manually verified for validity

Known limitations:

  • Only tables with unique clustered index can be compared from Backup data sources in Structure mode
  • SPARSE and FILESTREAM columns cannot be extracted and compared from Backup data sources in Structure mode

Release: 2008.03.0013
Date: March 3, 2010
Description: Medium feature, medium fix release

Enhancements:

  • The following new datasources are now supported:
    • Script Folder in Structure mode
    • Source Control (Subversion, Microsoft Visual SourceSafe, Team Foundation Server, SourceGear Vault) in Structure mode
    • Backup in Data mode

Changes:

  • Dependent tables aren't considered in synchronizing different in parameters functions with 'IncludeDependentObjects' option ON
  • SCHEMABINDING attribute isn't reset for views prior to altering objects they depend on with 'IncludeDependentObjects' option ON
  • Object names are outputted without schemas in PRINT statements and comments
  • Changing column nullability from NULL to NOT NULL results in "Cannot insert the value NULL into column . Column does not allow nulls. UPDATE fails" error if target table isn't empty
  • Blank line is added before GO in ALTER TABLE ALTER COLUMN statement in synchronization script
  • Dependent views aren't detected for views
  • Dependencies on user data types aren't found for SQL Server 2000 databases
  • SQL Server 2008 fulltext indexes are scripted in SQL Server 2008 syntax to databases in 90 compatibility mode
  • Firing order is lost on trigger alteration
  • System.OutOfMemoryException exception is thrown on generating snapshots for large (>10,000 objects) databases
  • Database snapshots cannot be read if they are created on a system with date/time format MM/DD/YY hh.mm.ss.ffff
  • System.OutOfMemoryException exception is thrown on large values (>1GB) comparison/synchronization in Data mode
  • 'Add Foreign Key' action is listed twice in StuctureProject.Summaries property for each foreign key constraint
  • Synchronization script unnecessarily recreates table when adding a new TIMESTAMP column
  • Dependent tables aren't considered in synchronizing different foreign keys with 'IncludeDependentObjects' option ON
  • CHANGE_TRACKING table property isn't synchronized
  • Synchronization script unnecessarily recreates table when recreating its foreign key

Changes:

  • Diff.StructureProjects and Diff.DataProjects properties now contain paths to recently used projects instead of references
  • Application evaluation period has been changed from 30 to 14 days

Release: 2008.02.0011
Date: September 28, 2009
Description: Minor fix release

Fixes:

  • ProjectBase.ExecuteSynchronizationScript() function doesn't return error messages generated during the execution of synchronization script
  • In synchronization script, IDENTITY attribute is lost for tables that are recreated
  • OwnerMapping.AddMapping() function allows the addition of duplicate mappings
  • OwnerMapping.LoadProfile() function throws unclear exceptions for corrupted profiles
  • Database.CaseSensitive property is always True for case-insensitive databases and snapshots
  • Activation form points to to the wrong help topic
  • Cannot save projects where data sources have not been set
  • MappedTables.GetItemBySourceName() and .GetItemByDestinationName() functions return incorrect objects for case-sensitive snapshots
  • Extended properties are not scripted for indexes created on a primary key constraint
  • False differences in unique constraints appear when comparing a SQL Server 2005 database vs SQL Server 2008
  • Information about database case sensitivity is missed in database snapshots
  • Database trigger state is neither compared nor synchronized if source or target trigger is disabled
  • OutOfMemory exception is thrown when parsing large databases (>10,000 objects) if SynchronizationOptions.IncludeDependentObjects option is on
  • Views are ordered incorrectly on synchronization if one view is referenced by another view in CASE operator

Release: 2008.01.0010
Date: June 26, 2009
Description: Major feature, major fix release

Enhancements:

  • Performance of comparison and synchronization was significantly improved (up to 5x faster than in previous version)
  • The following SQL Server 2008 features are now supported:
    • Table-valued user data types
    • Sparse columns
    • FILESTREAM storage
    • DATA_COMPRESSION option
    • READONLY procedure parameters
    • New geometry, geography and hierarchyid data types
    • Column sets
    • CRYPTOGRAPHIC_PROVIDER credential attribute
    • New date and time types (date, datetime2, datetimeoffset, time)

Fixes:

  • NOT NULL columns are added to tables prior to default constraints
  • Extra parenthesis cause false differences in check constraints
  • Differences in table filegroups are not detected in database vs snapshot comparisons
  • Equal functions are incorrectly marked as different in SQL Server 2000 vs SQL Server 2005 comparisons
  • "Data is NULL" exception is thrown on table columns reloading
  • Incorrect existence checks are generated for triggers in SQL Server 2005 to SQL Server 2000 synchronization scripts
  • Foreign key CASCADE attribute is omitted in synchronization scripts
  • "Dbo has insufficient rights" error in displayed when reloading CLR DDL triggers
  • User "guest" is incorrectly loaded from databases where it doesn't exist
  • Length is incorrectly scripted for nvarchar-based user data types for SQL Server 2008 databases
  • TEXTIMAGE_ON attribute isn't scripted for tables with varchar(max), nvarchar(max) or varbinary(max) columns
  • Application role default schemas are synchronized via DROP/CREATE instead of ALTER
  • Disabling DLL triggers causes syntax errors on VBScript synchronization scripts execution
  • Incorrect synchronization scripts are generated for defaults bound to several columns of the same table
  • Incorrect synchronization scripts are generated for users with multiple dependencies
  • Incorrect synchronization scripts are generated for parent assemblies of DDL triggers
  • Incorrect synchronization scripts are generated for rules bound to user data types
  • Incorrect synchronization scripts are generated for services bound to contracts
  • Tables with computed columns are synchronized via ALTER instead of DROP/CREATE
  • Generating Html Plain Report results in System.AccessViolationException exception
  • Dependencies from stored procedures, functions and views to user data types aren't detected
  • User data types are put in synchronization scripts after tables that depend on them
  • Comparing snapshot with itself detects false differences in function parameters
  • Data from tables with identity columns is incorrectly preserved in synchronization scripts
  • Schema bound views and their dependencies are ordered incorrectly in synchronization scripts
  • Row collection indexers in data mode don't work
  • False differences in brackets are detected when comparing comparison constraints expressions between SQL Server 2000 database vs SQL Server 2005

Changes:

  • The following properties are no longer supported and were marked as obsolete:
    • SynchronizationOptions.ParseExplicitly
    • DataComparisonOptions.CompareAdditionalRows
    • DataComparisonOptions.CompareDifferentRows
    • DataComparisonOptions.CompareMissingRows
    • DataComparisonOptions.CompareIdenticalRows
    • HtmlReportOptions.IncludeComparisonResultsByObject
    • HtmlReportOptions.IncludeObjectsCompared
    • HtmlReportOptions.IncludeComparisonOptions
    • HtmlReportOptions.IncludeReportOptions
    • HtmlReportOptions.IncludeComparisonSummary
    • HtmlReportOptions.IncludeDifferencesByObject
    • HtmlReportOptions.IncludeSummaryReport

Release: 2005.02.0009
Date: March 16, 2009
Description: Minor fix release

Fixes:

  • NOT NULL columns with default constraints are sometimes incorrectly added to tables
  • API doesn't close the connection after the comparison
  • API generates empty Plain Html report in Structure Mode
  • API generates invalid Html report in Data Mode without any data for tables and views
  • API generates empty CSV report in Data Mode

Changes:

  • Offline help file is no longer provided and application will now directly access online help from the default system browser

Release: 2005.01.0007
Date: August 21, 2008
Description: Release