Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर स्लीप के समतुल्य ():WAITFOR स्टेटमेंट

SQL सर्वर में, आप WAITFOR . का उपयोग कर सकते हैं एक बैच, संग्रहीत कार्यविधि, या लेन-देन के निष्पादन में देरी करने के लिए बयान।

यह MySQL के sleep() . की तरह काम करता है समारोह।

वास्तव में, यह शायद पोस्टग्रेज़ के तीन "स्लीप" फ़ंक्शंस के संयोजन की तरह है:pg_sleep() , pg_sleep_for() , और pg_sleep_until()

मैं ऐसा इसलिए कह रहा हूं, क्योंकि SQL सर्वर का WAITFOR कथन आपको निष्पादन जारी रखने से पहले या तो एक समय विलंब, या एक वास्तविक निश्चित समय निर्दिष्ट करने का विकल्प देता है।

उदाहरण - विलंब निर्दिष्ट करें

समय विलंब निर्दिष्ट करने के लिए, DELAY . का उपयोग करें तर्क, उसके बाद प्रतीक्षा करने/सोने का वास्तविक समय।

विलंब अधिकतम 24 घंटे हो सकता है।

प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।

SELECT CURRENT_TIMESTAMP AS [First Timestamp];
WAITFOR DELAY '00:00:10';
SELECT CURRENT_TIMESTAMP AS [Second Timestamp];

परिणाम:

Time: 11.137s (11 seconds)
+-------------------------+
| First Timestamp         |
|-------------------------|
| 2020-06-29 00:02:30.963 |
+-------------------------+
(1 row affected)
Commands completed successfully.
+-------------------------+
| Second Timestamp        |
|-------------------------|
| 2020-06-29 00:02:41.610 |
+-------------------------+
(1 row affected)

DELAY . का उपयोग करते समय विकल्प, मान को hh:mm[[:ss].mss] के रूप में स्वरूपित किया जाता है।

मान या तो डेटाटाइम . में निर्दिष्ट किया जा सकता है डेटा प्रारूप, या स्थानीय चर के रूप में। हालांकि, तिथियां निर्दिष्ट नहीं की जा सकतीं, इसलिए दिनांक डेटाटाइम . का भाग है मान की अनुमति नहीं है.

उदाहरण - एक समय निर्दिष्ट करें

वैकल्पिक रूप से, आप TIME . का उपयोग कर सकते हैं एक समय निर्दिष्ट करने के लिए तर्क जब बैच, संग्रहीत कार्यविधि, या लेन-देन चलता है।

इस मामले में, प्रदान किया गया मान वह समय होता है जब WAITFOR कथन समाप्त।

प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।

SELECT CURRENT_TIMESTAMP AS [First Timestamp];
WAITFOR TIME '04:33:30';
SELECT CURRENT_TIMESTAMP AS [Second Timestamp];

परिणाम:

Time: 39.487s (39 seconds)
+-------------------------+
| First Timestamp |
|-------------------------|
| 2020-06-29 04:32:51.183 |
+-------------------------+
(1 row affected)
Commands completed successfully.
+-------------------------+
| Second Timestamp |
|-------------------------|
| 2020-06-29 04:33:30.160 |
+-------------------------+
(1 row affected)

आपके द्वारा प्रदान किए जाने वाले समय मूल्य के संबंध में ध्यान रखने योग्य कुछ बातें यहां दी गई हैं:

  • समय को डेटाटाइम . में निर्दिष्ट किया जा सकता है डेटा प्रारूप, या इसे स्थानीय चर के रूप में निर्दिष्ट किया जा सकता है।
  • तिथियां निर्दिष्ट नहीं की जा सकतीं, इसलिए दिनांक डेटाटाइम का भाग है मूल्य की अनुमति नहीं है।
  • समय को hh:mm[[:ss].mss] के रूप में स्वरूपित किया गया है और इसमें वैकल्पिक रूप से 1900-01-01 की तारीख शामिल हो सकती है।

वास्तविक विलंब भिन्न हो सकता है

वास्तविक समय विलंब आपके द्वारा निर्दिष्ट समय से भिन्न हो सकता है, क्योंकि यह सर्वर लोड जैसी चीजों पर निर्भर करेगा।

टाइम काउंटर तब शुरू होता है जब WAITFOR स्टेटमेंट थ्रेड शेड्यूल किया गया है। यदि सर्वर व्यस्त है, तो थ्रेड को तुरंत शेड्यूल नहीं किया जा सकता है, इसलिए समय विलंब निर्दिष्ट समय से अधिक हो सकता है।

सर्वर ब्रोकर संदेश

WAITFOR स्टेटमेंट कुछ तर्कों/मानों को स्वीकार करता है जो केवल सर्विस ब्रोकर संदेशों पर लागू होते हैं।

सर्विस ब्रोकर संदेशों का उपयोग करते समय आप एक RECEIVE प्रदान कर सकते हैं कथन या GET CONVERSATION GROUP स्टेटमेंट, साथ ही एक TIMEOUT तर्क जो कतार में संदेश के आने की प्रतीक्षा करने के लिए मिलीसेकंड में समय की अवधि निर्दिष्ट करता है।

इन विकल्पों के बारे में अधिक जानकारी के लिए Microsoft के आधिकारिक दस्तावेज़ देखें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. शीर्ष 3 कारण लोग सास की ओर बढ़ रहे हैं

  2. एसक्यूएल सर्वर ट्रिगर नई पंक्ति से दूसरी तालिका में मूल्यों को सम्मिलित करता है

  3. मैं SQL सर्वर में डेटाटाइम कैसे छोटा कर सकता हूं?

  4. मैं JDBC का उपयोग करके SQL Server 2008 डेटाबेस से कैसे जुड़ूँ?

  5. DevOps:DBA या डेवलपर - सही संतुलन प्राप्त करना