Sql база только для чтения как убрать
This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.
Answered by:
Question
SQL Server 2005. Had changed database to single user/read only option. Now I cant change database back to multi user and all commands are getting stuck.
Msg 924, Level 14, State 1, Line 1
Database ‘db1’ is already open and can only have one user at a time.
I have tried all below and failed to get around this issue
sp_dboption db1, ‘single’, false
alter database db1 multi_user with rollback immediate
I cannot select the spid with as I get Msg 924 with below commands which all get stuck.
select spid from sysprocesses where dbid = (id of database)
sp_who does not show
What can be done to get out of this as this is a production server and difficult to restart midweek.
Answers
Or use DAC (Dedicated Admin Connection). Make sure you have enabled it first
In SSMS type in admin:<instanceName> for Server Name
after connecting to master ALTER DATABASE <DBName> SET MULTI_USER
- Proposed as answer by Jonathan Gardner — MSFT Microsoft employee Tuesday, May 1, 2012 6:26 PM
- Marked as answer by Peja Tao Tuesday, May 8, 2012 1:41 AM
I had a similar problem when the Query Tab for the single user got closed accidently.
1. I logged in through DAC. I tried killing a SPID (sp_who2) that I thought had the lock but could not get access to the database and I could not bring the database to muti-user mode.
2. I logged on as sa, but I could not bring the database to muti-user mode.
3. I tried re-starting the SQL Server instance (Test Server), the instance would not stop.
4. I had to reboot the Database Server (Test Server). The database recovered on it’s own.
I was then able to bring the database to single user mode, ran check db and then brought the database back to multi-user mode.
How to change database from Read-Only to Read-Write mode in SQL SERVER ?
Recently, I was working on new ASP.NET application and for that I attach an existing database to SQL SERVER. I noticed that it gets attached in read-only mode.
So, to change database to Read-Write mode, I need to follow any of the below steps:
A. Using SQL SERVER Management Studio:
Right click on Database, select Properties. And in the Database Properties window, select Options page. In Options page, under State change Database Read Only value to False.
B. Using SQL query:
Result:
.NET Professional | Microsoft Certified Professional | DZone’s Most Valuable Blogger | Web Developer | Author | Blogger
Doctorate in Computer Science and Engineering
Microsoft Certified Professional (MCP) with over 12+ years of software industry experience including development, implementation & deployment of applications in the .NET framework
Experienced and skilled Agile Developer with a strong record of excellent teamwork, successful coding & project management. Specialises in problem identification and proposal of alternative solutions. Provided knowledge and individual mentoring to team members as needed
Перенос базы SQL на другой диск
MS SQL Server 2012
1. Отсоединил базу.
2. Перенес файл MDF на новое место. LDF не трогал.
3. ПКМ на дереве «Базы данных», «Присоединить», выбрал новое расположение файла MDF.
После этого база в списке появилась, помеченная серым, в режиме «Только для чтения». В свойствах базы на вкладке «Файлы» расположение группы «PRIMERY» — по старому пути.
Что я делаю не так?
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
При подключении БД, можно изменить путь расположения(в свойствах БД) : логов и данных, (для данных укажите новый путь).
//для перевода в нормальный режим
alt er database NameBase set read_write
alter — слитно, что-то с кодировкой.
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
(12) вы вкурсе что если остановить базу и скопировать файлы mdf и ldf, то фактически это у вас и есть бэкап. Для того чтобы востановить базу эти два файла и нужны.
Так что перед копированием файлов никаких бэкапов не надо. Скопируйте перенастройте если все заработало из предыдущего места удаляйте.
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
- Скопировать ссылку
- Перейти
В MSSQL SMS
—1) создаем пустой файл на целевом диске в файловой группе переносимого файла new_file.mdf
—2) освобождаем (чистим) переносимый файл с опцией [EMPTYFILE] она запретит писать данные в очищенный файл
— (в последующем его можно будет удалить)
— , при этом занятые страницы файла будут перенесены во вновь созданный файл этой же файловой группы
— выполнив команду ниже
DBCC SHRINKFILE (<логическое имя переносимого файла> , [EMPTYFILE])
—3) удаляем пустой файл
ALT ER DATABASE <имя базы данных> REMOVE FILE <логическое имя переносимого файла>
Таким же образом переносим файл журнала.
Эти операции можно выполнять не переводя базу в offline
присоединенная база данных доступна только для чтения
Я использовал следующий сценарий для подключения базы данных. Но созданная база данных доступна только для чтения.
Какие изменения я должен внести в скрипт, чтобы он был доступен для чтения и записи. Пожалуйста, помоги мне.
задан 19 мая ’11, 04:05
12 ответы
Сначала убедитесь, что папка, в которой находится ваш файл .mdf, не предназначена только для чтения. Если это так, снимите этот флажок и убедитесь, что он соответствует папкам и файлам в этой папке.
Как только это будет сделано, откройте Management Studio, в обозревателе объектов щелкните правой кнопкой мыши базу данных, доступную только для чтения, и выберите «Свойства». В меню «Параметры» убедитесь, что свойство «Только для чтения» имеет значение false.
ответ дан 07 мар ’14, в 06:03
В дополнение к вышеперечисленным шагам мне также пришлось дать Сетевое обслуживание учетная запись полный контроль над файлами MDF и LDF. — ДугКоуто
Убедитесь, что файлы доступны для записи (а не только для чтения) и что у вашего пользователя есть права на запись в них.
Кроме того, в самых последних системах каталог Program Files доступен только для чтения. Попробуйте поместить файлы в другой каталог.
ответ дан 19 мая ’11, 08:05
+1 за подсказку о Program Files — Файлы данных SQL Server действительно не принадлежат Program Files каталог !! — marc_s
Когда я скопировал файлы .mdf и .ldf в папку установки сервера sql, он создает базу данных для чтения и записи. в чем будет проблема? — Маану
Проблема в том, что каталог Program Files доступен только для чтения. — Ксавье Пойнас
Я поместил их во вновь созданную папку. Но созданная база данных по-прежнему доступна только для чтения. — Маану
Эта новая папка является подкаталогом Program Files? — Ксавье Пойнас
Откройте свойства базы данных -> параметры и установите База данных только для чтения в Ложь.
- Убедитесь, что вы вошли в SQL Management Studio, используя проверку подлинности Windows.
- Убедитесь, что у вашего пользователя есть доступ на запись к каталогу файлов mdf и журналов.
ответ дан 03 апр.
Предоставление учетной записи службы sql ‘NT SERVICE \ MSSQLSERVER’ «Полный доступ» к файлам базы данных
Если у вас есть доступ к файлам / папкам сервера, вы можете попробовать это решение, которое сработало для меня:
SQL Server 2012 в Windows Server 2008 R2
- Щелкните правой кнопкой мыши файл или папку базы данных (mdf / ldf) и выберите «Свойства».
- Выберите вкладку «Безопасность» и нажмите кнопку «Изменить».
- Нажмите кнопку «Добавить».
- Введите имя объекта, которое нужно выбрать, как «NT SERVICE \ MSSQLSERVER», и нажмите кнопку «Проверить имена».
- Выберите MSSQLSERVER (RDN) и дважды нажмите кнопку «ОК».
- Предоставьте этой служебной учетной записи «Полный доступ» к файлу или папке.
- Вернувшись в SSMS, щелкните базу данных правой кнопкой мыши и выберите «Свойства».
- В разделе «Параметры» прокрутите вниз до раздела «Состояние» и измените «База данных только для чтения» с «Истина» на «Ложь».
Сработало для меня как шарм. — Закром
Вам необходимо изменить права доступа для папки вашей базы данных: свойства -> вкладка безопасности -> редактировать . -> добавить . -> имя пользователя «NT Service \ MSSQL $ SQLEXPRESS» или «NT Service \ MSSQLSERVER». Закройте окна, откройте «Дополнительно» . дважды щелкните пользователя и установите следующие параметры: Тип: Разрешить. Применяется к: этой папке, подпапке и файлам. Основные разрешения: все. Убедитесь, что также установлен владелец.
ответ дан 14 авг.
Другой способ, который сработал для меня:
После отсоединения перед прикреплением
-> перейдите к файлу .mdf -> щелкните правой кнопкой мыши и выберите свойства в файле -> вкладка безопасности -> Проверить группу или имена пользователей:
для вашего имени \ учетной записи (необязательно) и для «NT SERVICE \ MSSQLSERVER» (NB)
-> если нет, нажмите кнопку редактирования -> нажмите кнопку добавления
-> нажмите ОК -> предоставьте полные права -> примените, затем ОК
затем снова сделайте это и для файла .ldf.
Если служба SQL Server работает как локальная система, убедитесь, что папка, содержащая базы данных, должна иметь ПОЛНОЕ КОНТРОЛЬНОЕ РАЗРЕШЕНИЕ для учетной записи локальной системы.
Это работает для меня.
ответ дан 15 дек ’14, 09:12
Вам нужно перейти в свойства новой папки> вкладку безопасности и дать разрешения пользователю SQL, имеющему права на папку DATA из папки установки SQL-сервера.
ответ дан 29 апр.
В этом есть 3 (как минимум) части.
Часть 1: Как все предлагали . Убедитесь, что папка и содержащие файлы не доступны только для чтения. Вы прочитаете о фантомной ошибке в окнах, где вы удаляете только чтение из папок и содержащих элементы, только чтобы снова открыть свойства и увидеть, что они все еще нажимаются. Это не ошибка. Честно говоря, это особенность. Вы видите прошлое. Атрибуты «Система» и «Только для чтения» имеют определенное значение. Теперь, когда Windows эволюционировала и использует другую файловую систему, эти атрибуты больше не имеют смысла для папок. Поэтому они были «перепрофилированы» в качестве маркера для ОС, позволяющего идентифицировать папки, которые имеют особое значение или настройки (и как таковые содержат файл desktop.ini). Папки, например, содержащие шрифты или специальные значки, настройки и т. Д. Таким образом, даже если этот атрибут все еще включен, он не влияет на файлы в них. Таким образом, его можно игнорировать, если вы выключили его в первый раз.
Часть 2: Опять же, как предлагали другие, щелкните правой кнопкой мыши базу данных и свойства, найдите параметры, убедитесь, что для свойства только для чтения установлено значение false. Обычно вы все равно не сможете изменить это вручную, если вам не повезет. Но прежде чем искать волшебные команды (sql или powershell), взгляните на часть 3.
Часть 3: Проверьте права доступа к папке. Убедитесь, что ваш пользователь SQL Server имеет к нему полный доступ. В большинстве случаев этим пользователем для установки по умолчанию является MSSQLSERVER или MSSQLEXPRESS с префиксом «NT Service». Вы найдете их в разделе базы данных security \ logins. Откройте свойства папки, перейдите на вкладку безопасности и добавьте этого пользователя в список.
Во всех трех случаях вам может потребоваться (а может и не потребоваться) отсоединение и повторное подключение, чтобы увидеть, что статус только для чтения удален.
Если я найду ситуацию, когда эти 3 решения не работают для меня, и найду другую альтернативу, я добавлю ее сюда вовремя. Надеюсь это поможет.