온라인 또는 오프라인에서 Microsoft SQL 데이터베이스를 가져 오는 SQL 스크립트?

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

  •  21-08-2019
  •  | 
  •  

문제

MS SQL 2008 오프라인 또는 온라인을 사용하려면 GUI-> DB-TASKS-TAKE 온라인을 사용하거나 오프라인으로 사용해야합니다.

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;

프로 시저를 실행하기 전에 서버를 다시 시작하십시오. 데이터베이스에 대한 존재하는 연결을 닫습니다.

다음은 귀하에게 매우 유용 할 수 있다는 메모입니다. GUI가 무대 뒤에서 TSQLWISE를 수행하는 것이 거의 항상 가능합니다.

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

나는 이것이 오래된 게시물이라는 것을 알고 있지만 누군가 가이 솔루션을 발견하고 실행되지 않고 스크립트를 반환하는 비 커서 방법을 선호하는 경우를 대비하여. 방금 이전 솔루션을 가져 와서 결과를 기반으로 빌드하는 선택으로 변환했습니다.

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