Destination

SQL Schema Sync is designed to compare and synchronize database schemas. It can be used by both developers and system administrators. Application field is wide; the tool can solve the following problems:

  • Synchronization of two database structures. Ultimate goal of this process is complete match of two database structures or some of their objects (at user discretion). Synchronization of database schemas can be executed not only on “live” databases, but also by using snapshot saved to a file as a source database structure. This allows you to save database snapshot on one computer and then use it to restore the described structure on unlimited number of SQL Servers.
  • Comparison of two databases for structure match. It is possible to use live databases as well as database snapshots.
  • Tracking of changes in existing databases. In order to solve this problem it is possible to use the ability to save database structure as a snapshot. This snapshot can be used to compare with live database to track changes, and, if necessary, to rollback changes made to a database to the structure saved to a snapshot. So, it is possible to manage versions history.

SQL Schema Sync is easy to use; it represents convenient user interface, this reduces time required for product evaluation and training. Work of the product consists of separate steps, on which the definite action described in details should be executed.

Send comments on this topic.

(c) Perpetuum Software LLC


License agreement

Perpetuum Software LLC

SQL Schema Sync Software Product

Copyright (C) 2009 Perpetuum Software LLC

Important – Read carefully. This License Agreement (hereinafter the “Agreement”) is a binding legal agreement between you as an individual or single entity (hereinafter the “Licensee”) and the Perpetuum Software LLC (hereinafter the “Licensor”) for the use of the SQL Schema Sync Software Product together with all prior and/or subsequent versions, and all patches and updates thereto (hereinafter the “Product”).

By installing, copying, or otherwise using the Product, the Licensee agrees to be bound by the terms of this Agreement. If the Licensee does not agree to any part of the terms of this Agreement, THE LICENSEE CAN NOT INSTALL, USE, DISTRIBUTE, OR REPLICATE IN ANY MANNER, ANY PART, FILE OR PORTION OF THE PRODUCT, OR USE THIS PRODUCT FOR ANY OTHER PURPOSES.

  • LICENSE GRANT.

Upon acceptance of this Agreement the Licensor grants the Licensee a personal, nonexclusive, nontransferable license to install and use the Product on compatible devices.

  • EVALUATION LICENSE.

Under the terms of an Evaluation License the Licensee may install and use any number of copies of the Product on unlimited number of computers for the limited purposes of testing, evaluation and demonstrations ONLY. This License is granted for a limited period of thirty (30) days from the date on which the Software is installed by or on behalf of the Licensee ("Evaluation Period") for the purpose of evaluating whether or not the Product meets the Licensee's requirements. After the Evaluation Period, the Licensee shall either:

(i) destroy the Software and all copies, in any form including partial copies or modifications of the Software received from the Licensor or made in connection with this License and all documentation relating thereto and any rights of the Licensee to use the Software shall cease, or (ii) contact the Licensor or one of its authorized resellers to purchase the license (s) for the Product.

  • PRODUCT LICENSING.

3.1. The Product is licensed for a named user and the license purchased may be used only by one (1) user. Licensee has a right to use one and the same license on an office, home, and laptop computer, but one and the same license may not be used simultaneously on these devices.

3.2. The number of licenses purchased by the Licensee shall correspond to the number of clients’ computers on which the Product is installed.

3.3. A copy of the Product may be made for archival or backup purposes as long as it contains all the original Product proprietary notices.

  • RESTRICTIONS

4.1. Licensee may use the Product solely in its original form, and may not change, alter or modify the Product, translate, reverse assemble, reverse compile, disassemble, or in any way reverse engineer the Product.

4.2. Licensee may not remove any proprietary notices, labels, or other identifying marks on the Product. These Terms shall not be interpreted as granting to the Licensee any license or right not expressly granted herein. ALL RIGHTS TO THE PRODUCT NOT EXPRESSLY GRANTED HEREIN ARE RESERVED BY THE LICENSOR.

