Вопрос

Во время недавнего перезапуска нашего сервера разработки SQL Server начал использовать .NET 4.0 для SQLCLR.Это означает, что ничто из того, что использует CLR в SQL, не работает, или, по крайней мере, я так понимаю, прочитав эти источники:

http://software.intel.com/en-us/blogs/2009/10/16/sql-server-2008-sqlclr-net-framework-version/

www.sqlskills.com/BLOGS/BOBB/post/On-SQL-Server-and-NET-40.aspx

Все, что мы получаем, - это сообщения об ошибках такого типа:

Сообщение 6517, уровень 16, состояние 1, в строке 1 не удалось создать домен приложения "xxx.dbo[ddl].3".Сигнатура типа метода несовместима с взаимодействием.

Запуск инструкции (как предложил @john-christensen)

select * from sys.dm_clr_properties

результатом является следующая информация:

*Name*      *Value*
directory   C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
version     v4.0.30319
state       CLR is initialized

Кто-нибудь знает, как это решить или как мы можем заставить среду SQL Server CLR использовать более раннюю версию фреймворка?

Это было полезно?

Решение

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

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

Другие советы

Я столкнулся с той же досадной проблемой.Ни один материал по географии / геометрии в моей базе данных не работал.Мне потребовалось несколько неудачных переустановок SQL server, чтобы, наконец (несколько недель спустя!) Обнаружить, что следующему ключу в моем реестре присвоено значение "1"

HKEY_LOCAL_MACHINE\ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ\Microsoft\.NetFramework\OnlyUseLatestCLR

когда я сбросил его на "0" и перезагрузил компьютер, все снова заработало!

Ганс

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

Выберите * от Sys.dm_clr_properties

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

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

А позже:

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

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

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

У меня была эта проблема на день и после обновления моих Windows и .NET Frameworks Frameworks исчезла. Проблема относится к .NET Framework. Попробуйте восстановить его.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top