Подтвердить что ты не робот

Прикрепленная база данных доступна только для чтения

Я использовал следующий script для присоединения базы данных. Но созданная база данных только для чтения.
Какие изменения я должен внести в script, чтобы сделать его чтение-запись. Пожалуйста, помогите мне.

USE [master]
GO
CREATE DATABASE [GemDatabase] ON 
( FILENAME = N'E:\Program Files (x86)\ICE Products\ICEConnect200\New Database\GemDatabase.mdf' ),
( FILENAME = N'E:\Program Files (x86)\ICE Products\ICEConnect200\New Database\GemDatabase_log.ldf' )
 FOR ATTACH
GO
if not exists (select name from master.sys.databases sd where name = N'GemDatabase' and SUSER_SNAME(sd.owner_sid) = SUSER_SNAME() ) EXEC [GemDatabase].dbo.sp_changedbowner @loginame=N'sa', @map=false
GO
4b9b3361

Ответ 1

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

Как только это будет сделано, Open Management Studio, в Проводнике объектов щелкните правой кнопкой мыши на базе данных, которая доступна только для чтения, и выберите "Свойства". В меню "Параметры" убедитесь, что свойство "Только для чтения" является ложным.

enter image description here

Ответ 2

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

Кроме того, в самых последних системах каталог Program Files доступен только для чтения. Попробуйте поместить файлы в другой каталог.

Ответ 3

Откройте свойства базы данных → параметры и установите для базы данных только для чтения значение False.

  • Убедитесь, что вы вошли в SQL Management Studio с использованием проверки подлинности Windows.
  • Убедитесь, что ваш пользователь имеет право на запись в каталог файлов mdf и log.

Сделал трюк для меня...

Ответ 4

Вам нужно изменить разрешение для своей папки базы данных: свойства → вкладка безопасности → изменить... → добавить... → имя пользователя "NT Service\MSSQL $SQLEXPRESS" или "NT Service\MSSQLSERVER". Закройте окна, откройте "Дополнительно"..., дважды щелкните пользователя и установите следующее: Тип: Разрешить Применимо к: Эта папка, подпапка и файлы Основные разрешения: все Убедитесь, что владелец тоже установлен.

Ответ 5

ALTER DATABASE [DatabaseName] SET READ_WRITE

Ответ 6

Предоставление учетной записи службы SQL "NT SERVICE\MSSQLSERVER" "Полный контроль" файлов базы данных

Если у вас есть доступ к файлам/папкам сервера, вы можете попробовать это решение, которое сработало для меня:

SQL Server 2012 на Windows Server 2008 R2

  • Щелкните правой кнопкой мыши файл или папку базы данных (mdf/ldf) и выберите "Свойства".
  • Выберите вкладку "Безопасность" и нажмите кнопку "Изменить".
  • Нажмите кнопку "Добавить".
  • Введите имя объекта, чтобы выбрать "NT SERVICE\MSSQLSERVER" и нажмите кнопку "Проверить имена".
  • Выберите MSSQLSERVER (RDN) и дважды нажмите кнопку "ОК".
  • Дайте этой учетной записи службы "Полный доступ" к файлу или папке.
  • Вернитесь в SSMS, щелкните правой кнопкой мыши базу данных и выберите "Свойства".
  • В разделе "Параметры" прокрутите страницу вниз до раздела "Состояние" и измените "Только для базы данных" с "Истина" на "Ложно".

Ответ 7

Если служба SQL Server работает как локальная система, убедитесь, что папка, содержащая базы данных, должна иметь ПОЛНОЕ РАЗРЕШЕНИЕ УПРАВЛЕНИЯ для учетной записи локальной системы.

Это сработало для меня.

Ответ 8

Вам нужно перейти на вкладку свойств новой папки > вкладка безопасности и предоставить разрешения пользователю SQL, имеющему права на папку DATA из папки установки SQL Server.

Ответ 9

Есть 3 (по крайней мере) части этого.

Часть 1: Как все остальные предложили... Убедитесь, что папка и содержащие файлы не прочитаны. Вы будете читать об ошибке phantom в окнах, где вы удаляете только чтение из папок и содержащих элементы, только чтобы снова открыть свойства и увидеть, что они все еще нажаты. Это не ошибка. Честно говоря, его особенность. Вы видите назад в первые дни. Атрибуты System и Read Only имеют определенные значения. Теперь, когда окна эволюционировали и использует другую файловую систему, эти атрибуты больше не имеют смысла в папках. Таким образом, они были "перепрофилированы" в качестве маркера для ОС, чтобы идентифицировать папки, которые имеют особое значение или настройки (и, как таковые, содержат файл desktop.ini). Папки, например, содержащие шрифты или специальные значки и настройки и т.д. Поэтому, хотя этот атрибут все еще включен, он не влияет на файлы внутри них. Поэтому его можно игнорировать, если вы отключили его в первый раз.

Часть 2: Опять же, как предложили другие, щелкните правой кнопкой мыши базу данных и свойства, найдите параметры, убедитесь, что для свойства только для чтения установлено значение false. Обычно вы вообще не сможете изменить это вручную, если вам не повезет. Но прежде чем вы начнете искать магические команды (sql или powershell), взгляните на часть 3.

Часть 3: Проверьте разрешения на папку. Убедитесь, что пользователь SQL Server имеет полный доступ к нему. В большинстве случаев этот пользователь для установки по умолчанию либо MSSQLSERVER, либо MSSQLEXPRESS с префиксом "NT Service". Вы найдете их в разделе security\logins базы данных. Откройте свойства папки, перейдите на вкладку безопасности и добавьте этого пользователя в список.

Во всех трех случаях вы можете (или не можете) отключить и повторно подключиться, чтобы удалить статус только для чтения.

Если я нахожу ситуацию, когда эти 3 решения не работают для меня, и я нахожу другую альтернативу, я добавлю ее здесь вовремя. Надеюсь, это поможет.

Ответ 10

Другой способ, который работал у меня:

После удаления, прежде чем присоединить

  • - > перейдите в файл .mdf - > щелкните правой кнопкой мыши и выберите свойства в файле - > вкладка безопасности - > Проверить группу или имена пользователей:

    для вашего имени \account (необязательно)  и для "NT SERVICE\MSSQLSERVER" (NB)

Элемент списка

- > если нет, то нажмите кнопку редактирования  - > нажмите кнопку "Добавить"

  and enter\search NT SERVICE\MSSQLSERVER
  • - > нажмите ОК. - > предоставить полные права - > применить затем ok

    затем снова ок сделайте это для файла .ldf.

затем присоедините

Ответ 11

Ответ от Varun Rathore в порядке, но вы должны учитывать, что начиная с Windows Server 2008 R2 и выше служба SQLServer будет запускаться под локальной виртуальной учетной записью, а не в старой хорошо известной "NETWORK SERVICE". Из-за этого, чтобы переключить вновь подключенную БД к "не только режиму чтения", вы должны установить разрешения на файлы ldf и mdf для локальной пользовательской строки "NT SERVICE\MSSQLSERVER", где MSSQLSERVER будет именем службы в довольно стандартном установка.

Оформить заказ https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/configure-windows-service-accounts-and-permissions#VA_Desc для получения подробной информации о настройке разрешений на обслуживание