![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
I hope this is the correct news group to post this to, if not could someone please advice me as to a better choice. We are currently releasing V1 of our product which will include a SQL Server DB. After this point when we want to provide Service Packs/Rollups/Upgrades/whatever to our clients we are going to need to manage database changes in some fashion to ensure we keep the database in sync with the App. I have seen people use source safe for this, just keeping a script for each change and labeling them so they get pulled out during the build process. This solution seemed to work well enough, but I was wondering if anyone in this group had any other suggestions. As always any advice that can be provided would be greatly appreciated. |
#3
| |||
| |||
|
|
"J Prescott Sanders" <nomorespam (AT) spam (DOT) com> schrieb im Newsbeitrag news:uIemf2GVEHA.3656 (AT) TK2MSFTNGP11 (DOT) phx.gbl... I hope this is the correct news group to post this to, if not could someone please advice me as to a better choice. We are currently releasing V1 of our product which will include a SQL Server DB. After this point when we want to provide Service Packs/Rollups/Upgrades/whatever to our clients we are going to need to manage database changes in some fashion to ensure we keep the database in sync with the App. I have seen people use source safe for this, just keeping a script for each change and labeling them so they get pulled out during the build process. This solution seemed to work well enough, but I was wondering if anyone in this group had any other suggestions. As always any advice that can be provided would be greatly appreciated. This is a difficult topic: especially if you have to create or change indexes on an existing database with significant amount of data. This can easily take very long effectively stopping your application. Since schema changes (DDL) do not happen within transaction it can be a problem to deal with failure of schema changing statements. This is especially true if you not only want to change the schema but also modify data as part of a schema migration from one version to the next. IMHO source code control is not sufficient since you'll have to take into consideration that customers might be upgrading from different schema versions to the current one. They might have skipped a product version you released and the next release has to take care of both schema migration steps. The ideal solution would be a target schema description and some kind of tool that compares the actual schema with this target schema and performs all changes needed for them to be in synch again. Unfortunately I don't know such a tool but if anybody does know such a tool I'd be glad to get it to know. The single golden rule I can give you: plan schema migration carefully and try to imagine which kind of schema changes you might be doing in the future. Since you're at the beginning of your migration history, you have a good change to get it right. Otherwise the whole topic might easily get out of hand. That of course depends on the nature of your application and the expected schema changes. Good luck! Kind regards robert |
#4
| |||
| |||
|
|
Robert, Thanks for the quick response. It seems you have quite a bit of experience on this subject. Can you comment at all on the processes you have in place to manage database changes within your own system. Any information will certainly be appreciated as I work on a solution for our system. |
|
Thanks in advance. Prescott "Robert Klemme" <bob.news (AT) gmx (DOT) net> wrote in message news:2jdkn2F10ja1kU1 (AT) uni-berlin (DOT) de... "J Prescott Sanders" <nomorespam (AT) spam (DOT) com> schrieb im Newsbeitrag news:uIemf2GVEHA.3656 (AT) TK2MSFTNGP11 (DOT) phx.gbl... I hope this is the correct news group to post this to, if not could someone please advice me as to a better choice. We are currently releasing V1 of our product which will include a SQL Server DB. After this point when we want to provide Service Packs/Rollups/Upgrades/whatever to our clients we are going to need to manage database changes in some fashion to ensure we keep the database in sync with the App. I have seen people use source safe for this, just keeping a script for each change and labeling them so they get pulled out during the build process. This solution seemed to work well enough, but I was wondering if anyone in this group had any other suggestions. As always any advice that can be provided would be greatly appreciated. This is a difficult topic: especially if you have to create or change indexes on an existing database with significant amount of data. This can easily take very long effectively stopping your application. Since schema changes (DDL) do not happen within transaction it can be a problem to deal with failure of schema changing statements. This is especially true if you not only want to change the schema but also modify data as part of a schema migration from one version to the next. IMHO source code control is not sufficient since you'll have to take into consideration that customers might be upgrading from different schema versions to the current one. They might have skipped a product version you released and the next release has to take care of both schema migration steps. The ideal solution would be a target schema description and some kind of tool that compares the actual schema with this target schema and performs all changes needed for them to be in synch again. Unfortunately I don't know such a tool but if anybody does know such a tool I'd be glad to get it to know. The single golden rule I can give you: plan schema migration carefully and try to imagine which kind of schema changes you might be doing in the future. Since you're at the beginning of your migration history, you have a good change to get it right. Otherwise the whole topic might easily get out of hand. That of course depends on the nature of your application and the expected schema changes. Good luck! Kind regards robert |
![]() |
| Thread Tools | |
| Display Modes | |
| |