top of page
Learn T-SQL

SQL Server Kill Process

Updated: Mar 5



Para los usuarios de SQL Server, hay una variedad de herramientas disponibles para terminar las operaciones del proceso. El recurso habitual consiste en conectarse al servidor a través de Management Studio y utilizar el Monitor de actividad para fines de selección. Alternativamente, puede ejecutar comandos "KILL" con ID de proceso específicos o usar procedimientos almacenados extendidos de versiones anteriores (por ejemplo, xp_terminate_process). Cualquiera que sea el método que elija, es importante que todos los procesos finalicen cuidadosa y correctamente cuando sea necesario.


SQL சர்வர் மேனேஜ்மென்ட் ஸ்டுடியோவை (SSMS) பயன்படுத்தி ஒரு பின்னணி செயல்முறையை அழிக்கவும்

SQL சர்வர் மேனேஜ்மென்ட் ஸ்டுடியோ (SSMS) ஐப் பயன்படுத்தி SQL சர்வரில் ஒரு செயல்முறையை அழிக்க, நீங்கள் இந்தப் படிகளைப் பின்பற்றலாம்:

  • SSMS ஐத் திறந்து SQL சர்வர் நிகழ்வில் இணைக்கவும்.

  • SSMS ஐத் திறந்து SQL சேவையகத்துடன் இணைக்கவும், ஆப்ஜெக்ட் எக்ஸ்ப்ளோரரில், "மேலாண்மை" முனையை விரிவுபடுத்தி, "செயல்பாடு கண்காணிப்பு".nce என்பதைக் கிளிக் செய்யவும்.

  • செயல்பாட்டு கண்காணிப்பு சாளரத்தில், சேவையகத்தில் தற்போது இயங்கும் அனைத்து செயல்முறைகளின் பட்டியலைக் காண்பீர்கள். நீங்கள் கொல்ல விரும்பும் செயல்முறையைக் கண்டறிய தரவுத்தளம், பயனர் அல்லது நிலை மூலம் பட்டியலை வடிகட்டலாம்.

  • நீங்கள் கொல்ல விரும்பும் செயல்முறையில் வலது கிளிக் செய்து, சூழல் மெனுவிலிருந்து "கில் செயல்முறை" என்பதைத் தேர்ந்தெடுக்கவும்.

  • ஒரு உரையாடல் பெட்டி தோன்றும், செயலை உறுதிப்படுத்தும்படி கேட்கும். செயல்முறையை அழிக்க "ஆம்" என்பதைக் கிளிக் செய்யவும்.


ஒரு செயல்முறையைக் கொல்ல T-SQL ஐப் பயன்படுத்துதல்


நீங்கள் T-SQL ஐ பயன்படுத்தி கொல்லும் செயல்முறையைப் பயன்படுத்தலாம். நீங்கள் நிறுத்த விரும்பும் செயல்முறையின் SPID (சர்வர் செயல்முறை ஐடி) உங்களுக்குத் தெரிந்திருக்க வேண்டும். கீழே காட்டப்பட்டுள்ளபடி SPID ஐக் கண்டறிய sp_who அல்லது sp_who2 ஐப் பயன்படுத்தலாம். SP_Who2 ஐ இயக்கும் போது, SPID ஐ (மஞ்சள் நிறத்தில்) பார்க்கலாம்

இப்போது நாம் 123 இன் SPID உடன் ஒரு செயல்முறையைக் கொல்ல கொலை கட்டளையை இயக்கலாம், நீங்கள் பின்வரும் கட்டளையைப் பயன்படுத்தலாம்:

--Sample Code
Kill 1;
Kill 2;

எனது செயல்முறை உடனடியாக நிறுத்தப்படுமா?

இல்லை, SQL சேவையகம் உங்கள் செயல்முறையைத் திரும்பப் பெற வேண்டும், இதற்கு சிறிது நேரம் எடுக்கும். செயல்முறை மிகவும் சிக்கலானது, திரும்ப திரும்ப அதிக நேரம் எடுக்கும். நீங்கள் கவலைப்பட்டால், ரோல்-பேக் எடுக்க அதிக நேரம் எடுக்கும், sys.dm_exec_requests DMV ஐப் பயன்படுத்தி, செயல்முறைக்கான percent_complete நெடுவரிசையைப் பயன்படுத்தி, SQL சேவையகம் ஒரு செயல்முறையைத் திரும்பப் பெறுவதற்கான நேரத்தை மதிப்பிடலாம்.

கட்டளை


sys_exec_requests DMV ஐ எவ்வாறு பயன்படுத்துவது என்பது பற்றிய கூடுதல் தகவல் இங்கே உள்ளது


சதவீதம் முழுமையான மதிப்பீடு

percent_complete இந்த நெடுவரிசையானது திரும்பப்பெறுதலின் சதவீதம் முடிந்ததைக் குறிக்கிறது. திரும்பப்பெறுதல் முடிவடைய எடுக்கும் நேரத்தை மதிப்பிடுவதற்கு இந்தத் தகவலைப் பயன்படுத்தலாம்.

எடுத்துக்காட்டாக, percent_complete மதிப்பு 50% ஆக இருந்தால், திரும்பப்பெறுதல் ஏற்கனவே எடுத்துள்ளதை விட தோராயமாக இரண்டு மடங்கு நேரம் எடுக்கும் என்று நீங்கள் மதிப்பிடலாம். இருப்பினும், இது ஒரு மதிப்பீடு மட்டுமே என்பதையும், திரும்பப் பெறுதல் முடிவதற்கு எடுக்கும் உண்மையான நேரம் வேறுபட்டிருக்கலாம் என்பதையும் கவனத்தில் கொள்ள வேண்டும். கூடுதலாக, ரோல்-பேக் மற்றொரு செயல்முறையால் தடுக்கப்படலாம். அந்த தலைப்பைப் பற்றிய கூடுதல் தகவலுக்கு, தடுத்தல் மற்றும் பூட்டுதல் பற்றிய எனது வலைப்பதிவைப் பார்க்கவும்.


பதிவுசெய்தல் என்ன செயல்முறைகள் கொல்லப்பட்டன

SQL சேவையகத்தில் ஒரு செயல்முறையை அழிப்பது பதிவு செய்யப்பட்டுள்ளது. SQL சேவையகத்தில் ஒரு செயல்முறை அழிக்கப்பட்டால், செயல்முறை நிறுத்தப்பட்டதைக் குறிக்கும் SQL சர்வர் பிழை பதிவில் ஒரு நுழைவு சேர்க்கப்படும். உள்ளீட்டில் கொல்லப்பட்ட செயல்முறையின் SPID (சர்வர் செயல்முறை ஐடி) மற்றும் செயல்முறையைக் கொன்ற பயனரின் உள்நுழைவு பெயர் ஆகியவை அடங்கும்.



SQL சர்வர் பிழை பதிவைக் காண, நீங்கள் SQL சர்வர் மேனேஜ்மென்ட் ஸ்டுடியோ (SSMS) ஐப் பயன்படுத்தி "மேலாண்மை" முனைக்கு செல்லவும், பின்னர் "SQL சர்வர் பதிவுகள்" என்பதைக் கிளிக் செய்யவும். மாற்றாக, பிழை பதிவைக் காண xp_readerrorlog கணினியில் சேமிக்கப்பட்ட செயல்முறையைப் பயன்படுத்தலாம்.


எதிர்மறையான பக்க விளைவுகள்.

கொலை கட்டளையை எச்சரிக்கையுடன் பயன்படுத்த வேண்டும், ஏனெனில் அது தவறாகப் பயன்படுத்தினால் தரவு இழப்பு அல்லது பிற சிக்கல்கள் ஏற்படலாம். இந்த கட்டளை பொதுவாக ஒரு அமர்வு அல்லது செயல்முறை சிக்கியிருந்தால் அல்லது பதிலளிக்காதபோது மட்டுமே பயன்படுத்தப்படும், மேலும் வளங்களை விடுவிக்க அல்லது பிற சிக்கல்களைத் தீர்க்க அது நிறுத்தப்பட வேண்டும். நீங்கள் நிறுத்த முயற்சிக்கும் அமர்வு அல்லது செயல்முறை உங்கள் கணினியின் செயல்பாட்டிற்கு முக்கியமானதாக இல்லை என்பதையும், வேறு எந்த பயனர்களும் அல்லது செயல்முறைகளும் அதைச் சார்ந்து இல்லை என்பதையும் உறுதிப்படுத்திய பின்னரே நீங்கள் கொலை கட்டளையைப் பயன்படுத்த வேண்டும்.


