G'dayIn answer to part 3.
We use Visual Studio Team Foundation Server as our Development environment, and SQL Server 2005 as our database.
We don't have as much of a concern over database changes, but we were concerned about stored procedures. So we added an SQL Server Project into our solution. We then used SQL Server Management Studio to script all our stored procedures for the solution's database to seperate files, passed them through a vbscript filter that puts them in a form consistent with a new StoredProc script added to the project (basically stuff to check if the script exists and if so delete it before re-adding), added the source files into the project, and added them into source control. Now all stored procedure development and change is done in Visual Studio and the changes are tracked in source control. We have found this is easier than using SQL Server Management Studio.
We have since done the same for our views and triggers. I suspect that database changes could be tracked in a similar way as long as they can be done by Transact-SQL statements (although I suspect you won't want to drop the table and recreate it every time as happens with stored procs, views and triggers).
Peter