Dostępnych jest wiele kodów źródłowych .NET, a większość z nich to Open Source, choć na różnych licencjach. Jeszcze inny kod jest dostępny, ale tylko w celach informacyjnych i nie można go użyć w kodzie.
Biorąc pod uwagę, że podanym celem jest:
Chciałbym zwiększyć ten limit dla złożonej istniejącej aplikacji, która musi przekroczyć ten limit. Nie chcę zmieniać interfejsu tego typu. Nie jestem pewien, czy mógłbym zmienić interfejs tego typu bez wprowadzania subtelnych błędów w całym kodzie, który musiałby zostać zmieniony.
jeśli intencją jest aktualizacja bieżącego typu Hierarchia, to czy kod jest typu Open Source, nie ma znaczenia, ponieważ nawet jeśli tak jest, nigdy nie będziesz w stanie wprowadzić żadnych zmian w całym systemie: nawet gdybyś mógł wymienić Zespół w SQL Server, nie będziesz mógł podpisać go tym samym certyfikatem / kluczem prywatnym, a zatem nie będzie używany przez system.
Można jednak zbudować własny typ zdefiniowany przez użytkownika SQLCLR (UDT), aby zapewnić pożądaną funkcjonalność.
Mimo to , ponieważ odnosi się to do lepszego zrozumienia .NET Framework:
Możesz zobaczyć kod źródłowy większości rzeczy tutaj: https://github.com/Microsoft/referencesource
i jeszcze więcej rzeczy tutaj: https://github.com/dotnet/corefx
Oba wyżej wymienione repozytoria są typu Open Source i podlegają głównie licencji MIT, choć dla pewności należy przejrzeć informacje o licencji w każdej lokalizacji, a czasem w różnych folderach.
Wiele pozostałego kodu można znaleźć tutaj: http://referencesource.microsoft.com/
Kod znaleziony w ReferenceSource.Microsoft.com (link bezpośrednio powyżej), który nie znajduje się również w pierwszych dwóch linkach (które są Open Source), nie jest Open Source i jest zamiast tego zarządzany przez LICENCJĘ ŹRÓDŁA ODNIESIENIA MICROSOFT (MS-RSL) , odpowiednia część jest (lekko zredagowana, aby umieścić definicję „użycia referencyjnego” tuż po użyciu tego wyrażenia):
Licencjodawca udziela użytkownikowi niezbywalnej, niewyłącznej, ogólnoświatowej, nieodpłatnej licencji na prawa autorskie do powielania oprogramowania do użytku referencyjnego: wykorzystanie oprogramowania w firmie jako odniesienie, w formie tylko do odczytu, wyłącznie w celu debugowania Twoje produkty, utrzymanie produktów lub poprawa interoperacyjności Twoich produktów z oprogramowaniem, w szczególności wyklucza prawo do dystrybucji oprogramowania poza Twoją firmą.
Wygląda jednak na to, że Microsoft.SqlServer.*
przestrzeń nazw nie jest dostępna w żadnej z tych lokalizacji. Co oznacza, że prosta odpowiedź na pytanie: „czy HierarchyID Open Source?” jest: Nie .
Jeśli chcesz zobaczyć kod źródłowy, musisz otworzyć bibliotekę DLL - Microsoft.SqlServer.Types.dll - z dekompilatorem. ALE istnieją potencjalne problemy prawne i / lub etyczne. Jest to zastrzeżony kod, więc należy wziąć pod uwagę dwa główne punkty:
jak stwierdzono w EULA SQL Server (EULA) (i cytowany w @ TomV za odpowiedź ), można tylko „ inżynierii wstecznej, dekompilacji lub demontażu ” non-warunkiem oznaczeniem „ tylko do tego stopnia, że obowiązujące prawo wyraźnie zezwala ” . Oznacza to, że dla niektórych ludzi jest to całkowicie legalne, ale dla innych nie tyle. Możesz więc skonsultować się z lokalnym prawnikiem ds. Własności intelektualnej.
jeśli dekompilacja jest zgodna z prawem, intencja języka prawnego oraz fakt, że dostarczono jakiś kod źródłowy (jak podano na górze), ale ten konkretny kod nie jest, z pewnością oznacza, że ogół społeczeństwa chce nie widzę ani nie mam tego kodu. Tak więc legalność przy dekompilacji nie powinna być brana pod uwagę, ponieważ kopiowanie jest również legalne, ale przede wszystkim dlatego, że można ją wykorzystać jako odniesienie (np. Do debugowania itp.).