4.3. The Product contains trade secrets, trademarks, patents, and copyrights owned by the Licensor, and Licensee shall maintain the Product in confidence. Licensee shall not allow any access to or use of the Product by anyone other than Licensee, or its employees or agents, and any such use must be consistent with the terms, conditions and restrictions set forth in this Agreement. Licensee agrees to use the Product in a manner that complies with all applicable court orders in the jurisdiction in which you use the Product, including, but not limited to, restrictions concerning privacy, copyright, and other intellectual property rights.

4.4. Excepting authorized users of the Licensee, as provided by this Agreement, the Licensee may not distribute, publish, or otherwise disseminate the Product Licensing Keys to any other persons, organizations, entities, newsgroups, locations, and/or sites whatsoever. Except as provided herein, it is a violation of this Agreement to distribute, publish, or otherwise disseminate Product Licensing Keys.

4.5. Only the Product Licensing Keys provided by the Licensor or its authorized resellers may be used to unlock, access, and use the Product. The use of the Product Licensing Keys obtained via other means constitute violation of this Agreement and may result in termination of this Agreement.

  • OWNERSHIP/TITLE.

Title, ownership, rights, and intellectual property rights in and to the Product shall remain in Licensor and/or its suppliers’ ownership. The Product is protected by the copyright laws and by international copyright treaties. The Product is licensed, not sold, and the Licensor reserves all rights not expressly granted to the Licensee under this Agreement. The Licensor retains all ownership in and to all copies of the Product itself.

  • SUBSCRIPTION

The purchase of the license (s) for the Product authorizes the Licensee to get free updates, upgrades and new versions of the Product during one-year term of the subscription. After the subscription expiration the Licensee is entitled to use the license (s) with the product versions released before the subscription expiration date without any limitations, however the Licensee is not entitled to get free upgrades, updates and new versions of the Product released after the subscription expiration date. The Licensee has the right to renew the license (s) for the Product and to prolong the subscription service for a successive one-year period, thereby to accrue the right to get free updates, upgrades and new product versions released within the subscription period.

IF THE LICENSEE IS USING THE EVALUATION VERSION OF THE PRODUCT, THE LICENSOR WILL NOT PROVIDE THE LICENSEE WITH UPDATES, UPGRADES AND FIXES RELATED TO THE PRODUCT.

  • SUPPORT SERVICES

The Licensor may provide the Licensee with support services related to the Product ("Support Services"). Use of Support Services is governed by the Licensor’s polices and programs described in the "online" documentation and/or in other Licensor-provided materials, only to the extent that the terms of such "online" documentation and/or other Licensor-provided materials are not inconsistent with the terms of this Agreement. Support services are provided on a no-charge basis whenever possible and subject to availability of technical support staff via e-mail within standard support hours from 8:00 am to 5:00 pm GMT +6, Monday to Friday, excluding statutory holidays and company holidays. The Licensor does not guarantee any successful resolution of the reported problem. Any supplemental Product code, patches, or any other fixes provided to the Licensee, as part of the Support Services, shall be considered part of the Product and subject to the terms and conditions of this agreement. The Licensor may use the technical information the Licensee provides as part of the Support Services, for its business purposes, including for Product support and development. The Licensor will not utilize such technical information in a form that personally identifies the Licensee without the Licensee’s written permission.

  • TERM AND TERMINATION.

The Agreement becomes effective when the Licensee agrees to the terms and conditions of this Agreement by opening, installing, using, accessing or manipulating the Product (the "Effective Date"), and this Agreement will terminate immediately upon notice to the Licensee or if the Licensee materially breaches any term or condition of this Agreement.

  • DISCLAIMER.

THE LICENSOR EXPRESSLY DISCLAIMS ANY WARRANTY FOR THE PRODUCT. THE PRODUCT AND ANY RELATED DOCUMENTATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. THE ENTIRE RISK ARISING OUT OF USE OR PERFORMANCE OF THE PRODUCT REMAINS WITH THE LICENSEE.

  • LIMITATION ON AND EXCLUSION OF DAMAGES.

