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

SQL सर्वर में एक दृश्य को एन्क्रिप्ट कैसे करें

SQL सर्वर में, आप किसी दृश्य को पहली बार बनाते समय एन्क्रिप्ट कर सकते हैं, या आप एन्क्रिप्शन को शामिल करने के लिए बाद में इसे बदल सकते हैं।

टी-एसक्यूएल के साथ एक दृश्य बनाने के लिए, आप CREATE VIEW का उपयोग करते हैं वाक्य - विन्यास। इसे एन्क्रिप्ट करने के लिए, आप WITH ENCRYPTION जोड़ें तर्क।

ALTER VIEW . का उपयोग करते समय आप मौजूदा दृश्य को एन्क्रिप्ट करने के लिए भी इसी तर्क का उपयोग कर सकते हैं ।

एन्क्रिप्टेड व्यू का टेक्स्ट किसी भी कैटलॉग व्यू में सीधे तौर पर दिखाई नहीं देता है। इसलिए, दृश्य की परिभाषा को उन उपयोगकर्ताओं द्वारा नहीं देखा जा सकता है जिनके पास सिस्टम टेबल या डेटाबेस फ़ाइलों तक पहुंच नहीं है।

WITH ENCRYPTION का उपयोग करना दृश्य को SQL सर्वर प्रतिकृति के भाग के रूप में प्रकाशित होने से भी रोकता है।

उदाहरण 1 - एक एन्क्रिप्टेड दृश्य बनाएं

एन्क्रिप्टेड दृश्य बनाने का एक उदाहरण यहां दिया गया है।

CREATE VIEW dbo.v_Cats
WITH ENCRYPTION
AS
    SELECT 
        CatId,
        CatName,
        Phone
    FROM dbo.Cats;
GO

इसे एन्क्रिप्ट करने का हिस्सा है WITH ENCRYPTION . अगर मैं इसे एन्क्रिप्ट नहीं करना चाहता तो मैं उस तर्क को आसानी से हटा सकता था।

उस दृश्य को बनाने के बाद, अब जब मैं sys.sql_modules . का उपयोग करता हूं सिस्टम कैटलॉग दृश्य इसकी परिभाषा देखने के लिए, मुझे NULL मिलता है।

SELECT definition 
FROM sys.sql_modules
WHERE object_id = OBJECT_ID('dbo.v_Cats');

परिणाम:

+--------------+
| definition   |
|--------------|
| NULL         |
+--------------+

मुझे (बहिष्कृत) sys.syscomments . के साथ एक ही परिणाम मिलता है कैटलॉग व्यू।

SELECT text
FROM sys.syscomments
WHERE id = OBJECT_ID('v_Cats');

परिणाम:

+--------+
| text   |
|--------|
| NULL   |
+--------+

मुझे एक समान परिणाम मिलता है, भले ही मैं किस टी-एसक्यूएल पद्धति का उपयोग दृश्य की परिभाषा प्राप्त करने का प्रयास करने के लिए करता हूं।

और जब मैं दृश्य को स्क्रिप्ट करने का प्रयास करता हूं तो मुझे Azure डेटा स्टूडियो में त्रुटि संदेश मिलता है:

No script was returned when scripting as Create on object View

और अगर मैं इसे SSMS, DBeaver, या किसी अन्य GUI डेटाबेस प्रबंधन सॉफ़्टवेयर में देखने का प्रयास करता तो मुझे एक समान संदेश मिलता।

उदाहरण 2 - मौजूदा दृश्य में एन्क्रिप्शन जोड़ें

यदि आप किसी मौजूदा दृश्य को एन्क्रिप्ट करना चाहते हैं, तो ALTER VIEW . का उपयोग करें एक ही परिभाषा के साथ। दूसरे शब्दों में, मैं पहला उदाहरण ले सकता हूं, और CREATE . को प्रतिस्थापित कर सकता हूं ALTER . के साथ ।

ALTER VIEW dbo.v_Cats
WITH ENCRYPTION
AS
    SELECT 
        CatId,
        CatName,
        Phone
    FROM dbo.Cats;
GO

यह स्पष्ट रूप से मानता है कि शेष दृश्य की परिभाषा बिल्कुल मौजूदा दृश्य के समान है।

यह सुनिश्चित करने का सबसे आसान तरीका है कि आप एक ही परिभाषा का उपयोग कर रहे हैं, यदि यह मौजूद है, तो "स्क्रिप्ट ऐज़ ऑल्टर" विकल्प का उपयोग करके मौजूदा दृश्य को स्क्रिप्ट करने के लिए अपने GUI टूल का उपयोग करना है। अन्यथा आप "स्क्रिप्ट के रूप में बनाएँ" का उपयोग कर सकते हैं, फिर जब परिभाषा दिखाई देती है, तो बदलें CREATE ALTER . के साथ .

यदि आपके पास केवल एक कमांड लाइन इंटरफ़ेस है, तो आप sys.sql_modules . को क्वेरी कर सकते हैं मौजूदा परिभाषा प्राप्त करने के लिए देखें (जैसे पिछले उदाहरण में)। फिर आप परिभाषा को कॉपी कर सकते हैं और CREATE . को बदल सकते हैं ALTER . के साथ ।

एक बार ऐसा करने के बाद, आप WITH ENCRYPTION जोड़ सकते हैं और इसे फिर से चलाएँ।

उदाहरण 3 - अनेक गुण जोड़ना

एन्क्रिप्शन कई विशेषताओं में से एक है जिसे आप अपने विचार की परिभाषा में शामिल कर सकते हैं। यदि आपको एकाधिक विशेषताओं को निर्दिष्ट करने की आवश्यकता है, तो उन्हें अल्पविराम से अलग करें।

उदाहरण के लिए, यदि आप एन्क्रिप्शन का उपयोग करना चाहते हैं और आप स्कीमा बाइंडिंग निर्दिष्ट करना चाहते हैं, तो आपको इन्हें अल्पविराम से अलग की गई सूची के रूप में जोड़ना होगा।

ALTER VIEW dbo.v_Cats
WITH ENCRYPTION, SCHEMABINDING
AS
    SELECT 
        CatId,
        CatName,
        Phone
    FROM dbo.Cats;
GO

  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 क्षेत्र जो SQL सर्वर प्रदर्शन निगरानी उपकरण का उपयोग करने से लाभान्वित होंगे

  2. SQL सर्वर (T-SQL) में सर्वर का वर्तमान समय क्षेत्र प्राप्त करें

  3. प्रोग्राम के रूप में एसक्यूएल कोड जनरेट कर रहा है

  4. क्षतिग्रस्त एसक्यूएल बैकअप की मरम्मत के लिए एसक्यूएल बैकअप रिकवरी टूल - उत्पाद समीक्षा - डैनियल जोन्स द्वारा एक अतिथि पोस्ट

  5. SQL सर्वर सबक्वेरी ने 1 से अधिक मान लौटाए। इसकी अनुमति नहीं है जब सबक्वेरी इस प्रकार है =, !=, <, <=,>,>=