Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как снять restore state у Базы без привелегий на Create Base  [new]
devnull0
Member

Откуда:
Сообщений: 7
Дело в том что пробовал восстановить бэкап из БД1 в новую БД2 средствами Restore SQL Management Studio.
Но матернулось на права, и не смогло создать Базу БД2. В итоге БД1 зависла в restore state.
RESTORE DATABASE БД1 WITH RECOVERY не помогает, так как нет прав на Restore.
Есть ли возможность вывести БД из restore state. И как так получилось, что не имея прав я смог ее туда вогнать?
28 авг 16, 04:28    [19599379]     Ответить | Цитировать Сообщить модератору
 Re: Как снять restore state у Базы без привелегий на Create Base  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
devnull0
Но матернулось на права
Прям матом?
devnull0
RESTORE DATABASE БД1 WITH RECOVERY не помогает
Не помогает с какой ошибкой?
devnull0
так как нет прав на Restore.
Как вы определили, что не хватает прав именно на рестор?
28 авг 16, 09:53    [19599451]     Ответить | Цитировать Сообщить модератору
 Re: Как снять restore state у Базы без привелегий на Create Base  [new]
devnull0
Member

Откуда:
Сообщений: 7
Гавриленко Сергей Алексеевич,

При первой попытке восстановить состояние БД1 в БД2 вылетела ошибка создания БД2 "User does not have permission to CREATE DATABASE...." и на удаленном сервере рядом с файлом бэкапа создался только .лог файл. Точнее ошибку сказать сейчас не могу, так, как закрыл то первое окно c мастером восстановления в SQL Management Studio.

Restore не выполняется с ошибкой:

Msg 3110, Level 14, State 1, Line 1
User does not have permission to RESTORE database 'databasename'.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.


Есть ли вариант вывести БД из этого состояния, не имея прав или откатить команду восстановления? Все-таки сервер как-то позволили ее начать.
28 авг 16, 10:46    [19599506]     Ответить | Цитировать Сообщить модератору
 Re: Как снять restore state у Базы без привелегий на Create Base  [new]
devnull0
Member

Откуда:
Сообщений: 7
Есть идеи?
28 авг 16, 22:36    [19600611]     Ответить | Цитировать Сообщить модератору
 Re: Как снять restore state у Базы без привелегий на Create Base  [new]
Mr. X
Guest
devnull0,

Дать нужные права.
28 авг 16, 23:22    [19600724]     Ответить | Цитировать Сообщить модератору
 Re: Как снять restore state у Базы без привелегий на Create Base  [new]
devnull0
Member

Откуда:
Сообщений: 7
Попробовал воспроизвести проблему на тестовой БД
Порядок запросов был такой

USE [master]
BACKUP LOG [test] TO DISK = N'...test_LogBackup.bak' WITH NOFORMAT, NOINIT, NAME = N'test_LogBackup_....', NOSKIP, NOREWIND, NOUNLOAD, NORECOVERY , STATS = 5

RESTORE DATABASE [test_1] FROM DISK = N'....test.bak' WITH FILE = 1, MOVE N'test' TO N'....test_1.mdf', MOVE N'test_log' TO N'....test_1_log.ldf', NOUNLOAD, STATS = 5

GO


Первая команда вогнала базу в restoring state
А на второй команде выдало ошибку доступа.
В итоге база осталась висеть в restoring state
29 авг 16, 00:11    [19600816]     Ответить | Цитировать Сообщить модератору
 Re: Как снять restore state у Базы без привелегий на Create Base  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31986
devnull0
Порядок запросов был такой
Во первых, вы делаете BACKUP LOG.
Разумеется, из полученного таким образом бакапа базу восстановить нельзя.

Во вторых, вы указали зачем то опции NOFORMAT, NOINIT
Соответственно, вы добавляете очередной бакап к файлу test_LogBackup.bak, причём бакап лога(!).

Потом вы командой RESTORE DATABASE восстанавливаете первый из бакапов из совсем другого файла.

Непонятно, как вообще связаны эти 2 команды?
Чего вы вообще хотите, какой результат вам нужно получить?

devnull0
Первая команда вогнала базу в restoring state
Какую базу? test?
Ну естественно, вы же это попросили у сервера, указав опцию NORECOVERY
Этой командой вы отключили базу, записав остатки журнала в файл.
А вам что нужно было сделать?

devnull0
А на второй команде выдало ошибку доступа.
Ну, попросите дать админа нужные права.
29 авг 16, 00:35    [19600832]     Ответить | Цитировать Сообщить модератору
 Re: Как снять restore state у Базы без привелегий на Create Base  [new]
devnull0
Member

Откуда:
Сообщений: 7
alexeyvg,
Эти команды сгенерировала SQL Management Studio, при чем там эти фолаги NOFORMAT, NOINIT... стоят по умолчанию
Собственно, я так понимаю сделать ничего нельзя без прав.
Странно что сервер позволил вогнать базу в NORECOVERY без прав на RESTORE
29 авг 16, 00:47    [19600840]     Ответить | Цитировать Сообщить модератору
 Re: Как снять restore state у Базы без привелегий на Create Base  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31986
devnull0
Эти команды сгенерировала SQL Management Studio, при чем там эти фолаги NOFORMAT, NOINIT... стоят по умолчанию
Ну, флаги там можно снять :-)
А перед нажатием "Ок" в студии желательно прочитать справку, что разные чекбоксы обозначают.

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

Да, и ещё непонятно, что вы в итоге хотите сделать? Зачем вам бакап лога понадобился?

devnull0
Странно что сервер позволил вогнать базу в NORECOVERY без прав на RESTORE
Ну, это же было сделано не командой ресторе? Соответственно, и права на него не нужны.

