Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как надежно переименовать базу под нагрузкой? / 10 сообщений из 10, страница 1 из 1
04.08.2020, 12:27
    #39986347
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как надежно переименовать базу под нагрузкой?
Всем привет, есть ряд БД, которые используются по принципу партиций. 2 самые новые лежат на быстрых дисках, при создании новой, та, что становиться третьей переносится с быстрого диска на медленный. Перенос осуществляется созданием новой БД на медленных дисках и заливкой в неё полного бэкапа и логов транзакций. До этого момента проблем нет, далее переносимой БД нужно сменить имя, например добавить префикс _todel. Что я делаю:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
		Set @Q = 'USE ' + @dbname + '
		SET DEADLOCK_PRIORITY HIGH
		ALTER DATABASE ' + @dbname + ' SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
		ALTER DATABASE ' + @dbname + ' Modify Name = ' + @dbname + '_todel;
		ALTER DATABASE ' + @dbname + '_todel SET MULTI_USER
		USE ADMIN
		'
		--print @Q
		exec sp_executesql @Q



Сервис работает таким образом, что внешние сервисы подключаются к MSSQL с правами администратора и я сталкиваюсь с такой проблемой, что после перевода БД в SINGLE_USER и преименованием к БД подключается другая сессия, на этом всё и останавливается.

Можете посоветовать, как можно этого избежать?
...
Рейтинг: 0 / 0
04.08.2020, 13:00
    #39986356
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как надежно переименовать базу под нагрузкой?
teCa,

настройте файрвол, включайте правило, запрещающее соединения в момент работы с базой, кроме своей машины, отключите SQL агента.
Можно вообще TCP протокол отключить в настройках и работать на самом сервере.
...
Рейтинг: 0 / 0
04.08.2020, 13:05
    #39986360
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как надежно переименовать базу под нагрузкой?
Владислав Колосов
teCa,

настройте файрвол, включайте правило, запрещающее соединения в момент работы с базой, кроме своей машины, отключите SQL агента.
Можно вообще TCP протокол отключить в настройках и работать на самом сервере.


Этого сделать не получится, тк придется остановить поставку в БД.
...
Рейтинг: 0 / 0
04.08.2020, 13:16
    #39986364
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как надежно переименовать базу под нагрузкой?
teCa,

почему не восстановить сразу базу с новым именем?
...
Рейтинг: 0 / 0
04.08.2020, 13:18
    #39986365
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как надежно переименовать базу под нагрузкой?
teCa
Можете посоветовать, как можно этого избежать?
Все пользовательские соединения пускать на сервер через отдельный endpoint.
Тогда
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
Set @Q = 'USE ' + @dbname + '
                alter endpoint ... state = stopped;
		SET DEADLOCK_PRIORITY HIGH
		ALTER DATABASE ' + @dbname + ' SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
		ALTER DATABASE ' + @dbname + ' Modify Name = ' + @dbname + '_todel;
		ALTER DATABASE ' + @dbname + '_todel SET MULTI_USER
                alter endpoint ... state = started;
		USE ADMIN



Самое правильное - отобрать права администратора.
...
Рейтинг: 0 / 0
04.08.2020, 13:19
    #39986366
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как надежно переименовать базу под нагрузкой?
Критик
teCa,

почему не восстановить сразу базу с новым именем?


Дело не в новой базе, а в старой, старая под нагрузкой, мне нужно её переименовать, что-бы новую можно было создать с рабочим именем.
...
Рейтинг: 0 / 0
04.08.2020, 16:57
    #39986461
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как надежно переименовать базу под нагрузкой?
teCa
Критик
teCa,

почему не восстановить сразу базу с новым именем?


Дело не в новой базе, а в старой, старая под нагрузкой, мне нужно её переименовать, что-бы новую можно было создать с рабочим именем.


1. Отсоединить.
2. Присоединить под другим именем.
3. Бинго.
...
Рейтинг: 0 / 0
04.08.2020, 18:20
    #39986500
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как надежно переименовать базу под нагрузкой?
teCa,

поставку в любом случае необходимо останавливать.
...
Рейтинг: 0 / 0
04.08.2020, 18:23
    #39986501
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как надежно переименовать базу под нагрузкой?
teCa,

Если хотите без остановки, то поднимайте два сервера.
...
Рейтинг: 0 / 0
05.08.2020, 07:44
    #39986570
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как надежно переименовать базу под нагрузкой?
teCa
... старая под нагрузкой, мне нужно её переименовать, ...

Равносильно смене коленвала на работающем двигателе внутреннего сгорания.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как надежно переименовать базу под нагрузкой? / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]