Gran parte del codice sorgente .NET è disponibile e gran parte è Open Source, anche se con varie licenze. È ancora disponibile altro codice, ma solo a scopo di riferimento e non può essere utilizzato nel codice.
Dato che l'obiettivo dichiarato è:
Vorrei aumentare tale limite per un'applicazione esistente complessa destinata a raggiungere questo limite. Non desidero cambiare l'interfaccia del tipo. Non sono sicuro di poter cambiare l'interfaccia del tipo senza introdurre bug sottili in tutto il codice che dovrebbe essere modificato di conseguenza.
se l'intenzione è di aggiornare l'attuale tipo di Gerarchia, allora se il codice è Open Source è irrilevante perché anche se lo fosse, non si sarebbe mai in grado di introdurre cambiamenti nel sistema complessivo: anche se si potesse sostituire l'Assemblea in SQL Server, non saresti in grado di firmarlo con lo stesso certificato / chiave privata e quindi non verrebbe utilizzato dal sistema.
Tuttavia, è possibile creare il proprio SQLCLR User-Defined Type (UDT) per fornire la funzionalità desiderata.
Tuttavia , per quanto riguarda l'acquisizione di una migliore comprensione di .NET Framework:
Puoi visualizzare il codice sorgente della maggior parte delle cose qui: https://github.com/Microsoft/referencesource
e ancora più cose qui: https://github.com/dotnet/corefx
Entrambi i repository sopra indicati sono Open Source e regolati principalmente con la licenza MIT, anche se per essere sicuri è necessario rivedere le informazioni sulla licenza in ogni posizione, e talvolta in varie cartelle.
Molto del codice rimanente è disponibile qui: http://referencesource.microsoft.com/
Il codice trovato su ReferenceSource.Microsoft.com (il collegamento direttamente sopra) che non si trova anche nei primi due collegamenti (che sono Open Source) non è Open Source ed è invece regolato dalla LICENZA SORGENTE DI RIFERIMENTO MICROSOFT (MS-RSL) , essendo la parte pertinente (leggermente modificata per mettere la definizione di "uso di riferimento" proprio dopo l'uso di quella frase):
il Licenziante ti concede una licenza di copyright non trasferibile, non esclusiva, in tutto il mondo, esente da royalty per riprodurre il software per uso di riferimento: uso del software all'interno della tua azienda come riferimento, in forma di sola lettura, ai soli fini del debug i tuoi prodotti, la manutenzione dei tuoi prodotti o il miglioramento dell'interoperabilità dei tuoi prodotti con il software ed esclude specificamente il diritto di distribuire il software al di fuori della tua azienda.
Tuttavia, sembra che lo Microsoft.SqlServer.*
spazio dei nomi non sia disponibile in nessuna di queste posizioni. Ciò significa che la semplice risposta alla domanda di: "is HierarchyID Open Source?" è: No .
Se si desidera visualizzare il codice sorgente, è necessario aprire la DLL - Microsoft.SqlServer.Types.dll - con un decompilatore. MA, ci sono potenziali problemi legali e / o etici da affrontare. Questo è un codice proprietario quindi ci sono due punti principali da considerare:
come indicato nel Contratto di licenza con l'utente finale (EULA) di SQL Server (e come indicato nella risposta di @ TomV ), è possibile " decodificare, decompilare o disassemblare " codice non fornito " solo nella misura consentita espressamente dalla legge applicabile " . Ciò significa che per alcune persone, è perfettamente legale farlo, ma per altre persone, non così tanto. Quindi potresti voler consultare un avvocato locale della proprietà intellettuale.
se è legale decompilare, l'intenzione del linguaggio legale, oltre al fatto che viene fornito un codice sorgente (come collegato in alto), ma questo particolare codice non lo è, implica certamente che il desiderio è per il grande pubblico non vedere o avere questo codice. Quindi essere legali per decompilare non dovrebbe essere preso in quanto è anche legale duplicare, ma più che può essere usato come riferimento (ad esempio per il debug, ecc.).