Не разрешен доступ к файлу базы данных 1914 file name adipnv sdf secreatefile

Обновлено: 07.07.2024

Репутация: нет
Всего: 7

Сегодня столкнулся с не преодолимой проблемой. Хостинг поддерживает только MS SQL Server, о MS SQL CE он не знает и слышать не хочет.

Репутация: нет
Всего: 7

Нашел информацию, про SQL CE добавил все нужны библиотеки. И вроде все нормально запускается, но когда я выполняю этот код:

Цитата

Не разрешен доступ к файлу базы данных. [ File name = MyData.sdf ]
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlServerCe.SqlCeException: Не разрешен доступ к файлу базы данных. [ File name = MyData.sdf ]

Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

[SqlCeException: Не разрешен доступ к файлу базы данных. [ File name = MyData.sdf ]]
System.Data.SqlServerCe.SqlCeEngine.ProcessResults(IntPtr pError, Int32 hr) +36
System.Data.SqlServerCe.SqlCeEngine.CreateDatabase() +598
Default.Page_Load(Object sender, EventArgs e) +167
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

Репутация: 3
Всего: 118

Что-то не поняли? -> Напейтесь до зеленых человечков. эта сверхцивилизация Вам поможет.

Репутация: нет
Всего: 7

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

[ Время генерации скрипта: 0.1068 ] [ Использовано запросов: 21 ] [ GZIP включён ]

02.12.2016 admin Comments 52 комментария

Если Вы не знаете, как установить модуль природопользователя или просто ПНВ, то вы можете прочитать мою статью Как установить модуль природопользователя.

Если вы читали мою статью по установке модуля, то я там писал, что в папке с установочной программой есть еще какие то папки, которые я Вам советовал не удалять. Так вот именно сейчас они то нам и понадобятся. Откроем папку и посмотрим что там есть.

папка SQL Server Compact Edition

И вот мы видим что SQL Server Compact Edition есть в комплекте с программой. Зайдем в эту папку и запустим SSCERuntime_x86-RUS. exe

Запуск ssceruntime_x86-rus

Первое что мы видим это окно приветствия. Здесь нам просто нужно нажать кнопку «Далее»

Окно приветствия sql server compact edition

Затем у нас спросят про условия лицензионного соглашения. Выбираем «Я принимаю условия лицензионного соглашения» и жмем «Далее»

Лицензионное соглашение

После этого у нас появится окно, в котором написано куда будет установлен SQL Server Compact Edition. Этот путь, к сожалению, мы изменить не сможем. Просто нажимаем «Установить»

Путь установки sql server compact edition

Пошел процесс установки

Окно установки sql server compact edition

Программа укажет Вам, что процесс установки завершен. Нажимаем клавишу «Готово»

Окончание установки sqlserver compact edition

Теперь самое время снова запустить Модуль природопользователя и проверить, заработает ли он.

Успешный запуск ПНВ

В этом разделе описана процедура предоставления компоненту Компонент SQL Server Database Engine доступа к расположению в файловой системе, где хранятся файлы базы данных. Служба компонента Компонент Database Engine должна иметь разрешение файловой системы Windows для доступа к папке, в которой хранятся файлы базы данных. Разрешение на расположение по умолчанию задается во время установки. Если файла базы данных размещаются в другом расположении, то необходимо выполнить эти действия, чтобы предоставить компоненту Компонент Database Engine разрешение полного доступа к этому расположению.

Начиная с версии SQL Server 2012 (11.x) , разрешения назначаются идентификатору безопасности каждой из служб. Эта система позволяет обеспечить изоляцию и всестороннюю защиту службы. Идентификатор безопасности службы создается на основе имени службы и является уникальным для каждой службы. В разделе Настройка учетных записей и разрешений службы Windows описывается идентификатор безопасности каждой службы доступа, а имена перечисляются в разделе Права и привилегии Windows. Разрешение на доступ к расположению файла назначается именно идентификатору безопасности службы.

Предоставление разрешение на доступ к файловой системе идентификатору безопасности службы

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

На вкладке Безопасность щелкните Изменить и затем ― Добавить.

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

