MS Sql 2008をオフラインまたはオンラインにしたい場合は、GUI - > DB-Tasks-Take OnlineまたはTake Offlineを使用する必要があります。Microsoft SQLデータベースをオンラインまたはオフラインにするSQLスクリプト?
これはいくつかのSQLスクリプトで行うことができますか?
MS Sql 2008をオフラインまたはオンラインにしたい場合は、GUI - > DB-Tasks-Take OnlineまたはTake Offlineを使用する必要があります。Microsoft SQLデータベースをオンラインまたはオフラインにするSQLスクリプト?
これはいくつかのSQLスクリプトで行うことができますか?
ALTER DATABASE database-name SET OFFLINE
あなたは、ユーザーまたはプロセスが接続されている一方でALTER DATABASEコマンドを実行すると、しかし、あなたはNO_WAITオプションでステートメントを実行することができ、コマンドがブロックされることを望むものではありません。これにより、コマンドはエラーで失敗します。
ALTER DATABASE database-name SET OFFLINE WITH NO_WAIT
対応するオンライン:
ALTER DATABASE database-name SET ONLINE
はここだけ、あなたに非常に便利かもしれませんノートです: それはGUIが舞台裏TSQLwiseをやっているかを見るために、ほとんど常に可能です。
-- 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;
再起動の手順を実行する前にサーバー。これは、データベースへの既存の接続を閉じます。
私はこれが古い投稿だと知っていますが、誰かがこの解決策に遭遇し、実行しないでスクリプトを返すノンカーソルメソッドを好むでしょう。 私は以前のソリューションを採用し、結果に基づいて構築された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
Nod Peter - 私はそのボタンを(スクリプトをつかむために)常時使用しています。その良い例は、テーブル構造/スキーマを変更したいときです.30秒以上かかりますタイムアウトエラーが発生する前に待機時間)..私は変更スクリプトをつかんで手動でそれを実行する必要があります。 –