sql >> データベース >  >> RDS >> Sqlserver

SQLServerカーソルの手順を定義する-SQLServer/TSQLチュートリアル

    カーソルは、行ごとの操作を実行するためにSQLServerで提供されるオブジェクトです。

    カーソルを作成する手順は次のとおりです。

    1-カーソルを宣言するSelectステートメントでカーソルの名前を使用する
    2-カーソルを開いてSelectステートメントの出力を入力する
    3-行をフェッチして1つずつ処理する
    4-カーソルを閉じる
    5-カーソルの割り当てを解除する

    カーソルを使用できるさまざまな状況が発生します。以下は、カーソルを使用できるいくつかの例です

    例:
    1 ---SQLServerデータベースからすべての接続を強制終了します
    2--CreatedByなどの新しい列をに追加しますデータベース内のすべてのテーブル
    3--SQLServerデータベース内のすべてのトリガーを有効/無効にします
    4--スクリプトを生成します/SQLServer上のすべてのデータベースのバックアップを1つずつ作成します
    5 --SQLServerデータベースからすべてのテーブルを切り捨て/削除します


    サンプルコード:
    以下のコードを使用して、データベースへのすべてのプロセスを強制終了できます。いずれかのプロセスがデータベースにアクセスしている場合、データベースの名前を変更することはできません。名前を変更するには、SQLServerでデータベースの名前を変更する前にすべてのプロセスを強制終了する必要があります。

    USE MASTER
    GO
    DECLARE @DatabaseName AS VARCHAR(500)
    -->Provide the DataBaseName for which want to Kill all processes.
    SET @DatabaseName='TestDB'
    DECLARE @Spid INT
    
    --1: Declare Cursor:
    DECLARE KillProcessCur CURSOR FOR
      SELECT spid
      FROM   sys.sysprocesses
      WHERE  DB_NAME(dbid) = @DatabaseName
    
    --2: OPEN Cursor
    OPEN KillProcessCur
    
    --3: Fetch A record
    FETCH Next FROM KillProcessCur INTO @Spid
    
    --Loop Through the Rows one by one
    WHILE @@FETCH_STATUS = 0
      BEGIN
          DECLARE @SQL VARCHAR(500)=NULL
          SET @SQL='Kill ' + CAST(@Spid AS VARCHAR(5))
    
          PRint @SQL
         
          EXEC (@SQL)
          PRINT 'ProcessID =' + CAST(@Spid AS VARCHAR(5))
                + ' killed successfull'
          FETCH Next FROM KillProcessCur INTO @Spid
      END
    
    --4: Close the Cursor
    CLOSE KillProcessCur
    --5: Deallocate Cursor
    DEALLOCATE KillProcessCur
     
     
     
     
    1. クラウドベンダーの詳細:Google Cloud Platform(GCP)上のPostgreSQL

    2. PostgreSQLのトレンド:エンタープライズで最も人気のあるクラウドプロバイダー、言語、VACUUM、クエリ管理戦略、導入タイプ

    3. ストアドプロシージャの実行がスクリプトからのSQLクエリよりも速いのはなぜですか?

    4. NOLOCK(SQL Serverヒント)は悪い習慣ですか?