В поле Введите имена объектов для выбора введите имя идентификатора безопасности службы, указанное в разделе Настройка учетных записей службы и разрешений Windowsэлектронной документации. (В качестве идентификатора безопасности службы компонента Компонент Database Engine используйте NT SERVICE\MSSQLSERVER для экземпляра по умолчанию или NT SERVICE\MSSQL$InstanceName — для именованного экземпляра.)

В поле имен Группа или пользователь выберите имя идентификатора безопасности службы, а затем в поле Разрешения для <name> установите флажок Разрешить для параметра Полный доступ.

Я использую SQL Server 2008 developer edition. Я пытался подключить базу данных AdventureWorks2008.

когда я попытался подключиться, я получил ошибку "доступ запрещен". Согласно журналу событий, он пришел из O/ S:

открыть не удалось: не удалось открыть файл D:ProjectDataAdventureWorksAdventureWorksLT2008_Data - . mdf для файла номер 0. Ошибка ОС: 5 (Доступ запрещен.).

Я думал, что "проблема NTFS", но система (и я) имеют изменить доступ к файлам.

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

Я являюсь членом локальной группы администраторов на моей машине, и я нахожусь в роли sysadmins в экземпляре SQL Server.

есть идеи, почему я должен был войти в систему как sa?

запустите SQL Server Management Studio от имени администратора. (правый клик-> Запуск от имени администратора), который заботился обо всех странностях в моем случае.

SQL SRV EXPRESS 2008 R2. Windows 7

Спасибо за все замечания. Некоторые из вас помогли мне найти ответ. Вот что я нашел:

Это была проблема разрешения NTFS, а не проблема SQL. Кроме того, он выглядит как ошибка (и он повторяется).

проблема: Учетная запись, которую я использовал, имела полные разрешения NTFS для файлов mdf и ldf. Однако у него были эти разрешения через членство в группе (у локальной группы администраторов были разрешения, и моя учетная запись член местных администраторов). (Я проверил разрешения)

Если я попытаюсь сделать присоединение, подключитесь к SQL Server как я (где я нахожусь в группе администраторов), это не удастся с проблемой NTFS.

однако, если я предоставляю те же права доступа к файлам, что и локальная группа администраторов, непосредственно к моей учетной записи домена, я могу прикрепиться без проблем.

(О, И да, я проверил локальные группы на этом компьютере, и я проверил, что моя учетная запись домена действительно является членом группа локальных администраторов).

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

Это звучит странно для меня, но я могу воспроизводить его снова и снова, поэтому я пришел к выводу, что это ответ.

Я хотел бы добавить дополнительную информацию к ответам, которые были опубликованы.

будьте осторожны при отсоединении базы данных потому что пользователь windows вы вошли в систему как становится единственным пользователем с разрешениями .файл mdf! Исходные разрешения .файл mdf, который включал пользователя SQLServerMSSQLUser$<computer_name>$<instance_name> и учетная запись администратора перезаписывается тем пользователем windows, который вошел в систему как (не пользователь sql server). Бум, все разрешения ушли просто как это. Так что делайте, как сказали другие, и щелкните правой кнопкой мыши .файл MDF и дважды проверьте разрешения.

я столкнулся с этой проблемой, потому что я использовал SSMS для подключения к базе данных (не имеет значения, какая учетная запись sql server) и отсоединил базу данных. После этого мой пользователь windows был единственным, у которого были какие-либо разрешения .файл mdf. Поэтому позже, когда я попытался подключить БД с помощью учетной записи sa, он выбросил ошибку "отказано в доступе".

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

добавить разрешение в папку, где ваш Это.

проверьте это имя: NT Service\MSSQLSERVER

, и Location на имя сервера.

эта проблема вызвана UAC (Контроль учетных записей), не так ли? Хотя ваша учетная запись пользователя является членом группы администраторов, UAC в Windows 7 не позволяет вам делать администраторские вещи, если вы не запускаете программы "от имени администратора". Это не настоящая ошибка в SQL Server или Management Studio или что-то еще. (Хотя он может знать проблему и попросить у вас повышенные разрешения вместо того, чтобы просто жаловаться на "ошибку 5".)

запустите SQL Server Management Studio от имени администратора. (правая кнопка мыши-> Запуск от имени администратора) работал для меня с Windows 7 к SQL серверу 2008 Р2

