SQL-скрипт для перевода базы данных Microsoft Sql в онлайн или оффлайн режим?

StackOverflow https://stackoverflow.com/questions/847076

  •  21-08-2019
  •  | 
  •  

Вопрос

Если я хочу перевести MS Sql 2008 в автономный или сетевой режим, мне нужно использовать графический интерфейс пользователя -> DB-Tasks-Take Online или Take Offline.

Можно ли это сделать с помощью какого-нибудь sql-скрипта?

Это было полезно?

Решение

ALTER DATABASE database-name SET OFFLINE

Если вы запустите ИЗМЕНИТЬ БАЗУ ДАННЫХ команда пока пользователи или процессы подключены, но вы не хотите, чтобы команда была заблокирована, вы можете выполнить инструкцию с параметром NO_WAIT.Это приводит к сбою команды с сообщением об ошибке.

ALTER DATABASE database-name SET OFFLINE WITH NO_WAIT

Соответствующий онлайн:

ALTER DATABASE database-name SET ONLINE

Другие советы

-- Take all user databases offline
CREATE PROCEDURE SP_TakeOfflineAllDatabase AS
BEGIN
    DECLARE @db sysname, @q varchar(max);
    DECLARE cur_db CURSOR FOR
        SELECT name FROM sys.databases WHERE owner_sid<>0x01;
    OPEN cur_db;
    WHILE 1=1
    BEGIN
        FETCH NEXT FROM cur_db INTO @db;
        IF @@FETCH_STATUS <> 0
            BREAK;
        SET @q = N'ALTER DATABASE [' + @db + N'] SET OFFLINE WITH NO_WAIT';
        EXEC(@q);
    END;
    CLOSE cur_db;
    DEALLOCATE cur_db;
END;

Перезагрузите сервер перед запуском процедуры.Это закроет существующие подключения к базам данных.

Вот заметка, которая может быть вам очень полезна :Почти всегда можно увидеть, что графический интерфейс делает TSQLwise за кулисами.

c : http://www.mssqltips.com/tip.asp?tip=1505

Я знаю, что это старый пост, но на всякий случай, если кто-то наткнется на это решение и предпочтет метод без курсора, который не выполняется, но возвращает скрипты.Я только что взял предыдущее решение и преобразовал его в select, который строится на основе результатов.

DECLARE @SQL VARCHAR(8000)

SELECT @SQL=COALESCE(@SQL,'')+'ALTER DATABASE  '+name+ N' SET OFFLINE WITH NO_WAIT;
    '
FROM sys.databases
WHERE owner_sid<>0x01
PRINT @SQL
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top