Microsoft Database project requires Visual studio 2010 premium or higher? Are there any open source free ones? - database

I need to know wether or not to buy the VS 2010 premium or not. I have the Visual StudioTeam System 2008 Database Edition working on my own version of vs 2008 team suite. My coworkers only have VS2008 professional. We are moving to VS2010 now. We do not have MSDN licenses for our company right now. We are looking to buy just the VS2010 no MSDN. It is very pricey to get 6 licences of VS2010 premium. We need to get our database into source control. We are currently email scripts around, and it very difficult to keep track off. Are there any non-microsoft solutions that would be the same features and be free?

Does the entire team need the Premium functionality? Contrary to the title of your question, VS2010 Professional does include the Database Project. What you don't get is schema compare, data compare, data generator, unit testing, refactoring, and static code analysis. So one compromise option would be to get one Premium for the person who needs the above tools, and leave everyone else with Professional?

How much time do you lose on your projects emailing data model changes around? How much extra time does the team spend debugging because of using that process? If you add up all that time, look at what could have been built instead and general developer happiness; maybe the price for VS Premium isn't so bad.
I'm just saying its easy to be blown away by sticker shock on tools until you add up all the lost time that could have been going to money making product development.

For database projects you definitely need what they call a "data dude" (Database Edition) or Team System (for 2008).
For 2010 it's either Premium or Ultimate.
Another option would be to move database development into the main (non-database project) by using some ORM tool. Either Linq2Sql, Entity Framework or a third party solution like nHibernate.

Related

SSDT & redgate source control - how to link?

We currently have our database objects in TFS2012 and happily use redgate sql source control to check in & getlatest. So far this works great.
I now want to use SSDT in order to create a dacpac that defines the latest schema.
What I'm missing is how to link the SQL Server database project so that a check-in via redgate source control would ripple through to the database project (upon a getlatest) and therefore schema changes would be shown in the dacpac upon a recompile?
thanks
As it's 3+ months after I posted the question, and https://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ I guess I should state what the outcome was...
We had a number of unresolved (at the time at least) issues automating SQL Compare, which was the reason for looking into SSDT in the first place. The more we looked at SSDT the more we became impressed with it (still has some issues, but doesn't everything?) to the extent that we have now dropped our use of redgate, therefore the need for SSDT to play nicely with redgate is no longer required.
This is not to say we're not a fan of Redgates products or that the answer is to drop redgates products - just that they didn't meet our requirements when our requirements changed (we started to automate everything).
I'll still be sending Redgate a Christmas card, honest :)
Here's a document describing how to use SQL Source Control and SQL Compare in conjunction with SSDT database projects. It's beta functionality, and we're aware of a few issues, but please report them to us (support#red-gate.com) so we can prioritize our backlog.

Do Data Tier Application Projects replace Database Projects from Visual Studio Database Edition?

I'm only slightly familiar with the features of Data Tier Applications and what Database Projects did in the Database Edition of visual studio.
Are these two different overlapping solutions for database version control? Or does Data Tier Application functionality replace outright the need to use visual studio database edition and database projects?
DAC provides an application model which can be used as an interface between developers and DBAs. The developer edits the model, the DBA manages/deploys from the model. For example, once the model is built or extracted, it can be deployed to multiple servers.
Imagine the .dacpac as an .exe. The developer builds an .exe and hands it off to someone. At this point, it would be nice if the developer doesn't have to worry about where that .exe runs because the .exe is internally consistent - it either runs or it doesn't. Why should the developer need to worry about targetting 2008, 2005, or Azure specifically? Just develop the app model and let DAC take care of the rest...
Having this deployment artifact also provides some new capabilities. Examples include versioned deployments, the ability to determine if someone has changed the database since the last deployment or upgrade, the ability to create the same database in different target servers.
Do you like having to manage a library of upgrade scripts for your various databases? Wouldn't it be nice if the entire state of your database could be built or captured (extracted) at any point in time?
The database application project mashup in VS 2010 will be resolved in an upcoming release of database-centric developer tools. Investing in dbschema or DAC wont affect forward compatibility.
Right now the difference between Database Projects and Data Tier Projects is at the point of deployment. If you want to create a dacpac, you'd use the Data Tier Project. If you want to createa .dbschema and sql migration file, you'd use the conventional Database Project.
As far as I'm aware, Data Tier Applications are expected to be important in future for SQL Azure deployment.
Unless you're specifically looking at SQL Azure, I'd use Database Projects for now. It all depends on what you're trying to achieve. It could be that SQL Source Control (by Red Gate, the company I work for) is more suited to your needs.
I believe Visual Studio database projects are targeted at developers.
Data Tier Applications are targeted at DBAs. See this blog for details.

Database Design: Is there a great program to prototype in and then 'export'?

I have been playing around with Visual Studio 2010 over the past few days working with their SQL Template. I have to say...BOOOOOOOO...not working.
Now I have had more fun with xsd's in Visual Studio's C#. I expected database design to be that easy or better but no such luck. Are there any applications out there that you would recommend for the novice headed towards medium skill sets on DB design?
Or, is it just better to bite the bullet? Should I sketch it out or is there a better app to help with this?
I personally start my design using diagrams in SQL Management Studio. If you are concentrated on DB design it really does a good job. If you are more worried about class diagrams then Enterprise Architect is really good tool if you can afford it.
Have you looked at Enterprise Architect?:
Latest UML 2.3 specification
XMI 2.1 import and export
Reporting in HTML and RTF
MDA transformations
Profiles and Technology support
Testing, resource tracking, maintenance
Reverse engineer source code in 10+ languages
Import database schema
Visualize XSD and WSDL source
Import .NET and Java binaries
From single users to large teams
Repository support for major DBMSs
Fast to load, fast to use even with large models
Shareable files or Repository based models
Version control with any SCC compliant tool
Role-based security built-in
Have you tried NORMA?
This can capture the design and generate DDL/XSD without overdoing it like, er, Enterprise Architect
I used to (2003-2005) use Visio for Enterprise Architects - which included reverse engineering and schema publishing, but it doesn't support the more recent editions of SQL Server.
You can however design using Database Diagrams in SQL Management Studio as another alternative, or you could try the Entity Framework (v4)'s Code First or Model-First approaches.
There's also some info on design tools here.
More on EF's Code First
A tutorial on EF's Model-First

SQL Server Management Studio as Application Platform

Could the SQL Server IDE ever become an application development platform for enterprise applications? In a similar way to the old xBase applications, but, you know, better?
The main reason is that the Management Studio is one of the best “data centric” application I’ve ever used. It has most of the main ingredients for the proposed solutions:
powerful data manipulation language (SQL :o) )
good security
distributed architecture
The main features that it lacks:
a GUI toolkit: something simple and standard, enterprise applications usually don’t require fancy UIs
some form of automation (.Net, COM, I really don’t care as long as it works)
MS Office integration (especially Excel)
So…?
UPDATE:
The question above is a request for feedback on an idea. I'm not planning to use SSMS to build an interactive application in the near future. I would really like to hear what do you think about it and what other suggestions you might have (maybe there is already a product which does exactly that).
A shorter text for the question would be "If SSMS and MS Access could marry, how would their child look like?"
2nd UPDATE:
"Microsoft announces its new product codename 'Frankenstein'. The new product tries to combine the ease of development of database applications from the old Fox Pro and Access times, with the brand new SQL Server 2012 suite. As 'Frankenstein's Product Manager, Jim Bob, stated "[Frankenstein] will enable the developers to shut the f*#k up, and just build that thing already. Not spend their (highly remunerated) time arguing what's the best ORM, or AJAX toolkit, or should they use SOA etc... (btw, since 2009, SOA is dead)"
Well it depends on what way you look at it.
You can extend and build plugins for management studio but you can also use the visual studio shell as the base for new applications (altho I don't think this is what you want?)
However re-reading your question it looks like you actually want to build applications for SQL server. In that case you might want to check out Visual Studio Team Systems Database Edition
There's two risks involved with building applications on top of SQL Server Management Studio.
First, SQL Server Management Studio has been fairly consistent from 2005 to 2008, but that's only three years of release time. SQL Server 2000's tools were dramatically different, and there's no reason to expect SQL Server management tools to always remain the same.
For example, at the Professional Association for SQL Server (PASS) Summit in Seattle in 2008, Microsoft demoed a new management framework for SQL Server. The databases will be packaged and managed in a way quite different from what we're used to in SSMS. Project Kilimanjaro (think of it as SQL 2008 R2) will be the "down payment" on that management, with the rest of the tools coming in later versions. SSMS will look, feel and work differently in order to accomodate this new way of building database-driven applications.
Second, Microsoft's architecture for SSMS is not pluggable, and they haven't encouraged any third party development inside SSMS that I'm aware of. You can build some level of interactivity by using RDLC reports - standalone SQL Server Reporting Services applications that run inside SSMS - but for the most part, you're not encouraged to build atop SSMS because they do want the right to change it when they need to improve it.
I've got good news, though - you mentioned that you'd want some kind of Office tie-in. Keep your eye out for Project Gemini announcements. Donald Farmer did demos of it at PASS, and there's probably some video circulating around. It uses Excel as a front end for BI analytics, and they used million-row-spreadsheets that were storing data back in SQL. There's not much out out yet for the public, but keep your eyes peeled.
To answer the shorter question - Have you seen the various Frankenstein films?
The longer question - why would you want it to, you already have Visual Studio? SSMS is an excellent environment for developing stored procedures, queries, views and the like, lets leave it that way. And anyhow, the only good XBase environment was FoxPro and look where that ended up.

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.

Resources