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

Почему моя БД доступна только для чтения при подключении к SQL Express, но не к SQL Web?

У меня есть пара .mdf / .ldf, изначально созданная в 2008 R2 Standard и значительно меньше 10 ГБ, с ACL:

d:\db snapshot\DB_NAME.mdf
    SERVERNAME\SQLServerMSSQLUser$ACCOUNT$MSSQLSERVER:F
    OWNER RIGHTS:F
    BUILTIN\Administrators:F

d:\db snapshot\DB_NAME_log.ldf
    SERVERNAME\SQLServerMSSQLUser$ACCOUNT$MSSQLSERVER:F
    OWNER RIGHTS:F
    BUILTIN\Administrators:F

Когда я присоединяю базу данных к экземпляру SQL Express 2008 R2, она доступна только для чтения. когда точно так же acls, учетные записи пользователей и операторы SQLCMD настраиваются с помощью SQL Web 2008 R2, он доступен для записи. я посмотрел страницу сравнения MSDN но у меня ничего не выскочило. Почему это происходит? Спасибо!

Если SQL Server Web работает как LocalSystem в то время как вместо этого SQL Server Express работает как NetworkService, то совершенно правильно, что SQL Server Express не имеет разрешений на запись в файлы базы данных, потому что NetworkService учетная запись не имеет прав администратора (хотя, судя по опубликованным вами ACL, у нее даже не должно быть читать разрешения ... но, возможно, они унаследованы откуда-то еще).

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

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


Это решило мою проблему с подключенной базой данных ТОЛЬКО ДЛЯ ЧТЕНИЯ даже после повторного предоставления разрешений для самой базы данных и корневых папок над ней! Попробуйте это, прежде чем вы еще больше облысеете.


Первоначально это было вызвано clonezilla. Я сменил жесткий диск с SSD (на нем была ОС) на жесткий диск емкостью 3 ТБ. Я скорее медленный, но вместительный HD. После клона я переименовал сервер (Гомер ... да), скопировал и вставил свои веб-сайты на новый жесткий диск, что нарушило все права доступа к моему диску D. Ни одна из моих баз данных на диске D никогда не могла бы существовать без НАГРУЗКИ ТОЛЬКО ДЛЯ ЧТЕНИЯ !!!! Это сбило меня с толку, поскольку в подпапке корневого каталога диска D ВСЕ РАЗРЕШЕНИЯ ПОВТОРНО ПРЕДОСТАВЛЕНЫ, КРОМЕ: MSSQL11 $ SQLEXPRESS Куда это делось?

Очевидно, у меня был отдельный каталог на моем диске D: \ SQLDATABASES \ для всех моих баз данных как SQL, так и MySQL. Я дал все разрешения, а потом еще несколько, но все равно никуда! Оказалось, что мне не хватало MSSQL11 $ SQLEXPRESS

Поскольку я купил в BestBuy два (жестких диска 3 ТБ), мой диск C с ОС был клоном, мой диск D был глупо скопирован и вставлен, а не клонирован, что исправило бы этот беспорядок.

В итоге, если у вас Windows Server 2012, и вы утроили проверенные разрешения, но их нет MSSQL11 $ SQLEXPRESS (вы даже не можете добавить это в разрешения ... не существует) просто скопируйте и вставьте свои базы данных в путь SQL по умолчанию, и кризис Виолы предотвратится. Я знал, что это проблема с разрешениями, но моя кувалда вот-вот решит ее! Пожалуйста, позвольте этой простой публикации помочь кому-нибудь, кроме меня.

мой путь к SQL по умолчанию: ЭТО РАБОТАЕТ, да, детка! Вставьте его в каталог данных

C: \ Program Files \ Microsoft SQL Server \ MSSQL11.SQLEXPRESS \ MSSQL \ DATA