SQLCLR использование неверной версии Платформы.NET

Когда вы создаете новый объект Chest, вы должны использовать оператор new. Итак, в этом коде:

// Create 4 chests on Startup
for (var i = 0; i < 4; i++)
{
      this.Chests.push(Chest(random(25,375), random(25,375), random(20,25), random(15,20), random(0,5)));
}

... Вы должны изменить

this.Chests.push(Chest(random(25,375), random(25,375), random(20,25), random(15,20), random(0,5)));

... На это:

this.Chests.push(new Chest(random(25,375), random(25,375), random(20,25), random(15,20), random(0,5)));
24
задан gotqn 25 March 2015 в 10:22
поделиться

5 ответов

Как правило, вы можете заставить приложение .NET использовать определенную версию .NET Framework, указав тег supportedRuntime в файле конфигурации приложения.

Таким образом, вы можете попробовать создать sqlservr.exe.config в папке \Binn в корневом пути экземпляра SQL и указать там, что вы хотите использовать только версии .NET до 3.5. Проверьте эту ссылку MSDN на структуру конфигурационного файла.

12
ответ дан 28 November 2019 в 23:34
поделиться

У меня возникла такая же досадная проблема. Ни один из элементов географии / геометрии в моей базе данных не работал. Взял несколько неудачных переустановок SQL-сервера, чтобы наконец (несколько недель спустя!) Найти следующий ключ в моем реестре равным '1'

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ OnlyUseLatestCLR

, когда я сбросил его на «0» и перезагрузил машину, все снова заработало!

Ганс

14
ответ дан 28 November 2019 в 23:34
поделиться

Из этой статьи и моего исследования в Интернете кажется, что может произойти обратное - возможно, вы могли бы зарегистрировать 4.0 DLL? Похоже, что SQL Server 2008 всегда будет загружать 2.0 CLR, а не 4.0 CLR. Попробуйте выполнить этот оператор, он скажет вам, какая версия вашего SQL-сервера запущена:

select * from sys.dm_clr_properties

8
ответ дан 28 November 2019 в 23:34
поделиться

В вашем сообщении в Intel, на которое вы ссылаетесь, если вы внимательно его прочитаете, говорится:

SQL Server 2008 и предстоящий SQL Server 2008 и предстоящий выпуск SQL Server 2008 R2, ранее под кодовым названием "Kilimanjaro", будут оба будут продолжать загружать последний сервисный версию CLR версии 2.0.

И далее:

Хотя будущие версии SQL Server могут загружать более новые версии CLR или даже поддерживать загрузку нескольких CLR в рамках процесса, версия 2.0 CLR остается для SQLCLR в SQL Server 2008 и SQL Server 2008 R2.

Я не знаю, как вам удается загрузить что-то вроде .NET 4 в SQL Server 2008 R2.....

7
ответ дан 28 November 2019 в 23:34
поделиться

Они сделали явный выбор, чтобы гарантировать, что установка .NET 4.0 не будет иметь последствий. Она не должна использовать .NET 4.0 или какие-либо новые файлы, за исключением новых shim-файлов, mscoree.dll и mscoreei.dll. Они должны быть обратно совместимы со средой выполнения 2.0. Вы можете запустить Process Explorer, чтобы посмотреть номера версий загруженных dll, чтобы убедиться, что запущена правильная среда выполнения.

1
ответ дан 28 November 2019 в 23:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: