У меня есть пара .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