sql >> Databasteknik >  >> RDS >> Sqlserver

Definiera stegen för SQL Server Cursor - SQL Server / TSQL Tutorial

Markörer är objekt som tillhandahålls till oss i SQL Server för att utföra rad för rad operation.

Här är stegen hur man skriver en markör

1-Deklarera en markör av använda namnet på markören med en Select-sats
2- Öppna markören för att fylla med utdata från Select-satsen
3- Hämta raderna för att bearbeta dem en efter en
4- Stäng markören
5- Avallokera markör

Vi stöter på olika situationer där vi kan använda markörer. Nedan finns några exempel där vi kan använda markörer

Exempel:
1-- Döda alla anslutningar från en SQL Server-databas
2-- Lägg till en ny kolumn som CreatedBy till alla tabeller i en databas
3--Aktivera/inaktivera alla utlösare i en SQL Server-databas
4--Generera skript/Ta säkerhetskopiering av all databas på SQL Server en efter en
5 --Trunkera/ta bort alla tabeller från en SQL Server-databas


Exempelkod:
Koden nedan kan användas för att döda alla processer till en databas. Vi kan inte byta namn på en databas om någon process kommer åt databasen. För att byta namn måste vi döda alla processer innan vi byter namn på databasen i SQL Server.

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. Hur man genererar skript för att lägga till standardbegränsningar till kolumn i flera tabeller i SQL Server-databasen - SQL Server / TSQL självstudie del 94

  2. MySQL PÅ DUBLIKATNYCKEL - senaste infognings-id?

  3. Hur man lägger till administratörsservern i R12.2

  4. Oracle-strängaggregation