SQL சேவையகத்தில் கொலை கட்டளையைப் பயன்படுத்துவது பல எதிர்மறை விளைவுகளை ஏற்படுத்தலாம், அவற்றுள்:

  • தரவு இழப்பு: ஒரு பரிவர்த்தனையின் நடுவில் அமர்வு அல்லது செயல்முறை நிறுத்தப்பட்டால், பரிவர்த்தனை திரும்பப் பெறப்படலாம், இதன் விளைவாக தரவு இழப்பு ஏற்படலாம்.

  • முட்டுக்கட்டைகள்: முட்டுக்கட்டையில் ஈடுபடும் ஒரு செயல்முறையைக் கொல்வது மற்ற செயல்முறைகள் காலவரையின்றி தடுக்கப்படும்.

  • தரவுச் சிதைவு: தரவுத்தளக் கோப்பு அல்லது பதிவில் எழுதும் செயல்முறையை நிறுத்துவது கோப்பு அல்லது பதிவை சிதைக்கச் செய்யலாம். எதிர்பாராத விளைவுகள்: ஒரு முக்கியமான செயல்பாட்டைச் செய்யும் செயலைக் கொல்வது எதிர்பாராத விளைவுகளை ஏற்படுத்தலாம்.

  • சார்பு செயல்முறைகள்: பிற செயல்முறைகள் செயல்படத் தேவையான ஒரு செயல்முறையைக் கொல்வது அவற்றையும் தோல்வியடையச் செய்யலாம்.


ஒரு செயல்முறையைக் கொல்லும்போது ஏற்படக்கூடிய பிழைகள்


SQL சேவையகம் ஒரு முட்டுக்கட்டையைக் கண்டறிந்து, ஒரு செயல்முறையைக் கொல்லத் தேர்வுசெய்யும் போது, அது கொல்லப்பட்ட செயல்முறையின் பரிவர்த்தனையைத் திரும்பப் பெறும் மற்றும் பின்வரும் பிழைச் செய்தி உருவாக்கப்படலாம்:

  • பிழை 1205: "பரிவர்த்தனை (செயல்முறை ஐடி) மற்றொரு செயல்முறையுடன் {lock resource} இல் முட்டுக்கட்டை போடப்பட்டது மற்றும் முட்டுக்கட்டை பாதிக்கப்பட்டவராக தேர்ந்தெடுக்கப்பட்டது. பரிவர்த்தனையை மீண்டும் இயக்கவும்." முட்டுக்கட்டை காரணமாக பரிவர்த்தனை திரும்பப் பெறப்பட்டு மீண்டும் இயக்கப்பட வேண்டும் என்பதை இந்தச் செய்தி குறிப்பிடுகிறது.

  • பிழை 1222: "பரிவர்த்தனை (செயல்முறை ஐடி) மற்றொரு செயல்முறையுடன் {lock resource} இல் முட்டுக்கட்டை போடப்பட்டது மற்றும் முட்டுக்கட்டை பாதிக்கப்பட்டவராக தேர்ந்தெடுக்கப்பட்டது. பரிவர்த்தனையை மீண்டும் இயக்கவும்." இந்த செய்தி பிழை 1205 ஐப் போன்றது, ஆனால் ஏற்கனவே உள்ள பூட்டுடன் பொருந்தாத பூட்டு கோரிக்கையால் முட்டுக்கட்டை ஏற்பட்டது என்பதைக் குறிக்கிறது.

  • பிழை 3960 : "பூட்டைப் பெற முயற்சிக்கும்போது முட்டுக்கட்டை கண்டறியப்பட்டது; பரிவர்த்தனையை மறுதொடக்கம் செய்ய முயற்சிக்கவும்" இந்தச் செய்தி முட்டுக்கட்டை கண்டறியப்பட்டதைக் குறிக்கிறது மற்றும் எந்தப் பரிவர்த்தனையைத் திரும்பப் பெற வேண்டும் என்பதைத் தீர்மானிக்க முடியவில்லை. கூடுதலாக, சில சந்தர்ப்பங்களில், கொல்லப்பட்ட செயல்முறை நீண்ட காலத்திற்கு இயங்கியிருக்கலாம், எனவே பின்வரும் பிழை செய்தியும் உருவாக்கப்படலாம்:

  • பிழை 701: "இந்த வினவலை இயக்க போதுமான கணினி நினைவகம் இல்லை." பரிவர்த்தனையை திரும்பப்பெற முயற்சிக்கும் போது கணினியின் நினைவகம் தீர்ந்து விட்டது என்பதை இந்த செய்தி குறிப்பிடுகிறது, இது பரிவர்த்தனையின் அளவு அல்லது மாற்றியமைக்கப்பட்ட பக்கங்களின் எண்ணிக்கை காரணமாக இருக்கலாம். விநியோகிக்கப்பட்ட பரிவர்த்தனையில் முட்டுக்கட்டை ஏற்பட்டால், உருவாக்கப்படும் பிழைச் செய்தி MSDTC பிழைச் செய்தியாக இருக்கும், SQL சர்வர் பிழைச் செய்தியாக இருக்காது என்பதும் குறிப்பிடத்தக்கது.