THE LICENSEE CAN RECOVER FROM THE VENDOR ONLY DIRECT DAMAGES UP TO THE AMOUNT THE LICENSEE PAID FOR THE SOFTWARE. THE LICENSEE CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT, INCIDENTAL OR ANY OTHER DAMAGES.

This limitation applies to claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law. It also applies even if repair, replacement or a refund for the software does not fully compensate the Licensee for any losses; or the Licensor knew or should have known about the possibility of the damages.

  • NO LIABILITIES.

To the maximum extent permitted by applicable law, in no event shall the Licensor be liable for any special, incidental, indirect, or consequential damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or any other pecuniary loss) arising out of the use of or inability to use the Product or the provision of or failure to provide Support Services, even if the Licensor has been advised of the possibility of such damages.

  • GENERAL PROVISIONS

12.1. Confidentiality.

Neither party shall disclose the terms and conditions of this Agreement to any third party otherwise than as compelled in furtherance of an obligation at law, and neither party may use the name of the other party in publicity, advertising, or similar activity, without the prior written consent of the other, which consent shall not be unreasonably withheld or delayed except that Licensee hereby consents to Licensor's inclusion of Licensee's name in customer listings which may be published as part of Licensor's marketing efforts.

12.2. Force Majeure.

Any delay or non-performance of any provision of this Agreement caused by conditions beyond the reasonable control of the performing party shall not constitute a breach of this Agreement, and the time for performance of such provision, if any, shall be deemed to be extended for a period equal to the duration of the conditions preventing performance.

12.3. Assignment.

Each party may not, without the other party's prior written consent, assign, delegate, pledge, or otherwise transfer this Agreement or any of its rights or obligations under this Agreement, or the Party’s Proprietary Information, to any party, whether voluntarily or by operation of law, including by way of sale of assets, merger or consolidation, provided that nothing else is agreed in this Agreement.

12.4. Severability.

It is the intent of the parties that in case any one or more of the provisions contained in the Agreement shall be held to be invalid or unenforceable in any respect, such invalidity or unenforceability shall not affect the other provisions of this Agreement shall be construed as if such invalid or unenforceable provision had never been contained herein.

12.5. No Waiver.

If either party should waive any breach of any provision of this Agreement, it shall not thereby be deemed to have waived any preceding or succeeding breach of the same or any other provision hereof.

12.6. Revision to terms

The Licensor reserves the right to revise the terms of the Agreement by updating the License on

its website, or by notifying the Licensee by post or by email. The Licensee is advised to check the License periodically for notices concerning revisions. The Licensee's continued use of the Software shall be deemed to constitute acceptance of any revised terms.


Product registration

The product is licensed for named user. Number of licenses should correspond to number of client computers on which the product is installed. After you order your license and make payment, an e-mail containing detailed instructions on how to register the product is sent to your e-mail. If you have any questions regarding product licensing, please, feel free to contact our sales representative via e-mail: sales@perpetuumsoft.com


Technical support

Perpetuum Software official policy is to employ a very strong support team. This guarantees that all your questions and inquiries will be answered in a quick and professional manner. We would be very thankful for any suggestions and recommendations you might have regarding our products. We do take in account the opinion of every single person who has shown interest in our products.

Of course, Perpetuum Software support team is for all to help you with products troubleshooting if any. They can be reached via e-mail: support@perpetuumsoft.com.

You can get additional information or exchange your opinion on technical issues with Perpetuum Software representatives and other users at our technical support forum: http://www.perpetuumsoft.com/Forums.aspx

If you are interested in our products, have suggestions on broadening products functionality; if you have questions on licensing or would like to make a cooperation proposal, please contact our sales department at: sales@perpetuumsoft.com.


System requirements

.NET Framework 2.0 or higher

MS SQL Server 2005/2008 (or SQL Server 2005/2008 Express Edition)


Product localization

SQL Schema Sync can be easily localized. All string resources used by the products are taken from the ad hoc localization XML-file.

You can set localization language on the first step of the wizard:

If a language you need is not included in the package, you can create a localization file for a desired language on your own. You will need to translate all strings.

Upon your request, we will provide an Excel file containing the strings to be translated. After we receive translation of string resources, a localization file will be produced and provided to you.

Please feel free to contact us at support@perpetuumsoft.com in regard to localization issues.


Supported database objects

SQL Schema Sync supports synchronization of the following objects:

  • Schemes
  • Tables
  • Views
  • Functions and stored procedures
  • Triggers
  • DLL triggers
  • Assemblies
  • User-Defined types and CLR types
  • Indexes and XML indexes
  • XML schemes collections
  • Constraints
  • Users, roles and permissions
  • Extended properties
  • Synonyms
  • Rules
  • Default values
  • Database options


Operation modes

SQL Schema Sync provides three operation modes:

  • Saving database snapshot;
  • Comparing two databases;
  • Synchronizing two databases.

Select operation mode.

Let’s consider these three modes in detail.


Saving database snapshot

This mode allows getting snapshot from a live database located on MS SQL Server. Received snapshot can be used for the following purposes:

1. The application developed uses in its work database and database structure is changed when releasing the next version of the application. To make application work correctly it is necessary to keep database actual. So, when a new version of the application is installed, database synchronization is executed. Database snapshot included in the delivery package of the product will help easily perform this operation.

2. It is necessary to manage versions history. You can save database snapshot in definite intervals.

3. Rollback to the previous database version. Snapshot saved beforehand can help developers and system administrators avoid the following problem: everything worked ok not long ago, and now this system function doesn’t work properly, but at first sight there were no changes.

4. Transfer of database structure from one server to another.

Executed steps:

  • Selecting connection to a database. It is possible to use existing connections and to create a new one.

It is also possible to select assembly containing DataContext types representing LINQ To SQL types. All found types will be displayed as shown in the figure below. It is necessary to select one of the offered types.

List of existing connections

List of types in the assembly

Creating new connection

2. Reading structure of the selected database.

3. Selecting file to save database snapshot to:

Click Next and database snapshot is saved to the specified file and is ready for use.

  • Finishing Wizard Work.

After the program finishes its work, it informs the user about this and waits for further directives. If it is necessary to perform some operations once again then press the “Repeat” button. To finish the program press the “Close” button.


Comparing two database structures

This mode allows comparison of two database structures. Source and target database structures can be received from database snapshot, server or assembly. Comparison results can be analyzed and used to decide if made changes are useful, if complete synchronization is required, etc.

Executed steps:

  • Selecting connection to source database, snapshot or assembly, storing its structure;
  • Selecting connection to target database snapshot or assembly, storing its structure;
  • Setting comparison of two databases. On this step, additional settings that influence comparison process and generation of synchronization script are specified.

  • Reading database structures;
  • Comparison list is provided after database comparison is executed. On this step, you can view differences and select objects to generate synchronization script for.

  • On the next step, you can view script that should be executed to keep two databases in sync.

It is possible to save generated script for its further use and modification.


Synchronization of two database structures

Sequence of actions required to synchronize databases is similar to that required for databases comparison except one thing: after the generated script is displayed the next step makes this script execute keeping target database in sync with source database.

After synchronization is executed synchronization log will be displayedж it is possible to save this log to a file.


Using command line

SqlSchemaSync.exe application provides the ability to save database snapshot and update database from the command line.

Command format:

Reverse database: -r{c|p|s|w} StructureFileName Connection

Update database: -u{c|p|s|w} StructureFileName Connection

-d{c|p|s|w} ConnectionFrom ConnectionTo

Compare database: -c{c|p|s|w}{f|c}{f|c} [StructureFileName1 | Connection1] [StructureFileName2 | Connection2] ScriptFile

Where:

c - console output | connection string

p - show progress form

s - silent mode

w - run wizard

f - file with snapshot

The second symbol of the key determines information display mode:

c – display in consol;

p – display progress form;

s – display is disabled;

w – using wizard to execute the selected operation.