Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zdefiniuj kroki dla kursora SQL Server — samouczek SQL Server / TSQL

Kursory to obiekty udostępniane nam w SQL Server do wykonywania operacji wiersz po wierszu.

Oto kroki, jak napisać kursor

1-Zadeklaruj kursor przez używanie nazwy kursora z instrukcją Select
2- Otwórz kursor, aby wypełnić dane wyjściowe instrukcji Select
3 - Pobierz wiersze, aby przetworzyć je jeden po drugim
4- Zamknij kursor
5- De-alokacja kursora

Spotykamy się z różnymi sytuacjami, w których możemy użyć kursorów. Poniżej znajduje się kilka przykładów, w których możemy użyć kursorów

Przykłady:
1-- Zabij wszystkie połączenia z bazy danych SQL Server
2-- Dodaj nowe kolumny, takie jak CreatedBy do wszystkie tabele w bazie danych
3-Włącz/wyłącz wszystkie wyzwalacze w bazie danych SQL Server
4-Generuj skrypty/Utwórz kopię zapasową całej bazy danych na serwerze SQL Server jeden po drugim
5 --Truncate/Delete wszystkie tabele z bazy danych SQL Server


Przykładowy kod:
Poniższy kod może służyć do zabijania wszystkich procesów w bazie danych. Nie możemy zmienić nazwy bazy danych, jeśli jakiś proces uzyskuje dostęp do bazy danych. Aby zmienić nazwę, musimy zabić wszystkie procesy, zanim zmienimy nazwę bazy danych w 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. Najlepsze podejście do obliczania sum — aktualizacja dla SQL Server 2012

  2. SQL Server 2016:Ulepszenia OLTP w pamięci

  3. Konwertuj kolumnę Datetime z UTC na czas lokalny w instrukcji select

  4. ExecuteReader wymaga otwartego i dostępnego połączenia. Obecny stan połączenia to Łączenie

  5. Usuń wiadomości e-mail bazy danych z bazy danych msdb w programie SQL Server (T-SQL)