Full list of deployment warnings
Published 13 December 2022
This is the full list of warnings generated as part of SQL Compare's deployment analysis:
High - Data loss / safety related warnings
These warnings cover cases where there may be data loss as a result of the requested operation, or the script may fail because it is not clear what to fill a column with.
- A CLR type needs to be unbound from dependent tables, but this is not possible without data loss. If the tables in question are not selected explicitly the script may fail.
- This deployment adds a column as NOT NULL, with no default value specified. The table will be rebuilt. Any data in the table will cause the deployment to fail.
- This deployment truncates a column on a table. Data may be lost unless additional steps are taken to preserve it.
- This deployment alters a column to NOT NULL, with no default value specified. Any NULLs in the column will cause the deployment to fail.
- A column cannot be cast because the source type is not a system type. The script may fail.
- A column cannot be cast between source and target data types. The script may fail.
- This deployment casts a column to a lower size or precision. Any data that exceeds the new column size might lose precision, or the deployment could fail.
- This deployment alters the XML schema collection used by a column. Any data that does not conform to the new schema might cause the deployment to fail.
- During a table rebuild operation, a column couldn't be matched to a column in the source table. Data in the missing column will be lost.
- A column no longer allows NULL values, but it has a new default set up. During the table rebuild such NULL values will be changed to the new default value.
- A column is being changed from a computed to a normal column. The computed column data will not be migrated during the rebuild.
- This deployment drops column(s).
- This deployment drops a table.
- This deployment shortens the history retention period for a table. This may cause a loss of history data for this table.
- This deployment will run without transactions. This could leave your database in an inconsistent state if it fails. We recommend backing up the database as part of the deployment, or enabling transactions.
High - Undeployable object warnings
These warnings cover other cases where the source object can't be deployed to the target database, e.g. because of encryption or the options used.
- A trigger cannot be decrypted in one or more of the data sources. Its contents cannot be compared and it cannot be synchronized.
- A DDL trigger cannot be decrypted in one or more of the data sources. Its contents cannot be compared and it cannot be synchronized.
- A function cannot be decrypted in one or more of the data sources. Its contents cannot be compared and it cannot be synchronized.
- A view cannot be decrypted in one or more of the data sources. Its contents cannot be compared and it cannot be synchronized.
- A procedure cannot be decrypted in one or more of the data sources. Its contents cannot be compared and it cannot be synchronized.
- A certificate cannot be recreated. The script may fail.
- A symmetric key cannot be recreated. The script may fail.
- An asymmetric key cannot be recreated. The script may fail.
- Objects that reference, or are referenced by, the objects you want to deploy aren’t included in the deployment. If you don't include these referenced objects, the deployment script may fail or produce unexpected results.
- You’re attempting to deploy one or more memory-optimized objects (memory-optimized tables, natively compiled stored procedures or memory-optimized table types) in a transaction, which is not supported by SQL Server. If you want to deploy memory-optimized objects, you need to select the 'Do not use transactions in deployment scripts' project option.
- Indexes using the STATISTICS_INCREMENTAL option and statistics using the INCREMENTAL option are only supported on partitioned tables. The 'Ignore filegroups, partition schemes and partition functions' option is selected, so partition schemes will be ignored. This may cause the deployment to fail.
- Full-text indexes can't be deployed in transactions, so SQL Compare will deploy changes to full-text indexes after transactions are complete. If other objects rely on changes to full-text indexes (using CONTAINS, FULLTEXT, CONTAINSTABLE or FREETEXTTABLE), the script may fail. We recommend you select the 'Do not use transactions in deployment scripts' project option when deploying full-text indexes.
- The deployment includes stretch tables but Stretch Database isn't enabled on the target database. Make sure Stretch Database is enabled on the target database before you run the deployment script.
High - Version change warnings
These warnings cover cases when the source database is using a feature that isn't supported in the target database - e.g. service broker objects are not supported in Azure - and so the deployment script cannot be run successfully on the target.
- Message type is not supported in the target database version
- Contract not supported is not supported in the target database version
- Queue not supported is not supported in the target database version
- Service not supported is not supported in the target database version
- Route not supported is not supported in the target database version
- Event notification is not supported is not supported in the target database version
- Service binding is not supported is not supported in the target database version
- The sparse property on a column is not supported in the target database version.
- The column set property on a column is not supported in the target database version.
- The filestream property on a column is not supported in the target database version.
- A type on a column is not supported in the target database version.
- The filter condition on an index is not supported in the target database version.
- The full text stoplist is not supported in the target database version.
- The change tracking on a table is not supported in the target database version.
- Extended properties are not supported in the target database version.
- Filegroups are not supported in the target database version.
- A user type is not supported in the target database version.
- The use statement is not supported in the target database version.
- A trigger contains the WITH APPEND clause which is not supported in the target database version.
- A synonym references a 3 or 4 part name which is not supported in the target database version.
- A table uses data compression which is not supported in the target database version.
- A columnstore index is not supported in the target database version.
- A clustered columnstore index is not supported in the target database version.
- A filetable is not supported in the target database version.
- A sequence object is not supported in the target database version.
- A search property list is not supported in the target database version.
- A security policy is not supported in the target database version.
- A trigger contains the WITH APPEND clause which is deprecated in the target database version.
- LOCK_ESCALATION on a table is not supported in the target database version.
- A user type can't have indexes in database versions older than SQL Server 2014.
- Memory-optimized table is not supported in database versions older than SQL Server 2014 or in Microsoft Azure SQL Databases.
- Natively compiled function is not supported in database versions older than SQL Server 2014 or in Microsoft Azure SQL Databases.
- Natively compiled stored procedure is not supported in database versions older than SQL Server 2014 or in Microsoft Azure SQL Databases.
- The STATISTICS_INCREMENTAL option for indexes and the INCREMENTAL option for statistics aren't supported in previous versions of SQL Server (SQL Server 2012 and earlier) and Microsoft Azure SQL Database. The deployment script will not include the incremental statistics option.
- Memory-optimized user-defined table type is not supported in the target database version.
- A user defined table type is not supported in the target database version.
- A selective XML index is not supported in the target database version.
- The REMOTE_DATA_ARCHIVE option on a table is not supported in the target database version.
- Temporal tables are not supported in the target database version. The table can be deployed but will not be a temporal table in the target database.
- Graph tables are not supported in the target database version. The table can be deployed but will not be a graph table in the target database.
Medium - Script may fail
These warnings cover cases where the script may fail to run - e.g. if filegroups are not identical between the databases, or there may be dependencies that can't be identified.
- Objects need to be created using one or more non-standard filegroups. These filegroups may need to be created manually.
- Tables need to be created using one or more non-standard filegroups. These filegroups may need to be created manually.
- Dropping a schema is a potentially dangerous operation. Dependencies for the schema are not selected automatically. If you are sure you want to drop this schema please select the objects that belong to this schema manually.
- Dropping a partition scheme is a potentially dangerous operation. Dependencies for the partition scheme are not selected automatically. If you are sure you want to drop this partition scheme please select the objects that use this partition scheme manually.
- Dropping a partition function is a potentially dangerous operation. Dependencies for the partition function are not selected automatically. If you are sure you want to drop this partition function please select the objects that use this partition function manually.
- Dropping a user is a potentially dangerous operation. Dependencies for the user are not selected automatically. If you are sure you want to drop this user please select the objects that belong to this user manually.
- Dropping a user defined type is a potentially dangerous operation. Dependencies for the type are not selected automatically. If you are sure you want to drop this user defined type please select the objects that belong to this user defined type manually.
- Full text information is being added to the database, but the database might not be full text enabled (possibly because it has recently been restored from a backup). Make sure any full text catalogs have been rebuilt before running the script.
- Change tracking is being added to a table. Make sure database change tracking is enabled before running this script.
- A function cannot be decrypted in one or more of the data sources. Its dependencies cannot be exactly identified. The script may fail.
- A view cannot be decrypted in one or more of the data sources. Its dependencies cannot be exactly identified. The script may fail.
- A procedure cannot be decrypted in one or more of the data sources. Its dependencies cannot be exactly identified. The script may fail.
- Object will have its schemabinding dropped and reapplied. This operation could fail if objects it consumes are no longer compatible.
Medium - Potentially unexpected behavior
These warnings cover cases where the script will run, but the behaviour might not be as expected, e.g. because objects cannot be fully compared or deployed.
- The contents of symmetric keys cannot be compared. SQL Compare will only compare the owner and the permissions if required.
- A user does not have an associated login. If the user was not defined with WITHOUT LOGIN then the source database is in an inconsistent state. Please fix this by using sp_change_users_login.
- A user does not have an associated login. If the user was not defined with WITHOUT LOGIN then the target database is in an inconsistent state. Please fix this by using sp_change_users_login.
- A user has properties that cannot be synchronized.
- An application role will be created with a default password of 'p@ssw0rd'
- The target database includes a table that was recovered from a failed SQL Compare deployment. You can use recovery tables to restore data lost in a failed deployment.
- The masking function for a column will be ignored. The dynamic data masking option is not supported in the target database version.
- A temporal table has a history retention policy, which is a Server 2017 feature. This deployment will omit the retention period.
Migration scripts in a SQL Change Automation project are ignored when using SQL Compare. The comparison will use the state of the project as represented by the Programmable Objects and Offline Schema Model folders.
Medium - Performance warnings
These warnings mostly tell you that we're going to do a table rebuild - creating a new table and transferring all the target data into it, then dropping the old table and renaming - which can be a costly operation in performance terms. We do this when there is no way to use ALTER statements to get your target table into the source state. There are a few other similarly long running operations we also warn you about.
- The filegroup of a table has changed. The table must be rebuilt. The data in the table apart from dropped columns will be preserved.
- The text filegroup of a table has changed. The table must be rebuilt. The data in the table apart from dropped columns will be preserved.
- The partitioning of a table has changed in a way that requires a table rebuild. The data in the table apart from dropped columns will be preserved.
- Cannot alter column. The table must be rebuilt. The data in the table apart from dropped columns will be preserved.
- Cannot alter period of a column on system-versioned temporal table. The table must be rebuilt. The data in the table apart from dropped columns will be preserved.
- Cannot alter IDENTITY property on a column. The table must be rebuilt. The data in the table apart from dropped columns will be preserved.
- The IDENTITY column on a table has changed. The table must be rebuilt. The data in the table apart from dropped columns will be preserved.
- A column depends on a CLR type that has been modified. The table must be rebuilt. The data in the table apart from dropped columns will be preserved.
- The column order in a table has changed. The table must be rebuilt. The data in the table apart from dropped columns will be preserved.
- A column is a persisted computed column that references columns that need to be rebuilt. The table must be rebuilt. The data in the table apart from dropped columns will be preserved.
- A column must be added and does not allow NULL values. A default will be bound to it. The table must be rebuilt. The data in the table will be preserved.
- A table contains filestream data in a column. The table must be rebuilt. The data in the table apart from dropped columns will be preserved.
- The filestream filegroup of a table has changed. The table must be rebuilt. The data in the table apart from dropped columns will be preserved.
- Cannot add column set on a field. The table must be rebuilt. The data in the table apart from dropped columns will be preserved.
- The deployment will disable Stretch Database on a table. To do this, SQL Compare will download the table's remote data from Azure and then rebuild the table. Downloading remote data may cause the deployment to take a long time.
- The deployment will alter a stretch table. To do this, SQL Compare will download the table's remote data from Azure and then rebuild the table. Downloading remote data may cause the deployment to take a long time.
- A table must be rebuilt to convert it from a normal table into a SQL Graph table.
- A table must be rebuilt to convert it from a SQL Graph table into a normal table.
Low - informational warnings
These warnings let you know various things that could potentially make the script fail, or that you might not have expected to happen, but that are unlikely to have a major impact.
- A function has changed its type. It must be dropped and recreated.
- An XML schema collection needs to be rebuilt. It will be unbound from the column. After the rebuild the XML schema collection will be rebound to the table. The data in the table will be preserved.
- Creating statistics. When deploying statistics, the SAMPLE option isn’t supported. If you're deploying statistics that use SAMPLE, you'll need to manually modify the deployment script for those objects.
- A column is being marked as NOT NULL. The default value will be applied where appropriate.
- The login for a user may not exist in the target database.
- A sequence needs to be restarted as the current start value falls outside of the new range.
- This deployment includes one or more memory-optimized objects (memory-optimized tables, natively compiled stored procedures or memory-optimized table types). Make sure that your target database has a memory-optimized filegroup.
- The deployment will restart a sequence in the target database with the starting value of the sequence in the source database. If you want to preserve the value of the sequence in the target database, you'll need to modify the script to run the following: ALTER SEQUENCE <sequence> RESTART WITH <value from the source database>