What is the best way to version control my SQL ser

2019-01-08 10:20发布

What is the best way to version control my database objects? I'm using Visual studio 2005/2008 and SQL server 2005. I would prefer a solution which can be used with SVN.

10条回答
甜甜的少女心
2楼-- · 2019-01-08 10:49

Best way - one which works for you.

Easiest way - one that doesn't currently exist.

We use a semi-manual method (scripts under source control, small subset of people able to deploy stored procedures to the production server, changes to the schema should be reflected in changes to the underlying checked in files).

What we should do is implement some sort of source control vs plaintext schema dump diff ... but it generally 'works for us' although it's a really faff most of the time.

查看更多
我命由我不由天
3楼-- · 2019-01-08 10:54

We use Subversion and all we do is save the sql code in the directory for our subversion project and then commit the code to the repository when we are ready and update from the repository before we start working on something already in there.

The real trick is to convince developers to do that. Our dbas do that by deleting any stored proc (or other database object) that isn't in Subversion periodically. Lose stuff once and pretty much no one does it again.

查看更多
聊天终结者
4楼-- · 2019-01-08 10:56

Look at the tools offered by RedGate. They specifically deal with backup / restore / comparison cases for SQL Server objects including SP's. Alternately I am not sure but I think that Visual Studio allows you to check sp's into a repository. Havent tried that myself. But I can recommend RedGate tools. They have saved me a ton of trouble

查看更多
聊天终结者
5楼-- · 2019-01-08 10:58

I don't know of a pre-packaged solution, sorry...

... but couldn't you just a little script that connected to the database and saved all the stored procedures to disk as text files? Then the script would add all the text files to the SVN repository by making a system call to 'svn add'.

Then you'd probably want another script to connect to the DB, drop all stored procedures and load all the repository stored procedures from disk. This script would need to be run each time you ran "svn up" and had new/changed stored procedures.

I'm not sure if this can be accomplished with MS SQL, but I'm fairly confident that MySQL would accommodate this. If writing SVN extensions to do this is too complicated, Capistrano supports checkin/checkout scripts, IIRC.

查看更多
该账号已被封号
6楼-- · 2019-01-08 10:59

We do dumps to plaintext and keep them in our VCS.

You'd be able to script a backup-and-commit to do something similar.

查看更多
Deceive 欺骗
7楼-- · 2019-01-08 11:02

I agree that if possible, you should use database projects to version your db along with your application source.

However, if you are in an enterprise scenario, you should also consider using a tool to track changes on the server, and version those changes. Just because the database project exists doesn't mean some admin or developer can't change those sprocs on the server.

查看更多
登录 后发表回答