Назад | Перейти на главную страницу

Sql Server - ошибка при прикреплении файла mdf, зашифрованного с помощью зашифрованной файловой системы (EFS)

Я получаю сообщение об ошибке при попытке присоединить базу данных, файлы которой ранее были зашифрованы с помощью EFS. Сообщение об актуальной ошибке

Msg 5120, Level 16, State 101, Line 9
Unable to open the physical file "C:\test.mdf". Operating system error 5: "5(Access is denied.)".

Если я расшифрую файлы, то смогу успешно присоединить базу данных. Я использую ту же учетную запись локального пользователя, которая запускает службу sqlserver. Любые идеи? (Я ранее задавал этот q в stackoverflow, но получил комментарии, что он здесь)

Проверьте разрешения NTFS (как сказал Ник) и убедитесь, что у SQL Server есть доступ к файлам с использованием учетной записи, под которой работает служба, а также учетной записи, которую вы используете для подключения к SQL Server.

Когда вы отключаете базу данных, SQL Server автоматически удаляет права на файлы от всех, кроме человека, отключившего базу данных.

Вы уверены, что учетная запись службы, которую вы используете для SQL Server, соответствует учетной записи пользователя, которую вы используете для шифрования файлов? EFS обрабатывается в ОС и прозрачна для SQL Server.

В этом случае проверьте общие разрешения NTFS и убедитесь, что учетная запись службы имеет полный контроль над файлами, которые вы пытаетесь прикрепить. Может показаться очевидным, но вы всегда должны проверять, есть ли бензин в баке, не думайте!

Если вы используете SQL Server 2008 Enterprise, вам следует изучить возможность использования Прозрачное шифрование данных (TDE) вместо EFS лучше производительность и удобнее управлять.

Не используйте EFS с SQL Server. если ты должен используйте шифрование на уровне ОС, а затем используйте BitLocker. В противном случае используйте собственный TDE SQL Server. EFS с SQL Server работает ужасно.

EFS также не выполняет реального шифрования файла, когда файл используется. Он будет шифровать физические данные только после закрытия файлового потока, что означает, что вам нужно выключить SQL-сервер, чтобы зашифровать файл. Файл расшифровывается при обращении к нему и хранится как в системном кеше, так и в незашифрованной памяти. Просто нужно иметь в виду.

Мне кажется, что это скорее проблема с разрешением, а не с EFS. Вы пробовали переместить файл в папку каталога данных SQL Server и посмотреть, можно ли получить к нему доступ на сервере? Мы используем это много, когда тестируем проблемы с разрешениями. Если сервер может подключить его оттуда, мы знаем, что в исходных местах есть проблема с разрешением.