Why does code need to be maintained as .NET assemblies by parties that likely are no stakeholder?
So who would create a library and not be a stakeholder? Just curious.
Why not create a type/class of stored procedure that uses a simplified language to provide a more natural interface to SQL Server then C# or other .NET languages do?
Having access to the .NET library from such a language would be great and the compiler for the language would can be integrated in SQL Server itself.
Why not create a new language? I think that would be more work for less benefit.
Less benefit due to being a constrained language. SQLCLR is constrained enough just to be workable within SQL Server. It would be a far less useful language/integration if it did less than what it can do now.
More work for Microsoft due to being yet another language for MS to come up with and maintain. That requires more developer resources working on a completely different, non-overlapping feature (as opposed to modifying .NET stuff). It requires more documentation / training material to be produced. More marketing material. Instead, they just provided an API between SQL Server and the CLR and created some classes in .NET (the SqlType namespace: SqlString, SqlInt32, etc) to assist that API. And they created the Host Protection attributes to allow hosts other than the Windows OS to declare what is not safe within the context of that particular host.
More work for all of us in order to learn yet another language. At least with using .NET you can use any .NET language (C#, VB.Net, F#, J#, and so on...). This is a transferable skill in both directions: people who already know at least one .NET language can apply that skill here with only needing to learn the nuance of working within the SQL Server environment. Those who only know T-SQL will have to learn a new language anyway, but due to it being .NET that skill can be used to better understand the app code that is interacting with their database. To me that is a win-win situation.
On the other hand, I do not relish the thought of spending time learning a new language. Time is the most valuable resource we have and if I had any of it to learn a language, I would:
1) Improve my C# skills / knowledge
2) Learn PowerShell
3) Learn MDX
In fact, I greatly despise the thought of another language as I have learned too many (and forgotten several) of them already over the past 30 years:
1) Basic (on Apple II)
2) Basic (on TRS-80)
3) Basic (on TI-99/4a)
4) GW-BASIC (PCs)
5) PL/I (for college)
6) JCL (for college in order to execute the silly PL/I)
7) Assembler (Mainframe -- 370, I think; for college)
9) Ksh (Korne Shell--Unix shell scripting)
10) Bash (Born-Again Shell--Unix shell scripting)
13) VBscript 6 (for ASP pages)
14) IBM Net.Data (an abomination of a language used only in IBM Net.Commerce server)
15) SQL (learned on DB/2)
16) PL/SQL (for Oracle)
17) T-SQL (for Microsoft SQL Server)
18) whatever scripting language InfoReports used (report writer from PLATINUM software)
19) PL/pgSQL (for PostgreSQL)
20) HTML / XHTML
22) IBM DB/2 stored procedures
23) MySQL SQL dialect
24) XBasic (used in Alpha5 from Alpha Software: http://wiki.alphasoftware.com/Contents+-+Learning+Xbasic )
25) DOS Batch/CMD scripting (yes, it actually can do quite a bit: http://www.dostips.com/ )
And there are several that I started to learn but didn't get very far:
JAVA, Perl, Informix stored procedures, XAML (for SilverLight), etc.
And I can't be the only one to have a list like this 😉