7

MS Sql 2008をオフラインまたはオンラインにしたい場合は、GUI->DB-Tasks-TakeOnlineまたはTakeOfflineを使用する必要があります。

これはいくつかのSQLスクリプトで実行できますか?

4

4 に答える 4

11
ALTER DATABASE database-name SET OFFLINE

ユーザーまたはプロセスが接続されているときにALTERDATABASEコマンドを実行したが、コマンドをブロックしたくない場合は、NO_WAITオプションを指定してステートメントを実行できます。これにより、コマンドはエラーで失敗します。

ALTER DATABASE database-name SET OFFLINE WITH NO_WAIT

オンラインでの対応:

ALTER DATABASE database-name SET ONLINE
于 2009-05-11T07:32:32.207 に答える
3
-- 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;

手順を実行する前に、サーバーを再起動してください。データベースへの既存の接続を閉じます。

于 2012-01-13T20:46:38.313 に答える
3

私はこれが古い投稿であることを知っていますが、誰かがこの解決策に出くわし、実行せずにスクリプトを返す非カーソルメソッドを好む場合に備えて。以前のソリューションを採用し、結果に基づいて構築する選択に変換しました。

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
于 2012-04-04T07:14:57.870 に答える
2

これはあなたにとって非常に役立つかもしれないというメモです:GUIが舞台裏でTSQLwiseを何をしているかを見るのはほとんど常に可能です。

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

于 2009-05-11T07:54:36.710 に答える