Une grande partie du code source .NET est disponible, et une grande partie est Open Source, bien que sous diverses licences. Encore un autre code est disponible, mais uniquement à des fins de référence et ne peut pas être utilisé dans votre code.
Étant donné que l'objectif déclaré est:
Je voudrais augmenter cette limite pour une application existante complexe qui est liée à atteindre cette limite. Je ne souhaite pas changer l'interface du type. Je ne suis pas convaincu que je pourrais réussir à changer l'interface du type sans introduire de bogues subtils dans tout le code qui devrait être changé en conséquence.
si l'intention est de mettre à jour le type de hiérarchie actuel, le fait que le code soit Open Source ou non n'est pas pertinent, car même s'il l'est, vous ne pourrez jamais introduire de modifications dans le système global: même si vous pouviez remplacer l'assembly dans SQL Server, vous ne pourriez pas le signer avec le même certificat / clé privée et, par conséquent, il ne serait pas utilisé par le système.
Cependant, vous pouvez créer votre propre type défini par l'utilisateur SQLCLR (UDT) pour fournir la fonctionnalité souhaitée.
Pourtant , en ce qui concerne l'acquisition d'une meilleure compréhension du .NET Framework:
Vous pouvez voir le code source de la plupart des choses ici: https://github.com/Microsoft/referencesource
et encore plus de choses ici: https://github.com/dotnet/corefx
Les deux référentiels mentionnés ci-dessus sont Open Source et régis principalement sous la licence MIT, bien que vous deviez vérifier les informations de licence dans chaque emplacement, et parfois dans divers dossiers, pour en être certain.
Une grande partie du code restant peut être trouvée ici: http://referencesource.microsoft.com/
Le code trouvé sur ReferenceSource.Microsoft.com (le lien directement ci-dessus) qui ne se trouve pas également sur les deux premiers liens (qui sont Open Source) n'est pas Open Source et est plutôt régi par la LICENCE MICROSOFT REFERENCE SOURCE (MS-RSL) , la partie pertinente étant (légèrement modifiée pour mettre la définition d '"utilisation de référence" juste après l'utilisation de cette phrase):
le Concédant vous accorde une licence de droit d'auteur non transférable, non exclusive, mondiale et libre de droits pour reproduire le logiciel à des fins de référence: utilisation du logiciel au sein de votre entreprise comme référence, en lecture seule, aux seules fins de débogage vos produits, la maintenance de vos produits ou l'amélioration de l'interopérabilité de vos produits avec le logiciel, et exclut spécifiquement le droit de distribuer le logiciel en dehors de votre entreprise.
Cependant, il semble que l' Microsoft.SqlServer.*
espace de noms n'est disponible dans aucun de ces emplacements. Ce qui signifie que la réponse simple à la question: "est HierarchyID Open Source?" est: Non .
Si vous souhaitez voir le code source, vous devez ouvrir la DLL - Microsoft.SqlServer.Types.dll - avec un décompilateur. MAIS, il y a des problèmes juridiques et / ou éthiques potentiels à traiter. Il s'agit d' un code propriétaire, il y a donc deux points principaux à considérer:
comme indiqué dans le contrat de licence utilisateur final (CLUF) SQL Server (et tel que cité dans la réponse de @ TomV ), vous ne pouvez " désosser , décompiler ou désassembler " le code non fourni " que dans la mesure où la loi applicable le permet expressément " . Cela signifie que pour certaines personnes, il est parfaitement légal de le faire, mais pour d'autres, pas tellement. Donc, vous voudrez peut-être consulter un avocat local en propriété intellectuelle.
s'il est légal pour vous de décompiler, l'intention du langage juridique, plus le fait qu'un certain code source est fourni (comme lié en haut) mais que ce code particulier ne l'est pas, implique certainement que le désir est pour le grand public de pas voir ou avoir ce code. Donc, être légal à décompiler ne doit pas être considéré comme étant également légal à dupliquer, mais plus afin qu'il puisse être utilisé comme référence (par exemple pour le débogage, etc.).