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

वर्तमान वर्कस्टेशन नाम लौटाएं जो SQL सर्वर (T-SQL) से जुड़ा है

कभी-कभी आप खुद को उस स्थिति में पा सकते हैं जहां आपको वर्तमान वर्कस्टेशन का नाम प्राप्त करने की आवश्यकता होती है जो SQL सर्वर से जुड़ा है।

उदाहरण के लिए, हो सकता है कि आपके पास एक संग्रहीत कार्यविधि है जो डेटा सम्मिलित करती है, और आप डेटा डालने वाले कार्य केंद्र का नाम रिकॉर्ड करना चाहते हैं।

ऐसे मामलों में, आप HOST_NAME() . का उपयोग कर सकते हैं समारोह।

इसे सर्वर नाम प्राप्त करने में भ्रमित नहीं होना चाहिए।

उदाहरण

वर्तमान कंप्यूटर का नाम चुनने के लिए एड-हॉक क्वेरी चलाने का एक उदाहरण यहां दिया गया है।

SELECT HOST_NAME();

परिणाम:

Tims-MacBook-Pro

इस मामले में, टिम ने अपने मैकबुक प्रो से क्वेरी चलाई, और उनके कंप्यूटर का नाम टिम्स-मैकबुक-प्रो है।

आप शायद सोच सकते हैं कि यह कितना आसान हो सकता है यदि आप एक पंक्ति को देखने में सक्षम होना चाहते हैं और यह देखना चाहते हैं कि उस पंक्ति को किसने और किस वर्कस्टेशन से डाला है।

सुरक्षा उद्देश्यों के लिए नहीं

यह फ़ंक्शन जितना आसान है, Microsoft सुरक्षा उद्देश्यों के लिए इसका उपयोग करने के खिलाफ चेतावनी देता है। इसके पीछे तर्क यह है कि, HOST_NAME() क्लाइंट द्वारा प्रदान किया जाता है, जो संभवतः गलत डेटा प्रदान कर सकता है।

उदाहरण के लिए एक हैकर होस्टनाम को धोखा देकर पहुंच प्राप्त कर सकता है और यह स्पष्ट रूप से हमले के समय उपयोग किए जा रहे वर्कस्टेशन का गलत रिकॉर्ड प्रदान करेगा।

डेटाबेस में होस्टनाम रिकॉर्ड करना

यहां एक तालिका बनाने का एक सरल उदाहरण दिया गया है जो एक कॉलम में होस्टनाम को डिफ़ॉल्ट मान के रूप में रिकॉर्ड करता है।

CREATE TABLE Books  
   (
    BookID int IDENTITY(1,1) NOT NULL PRIMARY KEY,  
    BookName nvarchar(255) NOT NULL,  
    Workstation nvarchar(50)  NOT NULL DEFAULT HOST_NAME()
   );
INSERT INTO Books (BookName)
VALUES ('How to Spoof Hostnames');
SELECT * FROM Books;

परिणाम:

+----------+------------------------+---------------------+
 | BookID   | BookName               | Workstation         |
 |----------+------------------------+---------------------|
 | 1        | How to Spoof Hostnames | Tims-MacBook-Pro    |
 +----------+------------------------+---------------------+ 

इस मामले में मैंने DEFAULT . का इस्तेमाल किया यह निर्दिष्ट करने के लिए कि होस्टनाम पंक्ति के लिए डिफ़ॉल्ट मान है। यह एप्लिकेशन को इस मान को सम्मिलित करने से बचाता है (लेकिन यह एप्लिकेशन को इसे ओवरराइड करने से भी नहीं रोकता है)।

INSERT INTO Books (BookName, Workstation)
VALUES ('How to Override Hostnames', 'Bobs-Windows-Machine!');
SELECT * FROM Books;

परिणाम:

+----------+---------------------------+-----------------------+
 | BookID   | BookName                  | Workstation           |
 |----------+---------------------------+-----------------------|
 | 1        | How to Spoof Hostnames    | Tims-MacBook-Pro      |
 | 2        | How to Override Hostnames | Bobs-Windows-Machine! |
 +----------+---------------------------+-----------------------+ 

उपयोगकर्ता को शामिल करें

यदि आप वर्कस्टेशन रिकॉर्ड करने जा रहे हैं, तो आप शायद लॉग इन उपयोगकर्ता को भी शामिल करना चाहेंगे। आप SUSER_NAME() का उपयोग कर सकते हैं उसके लिए।

SELECT 
 HOST_NAME() AS HOST_NAME,
 SUSER_NAME() AS SUSER_NAME;

परिणाम:

+---------------------+--------------+
 | HOST_NAME           | SUSER_NAME   |
 |---------------------+--------------|
 | Tims-MacBook-Pro.   | sa           |
 +---------------------+--------------+ 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL वर्चर में किसी निश्चित सबस्ट्रिंग की घटनाओं की संख्या की गणना कैसे करते हैं?

  2. SQL सर्वर सभी ऑपरेटर समझाया गया

  3. Android में JTDS ड्राइवर का उपयोग करके sql सर्वर को कैसे कनेक्ट करें

  4. 32-बिट एक्सेल और 64-बिट एसक्यूएल सर्वर

  5. SQL सर्वर पूर्ण-पाठ खोज का उपयोग करके उत्पाद विश्लेषण करें। भाग 1