Не удалось выполнить инструкцию alter database

Проблемы

Предположим, что вы подключаетесь к базе данных Microsoft Azure SQL версии 12 с помощью Microsoft SQL Server Management Studio 2014. При включении параметра отслеживания изменений для базы данных SQL Azure с помощью диалогового окна » Свойства базы данных » может появиться сообщение об ошибке. Например, если изменить значение параметра Отслеживание изменений на true в диалоговом окне Свойства базы данных Azure SQL, а затем нажать кнопку ОК, может появиться сообщение об ошибке, подобное следующему:

Не удалось выполнить инструкцию ALTER DATABASE «имя базыданных». (Microsoft. SqlServer. SMO) Дополнительные сведения: возникло исключение при выполнении инструкции или пакета Transact-SQL. (Microsoft. SqlServer. ConnectionInfo) В базе данных «Master» нет разрешения на просмотр состояния базы данных. У пользователя нет разрешения на выполнение этого действия. (Microsoft SQL Server, ошибка: 262)

Решение

Эта проблема впервые устранена в следующем накопительном обновлении SQL Server:

Накопительное обновление 1 для SQL Server 2014 с пакетом обновления 1 (SP1)

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

Версии сборки SQL Server 2014

Статус

Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе «Применяется к».

Ссылки

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

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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

  • Remove From My Forums
  • Question

  • At the end of the month we have a sql agent job for each database. The first thing it does is take the database off line and then immediately back online. These jobs have been working for years. Now at one client’s sql server, maybe 25 of his 45 databases
    failed with «5069 ALTER DATABASE statement failed» when running the statement «ALTER DATABASE [DataBaseName] SET ONLINE». This morning when we reran the failed SQL Agent Jobs, they all ran without error. 

    Any ideas on why so many databases would fail on the SET ONLINE? 

  • Remove From My Forums

 locked

Изменение параметров сортировки базы данных

  • Вопрос

  • В настройках сервера сортировка указана — Cyrillic_General_CI_AS

    Моя пользовательская база установилась с сортировкой — SQL_Latin1_General_CP1_CI_AS

    Пробовал изменить сортировку с помощью ALTER DATABASE database_name COLLATE Cyrillic_General_CI_AS, в ответ получал вот такие ошибки:
    Сообщение 5030, уровень 16, состояние 2, строка 1
    Базу данных нельзя заблокировать монопольно для выполнения операции.
    Сообщение 5072, уровень 16, состояние 1, строка 1
    Не удалось выполнить инструкцию ALTER DATABASE. Параметрам сортировки по умолчанию для базы данных «OperationsManager» невозможно установить значение Cyrillic_General_CI_AS

    Есть какой-нибудь более-менее простой способ изменить сортировку без пересоздания все баз данных?

    Благодарю всех за помощь!

Ответы

  • Выполните до:
    alter database database_name set single_user with rollback immediate

    Выполните после:
    alter database database_name set multi_user

    • Помечено в качестве ответа

      26 апреля 2010 г. 9:42

I need to restart a database because some processes are not working. My plan is to take it offline and back online again.

I am trying to do this in Sql Server Management Studio 2008:

use master;
go
alter database qcvalues
set single_user
with rollback immediate;
alter database qcvalues
set multi_user;
go

I am getting these errors:

Msg 5061, Level 16, State 1, Line 1
ALTER DATABASE failed because a lock could not be placed on database 'qcvalues'. Try again later.
Msg 5069, Level 16, State 1, Line 1
ALTER DATABASE statement failed.
Msg 5061, Level 16, State 1, Line 4
ALTER DATABASE failed because a lock could not be placed on database 'qcvalues'. Try again later.
Msg 5069, Level 16, State 1, Line 4
ALTER DATABASE statement failed.

What am I doing wrong?

nalply's user avatar

nalply

26.8k15 gold badges78 silver badges101 bronze badges

asked Jan 12, 2011 at 19:23

JOE SKEET's user avatar

4

After you get the error, run

EXEC sp_who2

Look for the database in the list. It’s possible that a connection was not terminated. If you find any connections to the database, run

KILL <SPID>

where <SPID> is the SPID for the sessions that are connected to the database.

Try your script after all connections to the database are removed.

Unfortunately, I don’t have a reason why you’re seeing the problem, but here is a link that shows that the problem has occurred elsewhere.

http://www.geakeit.co.uk/2010/12/11/sql-take-offline-fails-alter-database-failed-because-a-lock-could-not-error-5061/

answered Jan 12, 2011 at 19:50

bobs's user avatar

bobsbobs

21.9k12 gold badges67 silver badges78 bronze badges

5

I managed to reproduce this error by doing the following.

Connection 1 (leave running for a couple of minutes)

CREATE DATABASE TESTING123
GO

USE TESTING123;

SELECT NEWID() AS X INTO FOO
FROM sys.objects s1,sys.objects s2,sys.objects s3,sys.objects s4 ,sys.objects s5 ,sys.objects s6

Connections 2 and 3

set lock_timeout 5;

ALTER DATABASE TESTING123 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;

answered Jan 12, 2011 at 20:11

Martin Smith's user avatar

Martin SmithMartin Smith

439k87 gold badges742 silver badges846 bronze badges

Just to add my two cents. I’ve put myself into the same situation, while searching the minimum required privileges of a db login to run successfully the statement:

ALTER DATABASE ... SET SINGLE_USER WITH ROLLBACK IMMEDIATE

It seems that the ALTER statement completes successfully, when executed with a sysadmin login, but it requires the connections cleanup part, when executed under a login which has «only» limited permissions like:

ALTER ANY DATABASE

P.S. I’ve spent hours trying to figure out why the «ALTER DATABASE..» does not work when executed under a login that has dbcreator role + ALTER ANY DATABASE privileges. Here’s my MSDN thread!

answered Jul 20, 2015 at 17:00

Veselin Z.'s user avatar

I will add this here in case someone will be as lucky as me.

When reviewing the sp_who2 list of processes note the processes that run not only for the effected database but also for master. In my case the issue that was blocking the database was related to a stored procedure that started a xp_cmdshell.

Check if you have any processes in KILL/RollBack state for master database

SELECT *
FROM sys.sysprocesses
WHERE cmd = 'KILLED/ROLLBACK'

If you have the same issue, just the KILL command will probably not help.
You can restarted the SQL server, or better way is to find the cmd.exe under windows processes on SQL server OS and kill it.

answered Jan 8, 2018 at 14:10

Alina's user avatar

AlinaAlina

314 bronze badges

In SQL Management Studio, go to Security -> Logins and double click your Login. Choose Server Roles from the left column, and verify that sysadmin is checked.

In my case, I was logged in on an account without that privilege.

HTH!

answered Dec 28, 2012 at 15:25

Marty's user avatar

MartyMarty

9326 silver badges8 bronze badges

1

Killing the process ID worked nicely for me.
When running «EXEC sp_who2» Command over a new query window… and filter the results for the «busy» database , Killing the processes with «KILL » command managed to do the trick. After that all worked again.

aaaidan's user avatar

aaaidan

7,0938 gold badges66 silver badges102 bronze badges

answered Jun 27, 2014 at 22:43

user3749524's user avatar

0

I know this is an old post but I recently ran into a very similar problem. Unfortunately I wasn’t able to use any of the alter database commands because an exclusive lock couldn’t be placed. But I was never able to find an open connection to the db. I eventually had to forcefully delete the health state of the database to force it into a restoring state instead of in recovery.

answered Feb 9, 2017 at 19:04

Geoff Dawdy's user avatar

Geoff DawdyGeoff Dawdy

8866 gold badges15 silver badges42 bronze badges

In rare cases (e.g., after a heavy transaction is commited) a running CHECKPOINT system process holding a FILE lock on the database file prevents transition to MULTI_USER mode.

answered Aug 14, 2018 at 12:52

mitix's user avatar

mitixmitix

1851 silver badge8 bronze badges

In my scenario, there was no process blocking the database under sp_who2. However, we discovered because the database is much larger than our other databases that pending processes were still running which is why the database under the availability group still displayed as red/offline after we tried to ‘resume data’by right clicking the paused database.

To check if you still have processes running just execute this command:
select percent complete from sys.dm_exec_requests
where percent_complete > 0

answered May 31, 2019 at 14:12

user123456789's user avatar

   Zixxx

29.06.10 — 10:29

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

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

«База данных уже открыта, и одновременно к ней может обращаться только один пользователь»

Что сделать? Как отрубить имеющиеся соединения?

   Maxus43

1 — 29.06.10 — 10:30

Перезапустить службу не предлагать?

   Zixxx

2 — 29.06.10 — 10:30

(1) Ну да, желательно как-нибудь бэз этого

   Жан Пердежон

3 — 29.06.10 — 10:34

закрыть базу тем, кем она открыта

   МихаилМ

4 — 29.06.10 — 10:38

все конечно уже догадались что речь про ms sql.

НО версии  ms sql.  из какой программмы Вы преводили — не раскрыта.

   ДенисЧ

5 — 29.06.10 — 10:39

alter database MyBse set MULTI_USER

   Zixxx

6 — 29.06.10 — 10:42

(5)

Сообщение 5064, уровень 16, состояние 1, строка 1

В настоящий момент невозможно изменить состояние или параметры базы данных «buh_npm_upp». База данных находится в однопользовательском режиме, и в настоящий момент к ней подключен пользователь.

Сообщение 5069, уровень 16, состояние 1, строка 1

Не удалось выполнить инструкцию ALTER DATABASE.

Висит какое-то соединение, но где его посмотреть в SQL Server 2008?

   ДенисЧ

7 — 29.06.10 — 10:45

alter database MyBse set MULTI_USER WITH ROLLBACK IMMEDIATE

+

sp_who

   Zixxx

8 — 29.06.10 — 10:47

(7) А это sp_who куда?

   ДенисЧ

9 — 29.06.10 — 10:48

(8) туда же, рядом.

Оно покажет, who is connected

   Zixxx

10 — 29.06.10 — 10:53

(9)

alter database buh_npm_upp set MULTI_USER WITH ROLLBACK IMMEDIATE sp_who

Сообщение 102, уровень 15, состояние 1, строка 1

Неправильный синтаксис около конструкции «sp_who».

   Zixxx

11 — 29.06.10 — 11:08

up

   Токарь

12 — 29.06.10 — 11:11

иногда надо sp_who2

   Zixxx

13 — 29.06.10 — 11:13

(12) Таже фигня

Неправильный синтаксис около конструкции «sp_who2».

А монитором никак нельзя получить? Что-то похожее было в 2005 но в 2008 немогу ничего найти

  

Zixxx

14 — 29.06.10 — 11:24

upup

Понравилась статья? Поделить с друзьями:
  • Не работает автозапуск на сигнализации старлайн а9 инструкция причина
  • Не приходит почта на айфон пошаговая инструкция
  • Не получается гараж на автодроме инструкция для тупых
  • Не платит алименты что делать пошаговая инструкция
  • Не осталось никого инструкция по выживанию аккорды