Le hierarchyid intégré est un CLR qui stocke les chemins sous une forme binaire efficace et fournit d'autres fonctionnalités utiles.
Malheureusement, la profondeur des chemins représentés peut être limitée et c'est ~ 1427 pour un arbre binaire. 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.
Je pourrais (en théorie) créer un UDT CLR "binhierarchyid" qui implémente la même interface que hierarchyid, mais ne prend en charge que les arbres binaires. Cela devrait me donner une profondeur de ~ 7000 tout en restant dans la limite de 900 octets. Je ne sais pas quelle serait la taille d'une entreprise.
La source de ce CLR hierarchyid est-elle disponible quelque part, afin que je puisse créer le mien basé sur celui-ci qui supporte des structures plus profondes?
la source
Réponses:
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:
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):
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.).
la source
Comme srutzky vous a indiqué certains endroits de sa réponse où une partie du code source de Microsoft est disponible et la fonction que vous avez demandée n'est pas répertoriée, je pense que nous pouvons conclure que le code source n'est disponible sous aucune licence open source, et il ressemble à votre question portait sur le fait qu'il soit open source, pas sur la possibilité de voir le code source .
Étant donné que le CLUF stipule ce qui suit:
J'ai donc bien peur qu'il vous reste à mettre en œuvre la logique vous-même.
la source