Generic SQL and Software migration platform - database

I saw a lot of different database migrations tools (here)
Which make me asking
is there some generic database migration platform that supports SQL and executable (any language) migration tools corresponding to the language?
Let's say I want some procedure in any language to be made. Why do I need to choose a platform in my current project's language?
In general, there are general migration platforms for software without database relations?
Upgrade and downgrade software procedures are the same. Why not use the same pattern?

Related

Database Migration with the flyway or dbup(.net library/dbup extension) with PostgreSQL

First of all, I am sorry because it might be a stupid question but after a day research I am confused and I have a very less time to decide.
We are using TFS as a CI tool and as an SCM. And Postgresql for DB.
Planning to Automate DB with Postgresql and TFS.
Please suggest a tool for this that I can go forward with running my SQL files on specific DB as I want.
Can anyone please tell me if I use DbUp Migration Extension of TFS is it supporting Postgresql? As this link shows it only works with Microsoft SQL Server or Microsoft SQL Azure and then another Document says DbUp supports a number of different databases including Postgresql.
also, Does Flyway have support for c# and TFS ?
Most popular tools to do what you want is Liquibase and Flyway.
As I know there is only one significant difference: Flyway - plain SQL based, Liquibase - provides abstraction level based on XML, JSON or YAML as well as plain SQL. You can use abstractions (provided by Liquibase) to increase portability of your scripts.

How do you manage your sqlserver database projects for new builds and migrations?

