MS Sql 2008をオフラインまたはオンラインにしたい場合は、GUI->DB-Tasks-TakeOnlineまたはTakeOfflineを使用する必要があります。
これはいくつかのSQLスクリプトで実行できますか?
MS Sql 2008をオフラインまたはオンラインにしたい場合は、GUI->DB-Tasks-TakeOnlineまたはTakeOfflineを使用する必要があります。
これはいくつかのSQLスクリプトで実行できますか?
ALTER DATABASE database-name SET OFFLINE
ユーザーまたはプロセスが接続されているときにALTERDATABASEコマンドを実行したが、コマンドをブロックしたくない場合は、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;
手順を実行する前に、サーバーを再起動してください。データベースへの既存の接続を閉じます。
私はこれが古い投稿であることを知っていますが、誰かがこの解決策に出くわし、実行せずにスクリプトを返す非カーソルメソッドを好む場合に備えて。以前のソリューションを採用し、結果に基づいて構築する選択に変換しました。
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
これはあなたにとって非常に役立つかもしれないというメモです:GUIが舞台裏でTSQLwiseを何をしているかを見るのはほとんど常に可能です。