Nano Hash - криптовалюты, майнинг, программирование

Функция доверенных сборок не работает после обновления до SQL Server 2017 с версии 2014.

У нас было несколько проблем во время обновления на месте с 2014 по 2017 год, а именно функция доверенной сборки CLR, которая в то время мешала успешной установке служб SSIS. С тех пор я установил и заработал SSIS, но эта функция все еще не работает.

Ошибка, которую я получил в то время и которую я все еще получаю, когда я запрашиваю системную таблицу напрямую: Ошибка доступа к внутренней таблице: не удалось получить доступ к внутренней таблице Trusted Assemblies. Системное представление, кажется, запускает OPENROWSET для таблицы TRUSTED_ASSEMBLIES. Я не вижу много болтовни в Интернете людей, занимающихся этой проблемой.

Я не планирую использовать эту функцию, но боюсь, что в будущем это может вызвать проблемы с обновлениями или с внешними поставщиками. Другим симптомом было то, что для решения некоторых проблем с выполнением пакета SSIS мне приходилось вручную назначать разрешения на выполнение низкоуровневым процедурам, которые обычно выполняются за вас (к счастью, в документации указано, какие встроенные группы имеют доступ к процессы).

Если у кого-то есть понимание проблемы, которая будет оценена; предположить, что снос и полная перестройка могут быть в порядке.

16.03.2021

  • Всем привет. Если возможно, не могли бы вы обновить вопрос, указав точное и полное сообщение об ошибке, включая значения Msg, Level и State, или HRESULT, если он был предоставлен? Это помогло бы сузить это. Спасибо! 16.03.2021

Ответы:


1

Применили ли вы CU (накопительные обновления) для SQL Server 2017? Если нет, то вам, вероятно, следует.

Да, функция строгой безопасности/доверенных сборок CLR — это огонь из мусорной корзины. Пожалуйста, ознакомьтесь с моим ответом на следующий вопрос (также здесь, на SO) относительно правильных способов обхода новых (начиная с SQL Server 2017) ограничений (последний абзац в этом ответе касается вашей ситуации: ранее существовавшие, неподписанные сборки):

Строгая безопасность CLR на SQL Server 2017

Используя подпись модуля, вы сможете заставить все работать без прямого назначения каких-либо разрешений.

Что касается этой конкретной ошибки внутренней ошибки доступа к таблице, это для меня ново. Я предполагаю, что вы выполняете SELECT * FROM sys.trusted_assemblies' как sa или какой-либо другой логин, который является членом фиксированной роли сервера sysadmin? В противном случае вы получите сообщение об ошибке разрешений:

Сообщение 300, уровень 14, состояние 1, строка XXXXX
Разрешение VIEW SERVER STATE было отклонено для объекта «сервер», база данных «master».
Сообщение 297, уровень 16, состояние 1, строка XXXXX
> У пользователя нет разрешения на выполнение этого действия.

Поскольку вы не получаете сообщение об ошибке прав доступа, возможно, что какой-то компонент не был обновлен правильно/полностью (следовательно, убедитесь, что вы установили последнюю версию CU может проверить/исправить тот).

16.03.2021
  • Да, к сожалению, мы обновились до последней версии, и это не решило проблему. К счастью, это, похоже, единственная оставшаяся проблема, и хотя я не планирую использовать доверенную сборку, она помешала мне легко создать новый каталог SSISDB, и я надеялся, что мы сможем решить эту проблему, чтобы избежать проблем в будущем. Эта ошибка для меня новая, и когда я ее гуглю, все, что я получаю, — это документация о том, что ошибка была добавлена ​​в 2017 году. Если я найду решение, мне, по-видимому, придется записать для потомков. 18.03.2021
  • @drexasaurus Ну, по крайней мере, мы знаем, что не работает, верно ;-). Да, об этой ошибке мало что известно. Я видел одну ссылку в Google, которая выглядела как точно такая же ошибка (т.е. для доверенных сборок), но страница больше не действительна. Я нашел еще один вопрос на social.msdn для того же сообщения об ошибке (т.е. ошибка чтения внутренней таблицы), но он был для чего-то другого, и я полагаю, что совет состоял в том, чтобы применить последнюю версию CU, но я не помню, чтобы было какое-либо подтверждение результатов. Я проверил compatibility_level = 120 и containment = partial (на всякий случай), и ни один из них не вызвал ошибку. 19.03.2021
  • @drexasaurus Я даже только что попробовал EXEC sp_configure N'clr enabled', 0; RECONFIGURE;, а затем: EXEC sp_configure N'lightweight pooling', 1; RECONFIGURE; (затем перезапустите экземпляр), и все равно нет ошибки. Я попробовал это, так как облегченный пул отключает ВСЕ вещи, связанные с CLR, даже внутренние функции (например, FORMAT(), COMPRESS(), AT TIMEZONE и т. д.). 19.03.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..