Права у вас могут быть, это же другая база, исходная, может, у вас там есть права? Для этого достаточно быть владельцем базы.
Ваша база, вы владелец, вам нужно её отключить, вот вы её и отключили.

А для создания новой базы из бакапа, разумеется, никаких прав владельца быть не может, потому что база новая. Нужно права админа или права на CREATE DATABASE.
29 авг 16, 01:50    [19600882]     Ответить | Цитировать Сообщить модератору
 Re: Как снять restore state у Базы без привелегий на Create Base  [new]
aleks2
Guest
devnull0
alexeyvg,
Эти команды сгенерировала SQL Management Studio, при чем там эти фолаги NOFORMAT, NOINIT... стоят по умолчанию
Собственно, я так понимаю сделать ничего нельзя без прав.
Странно что сервер позволил вогнать базу в NORECOVERY без прав на RESTORE


Позволил вогнать - выгнать этой же командой.

BACKUP LOG [test] TO DISK = N'...test_LogBackup.bak' WITH NOFORMAT, NOINIT, NAME = N'test_LogBackup_....', NOSKIP, NOREWIND, NOUNLOAD, RECOVERY , STATS = 5
29 авг 16, 08:01    [19600996]     Ответить | Цитировать Сообщить модератору
 Re: Как снять restore state у Базы без привелегий на Create Base  [new]
aleks2
Guest
devnull0
alexeyvg,
Эти команды сгенерировала SQL Management Studio, при чем там эти фолаги NOFORMAT, NOINIT... стоят по умолчанию
Собственно, я так понимаю сделать ничего нельзя без прав.
Странно что сервер позволил вогнать базу в NORECOVERY без прав на RESTORE


Позволил вогнать - выгнать этой же командой.

BACKUP LOG [test] TO DISK = N'...test_LogBackup.bak' WITH NOFORMAT, NOINIT, NAME = N'test_LogBackup_....', NOSKIP, NOREWIND, NOUNLOAD, [b]RECOVERY[/b] , STATS = 5


правда это не канает.

Но

restore log [База] with recovery


пробовали?
29 авг 16, 08:09    [19601000]     Ответить | Цитировать Сообщить модератору
 Re: Как снять restore state у Базы без привелегий на Create Base  [new]
o-o
Guest
aleks2
Позволил вогнать - выгнать этой же командой.

BACKUP LOG [test] TO DISK = N'...test_LogBackup.bak' WITH NOFORMAT, NOINIT, NAME = N'test_LogBackup_....', NOSKIP, NOREWIND, NOUNLOAD, RECOVERY , STATS = 5

Да прям, щас у *бэкапа* еще будет вдруг опция with recovery (norecovery имеет смысл, если мы хотим сейсач же сюда же и восстановить)
----
To alexeyvg:
Никакой он не db_owner, он максимум db_bakupoperator, поэтому бэкапить может, а восстанавливать нет.
ТС приехал, остается плакаться админу.
Права свои в базе можно проверить так:
select * from sys.fn_my_permissions(null,'database')

А мемберство в роли так:
select is_member('db_bakupoperator') 
29 авг 16, 08:22    [19601009]     Ответить | Цитировать Сообщить модератору
 Re: Как снять restore state у Базы без привелегий на Create Base  [new]
o-o
Guest
o-o,

Отвечу себе же. Дела обстоят еще хуже, он овнер, но прав на рестор у него нет все равно. Это написано в статье БОЛ про рестор. Овнер только из снэпшота восстанавливает. Потому что на момент рестора база может быть unaccessable (вот как у ТС, например) и проверить его права в базе невозможно, поэтому и нужны права уровня сервера, а их у него нет
29 авг 16, 08:47    [19601037]     Ответить | Цитировать Сообщить модератору
 Re: Как снять restore state у Базы без привелегий на Create Base  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31986
o-o
Отвечу себе же. Дела обстоят еще хуже, он овнер, но прав на рестор у него нет все равно. Это написано в статье БОЛ про рестор. Овнер только из снэпшота восстанавливает.
Да, вы правы, поторопился, только для восстановления снапшота.
29 авг 16, 09:08    [19601068]     Ответить | Цитировать Сообщить модератору
 Re: Как снять restore state у Базы без привелегий на Create Base  [new]
o-o
Guest
devnull0
Собственно, я так понимаю сделать ничего нельзя без прав.
Странно что сервер позволил вогнать базу в NORECOVERY без прав на RESTORE

это такой прикол у MS.
мне однажды тоже посчатсливилось огрести из этой серии.
будучи db_owner-ом, первожу базу в оффлайн -- это пожалуйста.
а в онлайн обратно никак, нужно серверное ALTER ANY DATABASE.
все по той же причине.
пока база онлайн, твои права в базе можно проверить,
ты овнер и волен базу в оффлайн отправить.
а вот попробуй верни в онлайн без серверных прав.
29 авг 16, 09:33    [19601108]     Ответить | Цитировать Сообщить модератору
 Re: Как снять restore state у Базы без привелегий на Create Base  [new]
devnull0
Member

Откуда:
Сообщений: 7
aleks2,

restore log [База] with recovery

пробовал да, нужный те же права на Restore
31 авг 16, 02:31    [19610265]     Ответить | Цитировать Сообщить модератору
 Re: Как снять restore state у Базы без привелегий на Create Base  [new]
devnull0
Member

Откуда:
Сообщений: 7
В общем через админа удалось восстановить, но все же считаю, что это реально упущение, что можно совершить необратимые действия в пределах дозволенности своих прав.
Не знаю, в какой ситуации такое может понадобится. Может, если база коррупнулась, и ты хочешь спасти хоть что-то, послав ее в recovery state для дальнейшего восстановления. Хотя с тем же успехом можно сделать ее READ ONLY
31 авг 16, 02:37    [19610267]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить