How can we help you today? How can we help you today?
AlexYates
Sync-DlmDatabaseSchema uses SQL Compare under the hood. SQL Compare wraps the entire update into a single transaction. If there are errors at run time the transaction is rolled back. That is why your changes are not being deployed. This is by design - it is to protect the user from ending up in a position where only half the changes have been deployed and they need to unpick the mess. In order to solve your problem I propose two solutions. The first is quicker to implement, the second is more effort but safer: Option 1: Ignore transactions Of course, you now lose the benefit of transaction, but this should be a quick and easy way to force the behaviour you want. SQL Compare has various options that you can set, one of which is NoTransations (or nt). To run Sync-DlmDatabaseConnection with this option you could write a script that looks something like this: $options = "NoTransactions" Sync-DlmDatabaseSchema -Source $someScriptsFolder -Target $someDlmDatabaseConnection -SQLCompareOptions $options Option 2: Filter files If you would like to only deploy specific objects but you would like to keep the security of transactions you should use filters to either filter the objects out of source control our your deployment. You can filter objects out of source control using the SQL Source Control GUI. To filter the objects out at deployment time you can use -FilterPath to reference a .scpf file. The command is documented here: https://documentation.red-gate.com/display/DLMA2/Sync-DlmDatabaseSchema Creating a .scpf file is documented here: https://documentation.red-gate.com/display/SC12/Using+filters / comments
Sync-DlmDatabaseSchema uses SQL Compare under the hood. SQL Compare wraps the entire update into a single transaction. If there are errors at run time the transaction is rolled back. That is why yo...
0 votes
*Note, for my suggestion with Git it's probably simplest to commit/push with whatever git client you normally use. Whether that's Git Bash, SourceTree or something else. / comments
*Note, for my suggestion with Git it's probably simplest to commit/push with whatever git client you normally use. Whether that's Git Bash, SourceTree or something else.
0 votes
What source control system are you using? Can I assume you were using a git repo on the local machine (and that local repo was lost)? Is there a remote repo involved somewhere? On a server somewhere or in the cloud perhaps? / comments
What source control system are you using? Can I assume you were using a git repo on the local machine (and that local repo was lost)? Is there a remote repo involved somewhere? On a server somewher...
0 votes
I like to stick an IF NOT EXISTS CREATE DATABASE script in source control for each of my databases (for each environment). This way I can source control the way I set up stuff like file groups and possibly security at a per database level. This is useful because some of that stuff is not included by default with the Redgate tools or people tend to filter it out. (Who has the same users on DEV and PROD?) Note, add this create script in a parent or sister directory to your SQL Source Control directory. I try to avoid adding my own scripts to the directory you give to Redgate because you can confuse Redgate tools which are designed to parse all the sql scripts in that directory. Then, I add a simple step in Octopus Deploy to run my IF NOT EXISTS CREATE DATABASE script before the "Redgate Deploy from Package" step. Then you know your DB will always exist. There is an Octopus Deploy step template to run a SQL script here: https://library.octopusdeploy.com/step-templates/73f89638-51d1-4fbb-b68f-b71ba9e86720/actiontemplate-sql-execute-script This step template asks you to type the script into the Octopus GUI but it does also accept variable substitution so you could package up your SQL scripts into a different NuGet and reference them from that variable. / comments
I like to stick an IF NOT EXISTS CREATE DATABASE script in source control for each of my databases (for each environment). This way I can source control the way I set up stuff like file groups and ...
0 votes