база данных SQL2005 может быть присоединена таким образом в Windows 7:

и затем подключенная база данных успешно завершена.

при входе в sa (или любая учетная запись Sql Server), вы функционируете как учетная запись службы SQL Server, когда вы вошли в систему как вы, у вас есть разрешения вашей учетной записи. По какой-то причине у вас нет соответствующего доступа к файлам, но у учетной записи службы есть.

на sa пользователь использует учетные записи NTFS SQLServerMSSQLUser$<computer_name>$<instance_name> и SQLServerSQLAgentUser$<computer_name>$<instance_name> доступ к файлам базы данных. Вы можете попробовать добавить разрешения для одного или обоих этих пользователей.

Я не знаю, решает ли ваша проблема, так как вы говорите, что у вас нет проблем с sa пользователь, но я надеюсь, что это поможет.

со мной - Работает на window 8 - Щелкните правой кнопкой мыши SQL Server Manager Studio - > выполнить с администратором. - >прикрепить нет проблем

может быть исправлено easly но radicaly, просто перейдите в папку, где у вас хранятся файл mdf. выберите файл - > щелкните правой кнопкой мыши - > нажмите на свойства и дайте полные разрешения на файл для входа в систему безопасности пользователя.

Я нашел это решение: щелкните правой кнопкой мыши на папке, где вы храните свой .mdf файл --> нажмите Свойства --> выберите вкладку Безопасность, нажмите Изменить. и дайте ему полный контроль. Надеюсь, это поможет!

каждый раз, когда я сталкивался с этой проблемой, при попытке прикрепить базу данных, которая находится в другом каталоге из каталога базы данных по умолчанию, который настроен в SQL server.

Я настоятельно рекомендую вместо взлома с разрешениями на различные каталоги и учетные записи просто переместить файл данных в каталог, который sql server ожидает найти.

Я просто хотел добавить эту информацию.

вы получаете эту ошибку, потому что две разные логины сделали операции отсоединения и присоединения. Таким образом, файлы при отсоединении принадлежали первому логину, но прикрепление не удалось, потому что используемый логин не был владельцем файлов mdf и ldf.

когда мы отделяем файлы базы данных, владелец становится человеком, который сделал команду detach, поэтому для решения проблемы нам нужно изменить или добавить другой логин в качестве владельца файлов mdf и ldf.

щелкните правой кнопкой мыши на " filename.mdf " файл и выберите Свойства, чтобы проверить разрешения файла mdf. Здесь мы видим, что только одна учетная запись имеет разрешение на "именем.mdf", потому что это была учетная запись, которая использовалась для отсоединения базы данных.

чтобы решить эту проблему, нажмите на Добавлять. кнопка, чтобы добавить другой логин или любой другой логин, необходимый и дать логин полный контроль. Вы также должны сделать это для файла" ldf". После выполнения этой задачи нажмите кнопку OK. (Примечание для других операционных систем, вы можете изменить параметр , нажмите на эту сначала, а потом вы увидите добавить. выбор.)

для чего это стоит для тех, у кого есть конкретный вариант этой проблемы, который у меня был:

  • SQL Express 2008
  • Visual Studio 2010 Premium

в контекстном меню папки App_Data я создал базу данных SQL Express для целей отладки. Строка соединения (используемая NHibernate) была следующей:

Это дало мне ту же ошибку" отказано в доступе " в файле базы данных. Я пробовал давать различные пользователи полностью контролируют папку и файлы, в какой-то момент даже "все". Ничего не помогло, поэтому я снова удалил добавленные разрешения.

что, наконец, решил его было открыть Проводник сервера в Visual Studio, затем подключиться к MDF и отсоединить его снова. После того, как я сделал это, мое веб-приложение могло получить доступ к базе данных.

PS. Кредиты идут в этот блог Я нашел, пока гуглил эту проблему, вызвав идея прикрепите / отсоедините базу данных для решения проблемы.

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

У меня была та же проблема при подключении базы данных. Это не проблема SQL это вопрос счета. Перейдите в Панель управления / Настройки управления учетной записью пользователя / установите значение "никогда не уведомлять". Наконец, перезагрузите компьютер, и он сработал для меня.

