Arhn - архитектура программирования

Не удалось загрузить файл или сборку... или одну из ее зависимостей. Исключение из HRESULT: 0x80FC3C2C.

Сообщение об исключении: не удалось загрузить файл или сборку System.DirectoryServices или одну из ее зависимостей. Исключение из HRESULT: 0x80FC3C2C.

Исключение, вызванное процедурой CLR SQL. Исключение, вызванное методом в сборке, где инициализирован один из классов из System.DirectoryServices, и эта сборка используется сборкой с процедурой CLR.

Окружающая обстановка:

  1. MS SQL Server 2005 Std.
  2. .NET Framework 2.0
  3. В базе данных, в которой создается сборка, для параметра TRUSTWORTHY установлено значение ON.
  4. Сборка создана с параметром PERMISSION_SET = UNSAFE.
24.03.2011

  • Вы захотите отладить это, используя журнал Fusion. Viewer. Просто убедитесь, что вы запускаете его от имени администратора, включаете журнал и перезагружаетесь перед попыткой отладки. Вы увидите, где CLR ищет сборку и какую версию, и оттуда определите, почему она не найдена (если она у вас вообще установлена). 24.03.2011
  • Средство просмотра журнала Fusion Не работало при отладке на сервере MS SQL. 06.04.2011
  • @NetRat: мне трудно в это поверить. Вы запускали fuslogvw от имени администратора? Вы перезагружались после включения ведения журнала? Содержит ли журнал ничего (в нем всегда есть данные, когда он включен)? 06.04.2011
  • @Will: я не перезагружался. Хм, попробую еще раз. 06.04.2011
  • @NetRat: Запустите его от имени администратора (щелкните правой кнопкой мыши, запустите от имени администратора), поднимите права, а затем, после включения, перезагрузите компьютер. Если вы этого не сделаете, это не сработает. 06.04.2011

Ответы:


1

Имейте в виду, что этот ответ взят из моих заметок из учебного класса ... Вы должны установить PERMISSION_SET на EXTERNAL_ACCESS, чтобы получить доступ к файловой системе сервера или к другому серверу. Это имеет смысл, поскольку вы используете System.DirectoryServices для доступа к другому серверу (контроллеру домена).

24.03.2011
  • PERMISSION_SET = UNSAFE на самом деле разрешает даже больше доступа, чем EXTERNAL_ACCESS. 25.03.2011

  • 2

    Я думаю, что сборка System.DirectoryServices просто не поддерживается внутри SQL Server. SQL Server допускает только очень определенный (жестко запрограммированный) список сборок (SQL Server 2005, SQL Server 2008 ) для использования, чтобы не ставить под угрозу его стабильность.

    Сказав это, кажется, что в любом случае есть способ добиться этого, см. этот вопрос/ответ (не пробовал).

    25.03.2011

    3

    Наконец, я нашел обходной путь. Я добавил ссылку на System.DirectoryServices в сборку, связанную с MS SQL, и в коде процедуры CLR создал класс из этого пространства имен. И так сборка System.DirectoryServices стала видна из класса, где размещен основной код для DS.

    06.04.2011

    4

    В моем случае проблема была связана с владельцем базы данных.

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

    --Update db owner in master database
    DECLARE @Command VARCHAR(MAX) = 'ALTER AUTHORIZATION ON DATABASE::[<<DatabaseName>>] TO 
    [<<LoginName>>]' 
    
    SELECT @Command = REPLACE(REPLACE(@Command 
                , '<<DatabaseName>>', SD.Name)
                , '<<LoginName>>', SL.Name)
    FROM master..sysdatabases SD 
    JOIN master..syslogins SL ON  SD.SID = SL.SID
    WHERE  SD.Name = DB_NAME()
    
    PRINT @Command
    EXEC(@Command)
    

    Если это не помогает, попробуйте также следующее:

    ALTER AUTHORIZATION ON DATABASE::[YourDatabaseName] TO [sa]
    
    20.07.2021
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..