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