я прикрепил файл mdf, щелкнув правой кнопкой мыши базу данных и удалив файл журнала AdventureWorks2012_Data_log.ЛДФ в Мастере . Файл mdf был помещен в следующее место

вышеуказанный метод помог мне решить проблему .

Я читал на этой странице и у них там есть интересное предложение:

внимание: будьте очень избирательны при добавлении пользователи этих ролей. Например, sysadmin сопоставляется с dbo в каждом база данных и является эквивалентом вход с помощью учетной записи sa.

конечно, у них тоже есть это:

разрешения для пользователей и роли, и базы данных специфичны. Все разрешения суммируется с исключение из правила DENY. Отказано разрешение на уровне пользователя или на уровне роли переопределяет же разрешение, предоставленное через другую роль членство за исключением предопределенной роли сервера sysadmin. (Ля администратор сохраняет за собой все права, даже если роли у них член есть Отказать в разрешении.)

поэтому, если вы администратор домена и в группе SQL 'sysadmin', мир должен быть вашим ракообразным.

конечно, по Microsoft, вы должны быстро взглянуть на эти две страницы:
ссылка на предпосылки базы данных

вы шалите и пытаетесь прикрепить их вручную :) серьезно, у вас есть все предпосылки для базы данных AdventureWorks2008?
Я подозреваю, что это просто еще один случай Microsoft oddity/edge, но я могу ошибаться.

Я сравнил параметры безопасности других файловых баз данных в исходном местоположении с перемещенными файлами и заметил, что MSSQL$SQLEXPRESS не был назначен разрешения для файлов в их новом местоположении. Я добавил полный контроль для "NT SERVICE\MSSQL$SQLEXPRESS" (должен включать эту службу NT), и он прикреплен только штраф.

похоже, что исходная папка данных имеет эти разрешения, и файлы наследуют ее. Конечно, перемещение файлов и разрывы наследования.

Я проверил файл mdf другого проекта, который я создал непосредственно в его папке app_data. он не имеет разрешений MSSQL$SQLEXPRESS. Хммм. Интересно, почему SQL Express нравится один, но не другой?

enter image description here

заменить на ДЛЯ ATTACH -- > ДЛЯ ATTACH_FORCE_REBUILD_LOG

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

чтобы решить эту проблему в Windows 7, я обычно запускал SQL Server Management Studio (не как администратор). Затем я попытался прикрепить файл MDF. В этом процессе я использовал пользовательский интерфейс, а не вставлял путь. Я заметил, что тропинка отрезана от меня. Это связано с тем, что MS SQL Server (SQLServerMSSQLUser$machinename$SQLEXPRESS) пользователь, добавляемый для вас программным обеспечением, не имеет разрешений на доступ к папке (в этом случае папка глубоко в моих собственных папках пользователя).

вставка пути и продолжение приводит к вышеуказанной ошибке. Итак, я дал пользователю MS SQL Server разрешения на чтение, начиная с первого каталога, в котором ему было отказано (моя папка пользователя). Затем я немедленно отменил операцию распространения, потому что она может занять вечность, и снова применил необходимые разрешения на чтение к следующей подпапке, и пусть это распространяется полностью.

наконец, я дал пользователю MS SQL Server разрешения на изменение .MDF и. ldf файлы для БД.

теперь я могу прикрепить к файлам базы данных.

Я получил эту ошибку, как SA. В моем случае безопасность не имела значения. Я добавил полный контроль над файлами mdf и ldf, и все прошло хорошо.

при запуске sql server 2012 Вы можете получить эту ошибку, пытаясь прикрепить более старую версию mdf-файла. ex файл mdf из sql server 2008.

Я решил проблему, просто двигаться .файл mdf, который вы хотите прикрепить к общей папке, в моем случае я переместил его в папку users/public. Затем я прикрепляю его оттуда без каких-либо проблем. Надеюсь, это поможет.

для тех, кто не смог решить проблему с другими решениями здесь, следующее исправление сработало для меня:

перейдите в папку " данные "в установке SQL Server, щелкните правой кнопкой мыши, свойства, вкладка" Безопасность "и добавьте разрешения полного управления для пользователя "сетевая служба".

(приведенная выше ссылка для SQL 2005, но это исправлено SQL 2008 R2 установка для меня).

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

Читайте также: