Advantages of SQL Server over MySQL:
- Transactions. MySQL doesn't fully support transactions (any operation on MyISAM tables, as well as any DDL statements, will silently commit a pending transaction, which makes the transaction support practically useless)
- SQL Server, Visual Studio, and the entire .NET ecosystem, are built to work together. While you can use MySQL with .NET, it doesn't integrate as nicely.
- More powerful stored procedures. T-SQL has a complete set of imperative programming features, and while the syntax is still far behind a proper programming language, you can do amazing things with it.
- You can import .NET DDLs into SQL Server and run .NET CLI functions from within T-SQL queries: this means any function you feel is missing from your SQL dialect can be provided through this mechanism (I used this once to order query results by geographic distance)
- SQL Server has better replication support. If you ever need to scale your database beyond a single-server or simple master-slave configuration, MySQL will be trouble
- Finer-grained locking. MySQL often locks entire tables; the result can be that if you run an expensive query joining two or three of your most important tables, these tables may be completely inaccessible for several seconds. SQL Server has more sophisticated per-row locking, which means even though you're querying some rows in a table, other rows can still be inserted or modified concurrently.
- Native support for GUIDs as primary keys - if you prefer GUIDs for your keys, that is (which is one way to reduce migration pain).
Downsides:
- Cost. MySQL is essentially free; SQL Server licenses come with a hefty price tag (unless you can use the Express version - but be prepared to pay once you hit the size limit)
- Scriptability. MySQL is built with a command-line mindset, and it is very scriptable; SQL Server, coming from Microsoft, wants you to use the full-blown GUI for pretty much everything, including backup scheduling, migration, maintenance, etc.
- Platform lock-in. MySQL runs on practically everything; SQL Server requires Windows.
Perceived advantages that don't actually hold:
- Performance. Yes, MyISAM is faster than SQL Server, but it's also dangerous and incorrect. MyISAM doesn't support transactions, and it can't enforce foreign key constraints (due to its one-file-per-table approach). As a result, it is easy for a bug in your code (or simply a network outage) to corrupt your database. Most MySQL-based applications I have worked with include code that 'fixes' the database at regular intervals, trying to clean up the mess left behind by rogue queries and other glitches. Also, as soon as concurrency is involved, MyISAM's full table locking behavior easily devastates all performance you might have won.
That said, there are other alternatives - postgresql, which gives you many of the advantages of SQL Server, without the price tag and the vendor lock-in, is my personal favorite.
You're on the right track when you say you need voice and remote desktop software, irrespective of whether you're going to be using Visual Studio or other tools to collaborate. I don't use Visual Studio myself, so I can't answer the part of your question about any tools integrated with it, but I do work as part of a distributed team and there are a whole heap of choices out there for you to pick from.
For VoIP, Skype is a common choice and one I've used a lot in the past, but I have to say I'm not a great fan of what it's become (ads and the beautiful simple interface has been replaced with a rather counter-intuitive one), so I tend to use either Trillian to talk to my Skype contacts, or C3 (which is actually intended for online gamers but is also great for general VoIP communication, is much less of a resource and bandwidth hog and is completely free). I found Google Talk's "feature" of asking you "Are you still there?" after a couple of hours while you're clearly still talking a bit annoying, as there's usually no point in keeping the tab in the foreground, so often we missed the question and got thrown out. Quality-wise, there wasn't much between the three on a broadband connection; if anything, I'd give the edge to C3.
As for web conferencing (or desktop sharing) software, which you'll need in order to view each other's desktops and control each other's mouse/keyboard for paired programming, I've used Netviewer commercially (my client had a license) in the past (before they were bought up by Citrix) and more recently TeamViewer, which is similar from a pure desktop sharing point of view but seems to have a few less features (or maybe I just haven't discovered them yet). We are also considering OpenMeetings but I haven't used it much yet so can't make an informed recommendation on that one.
Wikipedia's comparison pages seem to be kept quite up-to-date if you'd like more options to pick from:
http://en.wikipedia.org/wiki/Comparison_of_VoIP_software
http://en.wikipedia.org/wiki/Comparison_of_web_conferencing_software
Most of the commercial ones tend to have at least free trials, so make sure you try before you buy.
Once you've got the right tools set up, there's not that much difference between doing XP while sitting next to each other and while sitting in different parts of the world. (And there are actually benefits, e.g. you can't knock over the other guy's coffee cup and you can keep your own favourite keyboard and mouse settings.)
Best Answer
no you don't have to connect to anything :) . This is fine if you want tight coupling of data/application as others have mentioned. However from a design prespective this breaks down quickly when you want to scale the application. What happens when you have a very heterogeneous system that has to interconnect to multiple platforms? web/desktop/mobile etc. In this case de-coupling the code from the data-store is the normal route.
Again, you don't have to depend on anything. Most "reports" are either spreadsheets or pdf (insert other format). As you have mentioned 3rd party components are available. Most projects I've worked on use custom built solutions, code-reuse means that the investment is one off.
If you are targeting the Windows platform, this is a poor argument. Further there are solutions that can run .NET without needing the .NET runtime e.g http://spoon.net/ or others that bundle everything into a single executable. Using silverlight/Asp.net you could also host your application as a thin client.
Many companies are also happy with COBOL, however things have improved vastly since then. When the option is available to use newer technology platform, there are no real reason to use legacy platforms.