Большая часть исходного кода .NET доступна, и большая часть его является открытым исходным кодом, хотя и под различными лицензиями. Тем не менее, другой код доступен, но только для справочных целей и не может быть использован в вашем коде.
Учитывая, что заявленной целью является:
Я хотел бы увеличить этот лимит для сложного существующего приложения, которое обязательно достигнет этого предела. Я не хочу менять интерфейс типа. Я не уверен, что смог бы изменить интерфейс типа, не внося тонких ошибок во весь код, который должен был быть изменен в результате.
если намерение состоит в том, чтобы обновить текущий тип иерархии, то не имеет значения, является ли код открытым исходным кодом, потому что, даже если это так, вы никогда не сможете внести какие-либо изменения в общую систему: даже если вы сможете заменить сборку в SQL Server, вы не сможете подписать его тем же сертификатом / закрытым ключом и, следовательно, он не будет использоваться системой.
Однако вы можете создать свой собственный пользовательский тип SQLCLR (UDT) для обеспечения желаемой функциональности.
Тем не менее , поскольку это связано с получением лучшего понимания .NET Framework:
Вы можете просмотреть исходный код большинства материалов здесь: https://github.com/Microsoft/referencesource
и еще больше вещей здесь: https://github.com/dotnet/corefx
Оба вышеупомянутых репозитория имеют открытый исходный код и управляются в основном по лицензии MIT, хотя вам необходимо проверить информацию о лицензировании в каждом месте, а иногда и в разных папках, чтобы быть уверенным.
Многое из оставшегося кода можно найти здесь: http://referencesource.microsoft.com/
Код, найденный на ReferenceSource.Microsoft.com (ссылка выше), который также не найден в первых двух ссылках (которые являются открытым исходным кодом), не является открытым исходным кодом и вместо этого регулируется лицензией MICROSOFT REFERENCE SOURCE LICENSE (MS-RSL) соответствующая часть (слегка отредактированная, чтобы дать определение «ссылочного использования» сразу после использования этой фразы):
Лицензиар предоставляет вам непередаваемую, неисключительную, всемирную, бесплатную лицензию на авторское право на воспроизведение программного обеспечения для справочного использования: использование программного обеспечения в вашей компании в качестве справочного, только для чтения, в исключительных целях отладки ваши продукты, поддержание ваших продуктов или повышение совместимости ваших продуктов с программным обеспечением, и, в частности, исключает право на распространение программного обеспечения за пределами вашей компании.
Однако, похоже, что Microsoft.SqlServer.*
пространство имен недоступно ни в одном из этих мест. Что означает, что простой ответ на вопрос: «Является ли HierarchyID открытым исходным кодом?» это: нет .
Если вы хотите увидеть исходный код, вам нужно открыть DLL - Microsoft.SqlServer.Types.dll - с помощью декомпилятора. НО, есть потенциальные юридические и / или этические проблемы, которые нужно решить. Это является собственный код таким образом , есть два основных момента , которые следует учитывать:
как указано в лицензионном соглашении с конечным пользователем SQL Server (EULA) (и как указано в @ ВТоМ в ответ ), вы можете только « перепроектировать, декомпилировать или демонтирует » не предоставляется код « только в той степени , в которой применяется закон прямо разрешает » , Это означает, что для некоторых людей это совершенно законно, но для других не так уж и много. Так что вы можете обратиться к местному юристу по интеллектуальной собственности.
если для вас законно декомпилировать намерение юридического языка, а также тот факт, что предоставляется некоторый исходный код (как указано в верхней части), но этот конкретный код не является, безусловно, подразумевает, что желание для широкой публики не вижу или не имею этот код. Таким образом, законность декомпиляции не должна восприниматься как дублирование, а также законность ее использования в качестве ссылки (например, для отладки и т. Д.).