அணுசக்தி விருப்பம்(கள்)


ஒரு தரவுத்தளத்தில் அனைத்து செயல்முறைகளையும் அழித்தல்

--Kill All Process In DBA Database 
--You can execite the printed output or uncomment the EXEC(SQL)

DECLARE @SQL as varchar(MAX) Set @SQL = ' '
DECLARE @spid Varchar(50)
DECLARE cur CURSOR FOR
SELECT Cast(spid as Varchar(50)) FROM sys.sysprocesses WHERE dbid = db_id('DBA')
OPEN cur
FETCH NEXT FROM cur INTO @spid
WHILE @@FETCH_STATUS = 0
BEGIN
    Set @SQL = @SQL + 'EXEC('+Char(39)+'KILL '+@spid+'); ' 
    Print @SQL
    --EXEC(@SQL)
FETCH NEXT FROM cur INTO @spid
END
CLOSE cur
DEALLOCATE cur

SQL சேவையகத்தை நிறுத்துதல் மற்றும் தொடங்குதல்

SQL சர்வர் சேவையை நிறுத்தி மறுதொடக்கம் செய்வது, அனைத்து SPIDகள் (கணினி செயல்முறை ஐடிகள்) உட்பட, ஏற்கனவே உள்ள அனைத்து இணைப்புகள் மற்றும் செயல்முறைகளை நிறுத்தும். SQL சர்வர் சேவை நிறுத்தப்பட்டால், தரவுத்தளங்களுக்கான அனைத்து செயலில் உள்ள இணைப்புகளும் உடனடியாக துண்டிக்கப்படும், மேலும் இயங்கும் பரிவர்த்தனைகள் அல்லது வினவல்கள் திரும்பப் பெறப்படும். SQL சர்வர் சேவையை மறுதொடக்கம் செய்யும் போது, அது புதிதாகத் தொடங்குகிறது, மேலும் ஏற்கனவே உள்ள அனைத்து இணைப்புகளும் இழக்கப்படும்.


உங்கள் தரவுத்தளங்கள் கிடைப்பதில் SQL சர்வர் சேவையை நிறுத்தி மறுதொடக்கம் செய்வதன் தாக்கங்களை கருத்தில் கொள்வதும் முக்கியம், ஏனெனில் அது நிறுத்தப்பட்டு மறுதொடக்கம் செய்யப்படும்போது சேவை கிடைக்காது.


சேவையை நிறுத்தவும் தொடங்கவும் SQL Server Management Studio (SSMS) ஐப் பயன்படுத்த பரிந்துரைக்கப்படுகிறது. ஆப்ஜெக்ட் எக்ஸ்ப்ளோரரில், சர்வரை விரித்து, SQL சர்வர் சேவையில் வலது கிளிக் செய்து, நிறுத்து/தொடங்கு என்பதைத் தேர்ந்தெடுக்கவும்.


நீங்கள் SQL சர்வர் சேவையை நிறுத்தி தொடங்க வேண்டும் என்றால், கணினியில் பாதிப்பு குறைவாக இருக்கும் போது, பராமரிப்பு சாளரத்தின் போது அதை திட்டமிட பரிந்துரைக்கப்படுகிறது.


நான் ஒரு பேக்கப் வேலையைக் கொல்லலாமா அல்லது காப்புப் பிரதி வேலையை நிறுத்தலாமா

SQL சர்வர் காப்புப் பிரதி வேலையைக் கொல்வது அல்லது வேலையை நிறுத்துவது சிறந்ததா என்பது குறிப்பிட்ட சூழ்நிலை மற்றும் காப்புப்பிரதிக்கான தேவைகளைப் பொறுத்தது.


ஒரு பேக்கப் வேலையைக் கொல்வது

"KILL" கட்டளையைப் பயன்படுத்தி ஒரு காப்புப் பிரதி வேலையைக் கொல்வது, எந்தவொரு வளத்தையும் சுத்தம் செய்யவோ அல்லது நிலுவையில் உள்ள பரிவர்த்தனைகளை முடிக்கவோ வாய்ப்பளிக்காமல், செயல்முறையை உடனடியாக நிறுத்தும். இது தரவு இழப்பு அல்லது பிற சிக்கல்களை ஏற்படுத்தலாம், மேலும் இது கடைசி முயற்சியாக மட்டுமே பயன்படுத்தப்பட வேண்டும்.


காப்புப்பிரதி வேலையை நிறுத்துதல்

மறுபுறம், காப்புப்பிரதி வேலையை நிறுத்துவது, எந்த ஆதாரங்களையும் சுத்தம் செய்வதற்கும், நிறுத்துவதற்கு முன் நிலுவையில் உள்ள பரிவர்த்தனைகளை முடிக்கவும் செயல்முறைக்கு வாய்ப்பளிக்கிறது. இது பொதுவாக பாதுகாப்பான விருப்பமாகக் கருதப்படுகிறது, ஏனெனில் இது தரவு இழப்பு அல்லது பிற சிக்கல்களின் அபாயத்தைக் குறைக்க உதவுகிறது.

காப்புப்பிரதிகளை திட்டமிட SQL சர்வர் ஏஜென்டைப் பயன்படுத்தினால், வேலையை நிறுத்த பரிந்துரைக்கப்படுகிறது. தற்போதைய காப்புப்பிரதியை முடிக்க காப்புப்பிரதி செயல்முறையை இது அனுமதிக்கிறது மற்றும் நிறுத்துவதற்கு முன் ஏதேனும் ஆதாரங்களை சுத்தம் செய்கிறது. இந்த வழியில், காப்புப்பிரதி செயல்முறை முழுமையடையாத அல்லது சிதைந்த காப்புப்பிரதி கோப்பை விடாது.

This video shows how to stop a backup Job

XP_CMDShell மூலம் தொடங்கப்பட்ட வெளிப்புற செயல்முறைகளை நான் எப்படி அழிப்பது?

SQL சேவையகத்தில், வெளிப்புற செயல்முறைகளைக் கொல்லும் கட்டளைகள் உட்பட, கட்டளை வரியில் கட்டளைகளை இயக்க, நீட்டிக்கப்பட்ட சேமிக்கப்பட்ட செயல்முறை "xp_cmdshell" ஐப் பயன்படுத்தலாம். "xp_cmdshell" சேமிக்கப்பட்ட செயல்முறை SQL சேவையகம் நிறுவப்பட்ட சர்வரில் கிடைக்கும் கட்டளை வரி கருவிகளை இயக்க அனுமதிக்கிறது.


xp_cmdshell

"xp_cmdshell" மூலம் தொடங்கப்பட்ட வெளிப்புற செயல்முறையை அழிக்க, "xp_cmdshell" சேமிக்கப்பட்ட செயல்முறையுடன் இணைந்து "TASKKILL" கட்டளையைப் பயன்படுத்தலாம். ஒன்று அல்லது அதற்கு மேற்பட்ட செயல்முறைகளை முடிக்க "TASKKILL" கட்டளை பயன்படுத்தப்படுகிறது, மேலும் இது ஒரு செயல்முறை ஐடி அல்லது செயல்முறையின் பெயரை அனுப்பலாம்.


"xp_cmdshell" மற்றும் "TASKKILL" ஐப் பயன்படுத்தி, ஒரு குறிப்பிட்ட செயல்முறை ஐடியுடன் ஒரு செயல்முறையை எவ்வாறு அகற்றலாம் என்பதற்கான எடுத்துக்காட்டு இங்கே:


EXEC xp_cmdshell 'TASKKILL /PID 12345 /F'


டாஸ்க்கில்

அவரது கட்டளையானது "/PID" விருப்பத்துடன் "TASKKILL" கட்டளையை செயல்படுத்தும், நீங்கள் கொல்ல விரும்பும் செயல்முறையின் செயல்முறை ஐடியைக் குறிப்பிடுகிறது, மேலும் "TASKKILL" என்று சொல்லும் "/F" விருப்பமானது செயல்முறையை வலுக்கட்டாயமாக நிறுத்தும்.


விண்டோஸில், இயங்கும் செயல்முறையின் செயல்முறை ஐடி (PID) எண்ணை நீங்கள் பல வழிகளில் காணலாம்:


பணி நிர்வாகியைப் பயன்படுத்துதல்: பணி நிர்வாகியைத் திறக்க Ctrl + Shift + Esc விசைகளை அழுத்தவும். "விவரங்கள்" தாவலில், ஒவ்வொரு இயங்கும் செயல்முறையின் செயல்முறை ஐடியைக் காண்பிக்கும் "PID" என்று பெயரிடப்பட்ட நெடுவரிசையைக் காண்பீர்கள்.


கட்டளை வரியைப் பயன்படுத்துதல்: இயங்கும் செயல்முறைகளின் பட்டியலைக் காண கட்டளை வரியில் திறந்து "tasklist" என தட்டச்சு செய்யவும். "PID" நெடுவரிசை ஒவ்வொரு செயல்முறையின் செயல்முறை ஐடியையும் காட்டுகிறது. செயல்முறைப் பெயரால் பட்டியலை வடிகட்ட, "tasklist /fi "imagename eq process_name" கட்டளையைப் பயன்படுத்தவும்.


PowerShell ஐப் பயன்படுத்துதல்: இயங்கும் செயல்முறைகளின் பட்டியலைக் காண PowerShell ஐத் திறந்து "Get-Process" என தட்டச்சு செய்யவும். "ஐடி" நெடுவரிசை ஒவ்வொரு செயல்முறையின் செயல்முறை ஐடியையும் காட்டுகிறது. செயல்முறை பெயரால் பட்டியலை வடிகட்ட, "Get-Process -Name process_name" கட்டளையைப் பயன்படுத்தவும்.


ரிசோர்ஸ் மானிட்டரைப் பயன்படுத்துதல்: விண்டோஸ் கீ + ஆர் அழுத்தி, ரிசோர்ஸ் மானிட்டரைத் திறக்க "ரெஸ்மான்" என டைப் செய்யவும். "செயல்முறைகள்" தாவலில், "PID" என்று பெயரிடப்பட்ட நெடுவரிசையைக் காண்பீர்கள், அது ஒவ்வொரு இயங்கும் செயல்முறையின் செயல்முறை ஐடியைக் காட்டுகிறது.


If The External Process Will NOT Stop

Please see my Blog, Stopping The Unstoppable SQL Agent



More Information

If you want to avoid the nuclear option or killing one spid at a time check out my SQL Server Maintenance and Management product. This DBA as software tool will help you avoid and detect problems before they rise to the level of killing and nuking.



12 views0 comments
bottom of page