First of all, SQL Server has come a long way. It's really a remarkable product.
1. ability to output variables as user defined tables so that a caller could consume multiple result sets into table variables
2. ability to create a user defined table type based on an existing table and have it keep pace with that table's schema changes
3. ability to model a new table creation from an existing and extend it with additional columns such that when model table is altered the new table is altered as well
4. lift the readonly limitation from user defined tables as passed variables
5. The ability to overload input parameters for a scalar valued function
6. The ability to automatically update a column with the current time as a default constraint. Something like timestamp that actually is a time and cannot be overrode in an update query or ignored.
7. The ability to write data to a (real) table (not disk or table variable) inside a transaction so that data can be preserved even on rollback. Could prove very useful for audits, debugging, logs. Maybe a (hint) could be the mechanism?
8. Better tab management in SQL Server Management Studio. It's not unusual for me to have more than 10 tabs going and I have to save my queries to a file just to manage them without having to hunt for the query I want one tab at a time or remember its automatic name. Just thinking there is a simple solution to this that would greatly eliminate hunt time.