Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Дефинирайте стъпките за курсора на SQL Server - SQL Server / TSQL урок

Курсорите са обекти, които ни се предоставят в SQL Server за извършване на операция ред по ред.

Ето стъпките как да напишете курсор

1-Декларирайте курсор от използване на името на курсора с оператор Select
2- Отворете курсора, за да попълните изхода на оператор Select
3- Извлечете редовете, за да ги обработите един след един
4- Затворете курсора
5- Де-разпределяне на курсора

Срещаме се в различни ситуации, в които можем да използваме курсори. По-долу са дадени примери, в които можем да използваме курсори

Примери:
1-- Прекъснете всички връзки от база данни на SQL Server
2-- Добавете нови колони като CreatedBy към всички таблици в база данни
3--Разрешаване/Деактивиране на всички тригери в база данни на SQL Server
4--Генериране на скриптове/Вземане на резервно копие на цялата база данни на SQL Server един след един
5 --Отрежете/Изтрийте всички таблици от база данни на SQL Server


Примерен код:
Кодът по-долу може да се използва за унищожаване на всички процеси в база данни. Не можем да преименуваме база данни, ако някой процес осъществява достъп до базата данни. За да преименуваме, трябва да убием всички процеси, преди да преименуваме базата данни в 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 4 причини, поради които трябва да дадете приоритет на наблюдението на база данни във вашето планиране за 2020 г.

  2. Как да форматирате числа като валута в SQL Server (T-SQL)

  3. Отстраняване на проблеми с производителността на процесора на SQL Server

  4. Подобрен скрипт, който връща всички свойства от SERVERPROPERTY() в SQL Server

  5. Мисли за изданията на SQL Server 2019