How do you manage your sql server database build/deploy/migrate for visual studio projects?
We have a product that includes a reasonable database part (~100 tables, ~500 procs/functions/views), so we need to be able to deploy new databases of the current version as well as upgrade older databases up to the current version. Currently we maintain separate scripts for creation of new databases and migration between versions. Clearly not ideal, but how is anyone else dealing with this?
This is complicated for us by having many customers who each have their own db instance, rather than say just having dev/test/live instances on our own web servers, but the processes around managing dev/test/live for others must be similar.
UPDATE: I'd prefer not to use any proprietary products like RedGate's (although I have always heard they're really good and will look into that as a solution).
We use Red-Gate SQLCompare and SQLDataCompare to handle this. The idea is simple. Both compare products let you maintain a complete image of the schema or data from selected tables (e.g. configuration tables) as scripts. You can then compare any database to the scripts and get a change script. We keep the scripts in our Mercurial source control and tag (label) each release. Support can then go get the script for any version and use the Redgate tools to either create from scratch or upgrade.
Redgate also has an API product that allows you to do the compare function from your code. For example, this would allow you to have an automatic upgrade function in your installer or in the product itself. We often use this for our hosted web apps as it allows us to more fully automate the rollout process. In our case, we have an MSBuild task that support can execute to do an automatic rollout and upgrade. If you distribute to third-parties, you have to pay a small additional license fee for each distribution that includes the API.
Redgate also has a tool that automatically packages a database install or upgrade. We don't use that one as we have found that the compare against scripts for a version gives us more flexibility.
The Redgate tools also help us in development because they make it trivial to source control the schema and configuration data in a very granular way (each database object can be placed in its own file)
The question was asked before SSDT projects appeared, but that's definitely the way I'd go nowadays, along with hand-crafting migration scripts for structural db changes where there is data that would be affected.
There's also the MS VSTS method (2008 description here), anyone got a good article on doing this with 2010 and the pros/cons of using these tools?

Which tool can help generate a SQL server 2005/2008 database from E-R diagram?

In Visio 2003 Architect version I can generate a SQL Server Database on the fly from UML ER diagram. But there is no such a way by using Visio 2007. My question is: Any other good and latest tools can support ER-> DB or DB->ER very well for SQL2005/2008?
I think Enterprise Architect can do that too.
http://www.sparxsystems.com.au/
You can do the ER diagram on Visual Studio creating a dbml file and then export to a Sql Server script using the huagati plugin. http://www.huagati.com/dbmltools/
If you're looking for a free/open source tool to achieve this, you could try:
DBDesigner
From the website:
DBDesigner 4 is a visual database design system that integrates database design, modeling, creation and maintenance into a single, seamless environment.
It combines professional features and a clear and simple user interface to offer the most efficient way to handle your databases.
DBDesigner 4 compares to products like Oracle's Designer©, IBM's Rational Rose©, Computer Associates's ERwin© and theKompany's DataArchitect© but is an Open Source Project available for Microsoft Windows© 2k/XP and Linux KDE/Gnome. It is release on the GPL.
And it supports the following features:
Available on Linux / MS Windows
User Interfaced based on industry standard layouting software
Design Mode / Query Mode
Reverse engineering MySQL, Oracle, MSSQL and any ODBC databases
Userdefined schema-generation
Model-To-Database syncronisation
Index support
Automatic foreign key placement
Weak entity support
Standard Inserts storing and sync
Full documentation capabilities
Advanced model printing
Output as image
All MySQL datatypes with all options
User defined datatypes
Database storage, ability to save model within database
Network-/Multiuser access through database storage
Version control*
SQL Query Builder
SQL Command History
SQL Command storage within model
Plugin interface
I think the bolded ones above (my own emphasis) should give you what you require (i.e. effectively two-way database/model synchronization).
I have used the tool in the past to reverse engineer an existing database to an ER diagram. From what I remember, it wasn't the most stable software I'd ever used (I seem to recall it crashed a couple of times) however, this was a little while ago so it may be more stable now.
I remember that in Visio 2003 that was only possible, I believe in the Enterprise Edition. Could that be your issue with 2007?
Most of the tools don't handle SQL 2005/2008 correctly. But CA ERwin® Process Modeler does the best job (at a cost though).
There is a community edition but it is limited to 25 objects per model.
Give it a try and let us know.

What are the real benefits of Visual Studio Team System Database Edition (GDR)?

Interested if anyone has used VSTS Database Edition extensively and, if so, which features did you find the most useful over the standard Visual Studio database projects?
What are the most compelling features as opposed to alternative schema management options or tools like RedGate's SqlCompare etc?
Edit: Microsoft just released the RTM version of Database Edition (GDR) which adds support for SQL Server 2008 - link is here. I've previously blogged (briefly) about it here.
Has anyone had a chance to do any real work with the GDR? It looks like there are some real enhancements including refactoring support. I'd be really interested to hear if people are using it with SQL Server 2008...
Download From: [http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&displaylang=en]
We use the database edition functionality of Team Suite on Stack Overflow. As Vaibhav said, mostly it is useful because it gives you a one-click way to reverse engineer a database into source control, and keep it up to date.
Note that it also has decent Data and Schema compare tools as well. You can compare projects to physical databases and vice-versa. This makes it pretty easy to keep your database up to date, no matter where you make changes -- in the filesystem database project, or in the physical database itself.
If you compare it to tool like RedGates, that are specifically taylored for SQL Server, the benefits are that if you have the proper MSDN subscription you do not have to spend more money for other tools (but keep in mind that RedGate tools are much more mature) and it covers some points (like regression tests and unit tests at the DB level) that other tools do not cover and it make so in a integrate manner with other testing tool of VSTS, so that you can record results in Team System.
Compared to a tool like Embarcadero ErStudio (my solution of choice) it misses the cross database features, and this is a big problem, at least for me.
If you are a "all Microsoft" shop with the proper MSDN subscription it could be worth spending time on it.
We are currently using the GDR 2008 projects for managing our entire database development and deployment on a greenfield system. We use a TFS build script to call out to the MSBuild task for deploying the databases along with executing the data generation plans for pre populating the testing environment with data.
The key with the data generation plans was finding the build task to use which is :
TaskName="DataGeneratorTask"
AssemblyName="Microsoft.Data.Schema.Tasks, Version=9.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
All of this gdr project work has been unbelievably helpful and I think it is well worth the learning curve to get to know these project types. The value they provide is astronomical in productivity and visibility.
It allows us all to view the entire system in a single visual studio solution along with allowing us to start with a clean slate of our system at any point in time with either a click of the deploy command or a custom build configuration.
This blog
will help with getting the TFSBuild script to run if you're interested.
The VSDB test integration is so painful to configure that we abandoned it, and that's the only thing it's got that Red-Gate doesn't.
Red-Gate's tool is miles more useful. It does live DB and scripts in folders, but also has "snapshots." The aspect of Red-Gate SQL Compare that gives it the win is its Snapshot ability and the fact that your license allows you to deploy their assemblies and use them to perform database maintenance at customer run-time.
It has made upgrades in the COTS application that I develop a breeze. A Snapshot is a binary schema representation. You can package them as resources in an assembly, then use the snapshot in a customer run-time schema compare to bring an existing database up to the current rev.
Probably the best advantages are around being able to version control individual DB schema objects (which you could do with the older "Database Projects"), but have the power to "build"/deploy the project and convert those individual scripts into a complete database.
The ability to import scripts and have the Wizard covert individual schema items into separate files is very handy if you've inherited a DB schema.
Given that recently the licensing model changed, it makes it even more enticing because it's included with the Developer edition SKU. It also provised support for "Database Unit Tests" which might be useful.
From the 2008 GDR, I understand that they now support SQL Server 2008.
You can do database versioning for one. That is useful.
The other thing that is really useful is the ability to define type of seed data for testing. Through this Visual Studio will populate the database with random data and this is great for testing purposes.
There are other benefits as well of course.
It is always useful to put everything under the same source control, so your data-dude can be shelving, checking in, compare with history, and even resolve workitems and bugs using the same tools that other team members are using.
Also to be able to have one versionning mechanism across the whole application, in other words, it doesn't make sense to say that my source control has all the versions of my project while your database can't fit with any of these old versions, unless you take a backup or a snapshot of the database with each build.

Database functionality with WPF app: SQLite, SQL CE, other? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I want to extend a WPF application with database functionality. Which database engine would you suggest and why? SQLite, SQL CE, other?
Depending on the applications use, I would recommend using SQL Lite because it doesn't require you to install any other software (SQL CE or Express, etc. usually would require a separate install).
A list of the most important benefits for SQL Lite from the provider link at the bottom of this post:
SQLite is a small C library that
implements a self-contained,
embeddable, zero-configuration SQL
database engine. Features include:
Zero-configuration - no setup or
administration needed.
Implements most of SQL92. (Features
not supported)
A complete database is stored in a
single disk file.
Database files can be freely shared
between machines with different byte
orders.
Supports databases up to 2 terabytes
(2^41 bytes) in size.
Small code footprint: less than 30K
lines of C code, less than 250KB
code space (gcc on i486)
Faster than popular client/server
database engines for most common
operations.
Simple, easy to use API.
Self-contained: no external
dependencies.
Sources are in the public domain.
Use for any purpose.
Since you're using WPF I can assume you're using at least .NET 3.0. I would then recommend going to .NET 3.5 SP1 (sames size as .NET 3.5 but includes a bunch of performance improvements) which includes LINQ.
When using SQLite, however, you would want to use the following SQLite Provider which should provide LINQ support: An open source ADO.NET provider for the SQLite database engine
I used SQL Compact Edition with my WPF app and I'm happy with my decision. Everything just works (since WPF and SQLCE are both MS they play nicely together), and the installation of the runtime is small enough and smooth enough for my needs. I created and modified the database through visual studio.
Just to throw out a differing opinion, we've been using SQL Compact Edition for the last year and have been generally satisfied with. The configuration is cake and it behaves very similar to a regular MS SQL database. There are things missing, like triggers and stored procedures, but SQL 3.5 CE has virtually everything else we'd need. It's about 2Mb of .dlls to install. It offers database encryption, transactions, and supports VS's typed dataset designer (3.1 had some problems, but CE 3.5 is great!).
SQL CE DLLs can be packaged into your own application and need not require a separate install. But MS provides a default install package, if you dont want to learn about setup ...etc.
More ot it, SQL CE supports private deployment.
SQLite is a really nice product although I miss features from PostgreSQL. There are other, especially non-SQL, databases you may to consider like Berkeley DB.
/Allan
I would agree that SQLite is the way to go.
Subsonic 2.1 now includes SQLite support as well.

Resources