2016-08-09 4 views
5

में गैर निर्धारक डेटा प्रकार डेटाबेस डेटाबेस कॉलम के एक विशिष्ट विशेषता Deterministic पर मेरा ध्यान आकर्षित करते समय मैं अपने SQL सर्वर डेटाबेस में एक तालिका बना रहा था। कृपया नीचे स्क्रीनशॉट देखें:एसक्यूएल सर्वर

enter image description here

मैं नियतात्मक और गैर नियतात्मक एसक्यूएल सर्वर कार्यों के पहले से ही जानते हूँ, लेकिन मुझे पता है कि यह किसी भी तरह से एसक्यूएल सर्वर में भी डेटा डेटा प्रकार पर लागू होता है करना चाहते हैं?

कारण मैं पूछ रहा हूं कि मैं सचमुच एसक्यूएल सर्वर v2008 और v2012 में उपलब्ध सभी डेटा प्रकारों के माध्यम से स्कैन किया गया है लेकिन Deterministic फ़ील्ड का मूल्य Yes उन सभी के लिए दिखाया गया है। यह किसी भी डेटा प्रकार के लिए No नहीं दिखाया गया।

तो मेरा सवाल यह है कि यह SQL सर्वर में किसी भी डेटा प्रकार की उचित विशेषता है जो अभी भी कॉलम में मूल्यों को संग्रहीत करने के तरीके को प्रभावित करता है या यह अतीत से सिर्फ एक विरासत है, SQL Server 2000 या SQL से हो सकता है सर्वर 2005 जहां वहां कुछ डेटा प्रकार थे जो प्रकृति में गैर-निर्धारक थे। एसक्यूएल सर्वर में डेटा प्रकारों की इस विशेषता को समझने के लिए कोई भी जानकारी बहुत उपयोगी होगी। क्या हमारे पास आज के रूप में SQL सर्वर में कोई डेटा प्रकार है जो प्रकृति में गैर-निर्धारक है?

चूंकि मुझे किसी भी डेटा प्रकार के लिए No नहीं मिला क्योंकि मुझे और अधिक उलझन में मिला। मैंने भी बहुत कुछ googled लेकिन हर खोज मुझे नीचे की तरह निर्धारिती और गैर-निर्धारक एसक्यूएल सर्वर कार्यों के लिए ले जाता है और कोई भी SQL सर्वर डेटा प्रकार से संबंधित Non-deterministic विशेषता के बारे में बात करता है।

https://technet.microsoft.com/en-us/library/ms178091(v=sql.110).aspx

+0

एक गणना स्तंभ प्राप्त गैर निर्धारक हो सकता है। – Blorgbeard

+0

https://msdn.microsoft.com/en-AU/library/ms188300.aspx कॉलम प्रकार के लिए एक गणना कॉलम जोड़ें -> कॉलम बी फॉर्मूला = ए + DATEPART (डीडी, GETDATE()) परिणामस्वरूप निर्धारिती = नहीं – artm

+1

@ ब्लॉर्गबीर्ड मैंने इस सूत्र के साथ एक गणना कॉलम बनाया ('[मात्रा उपलब्ध] * [यूनिटप्रिस]] '। यह अभी भी 'निर्धारण' = 'हां' में परिणाम देता है। मात्रा उपलब्ध है और यूनिटप्रिस क्रमशः 'छोटी' और 'money' प्रकार की मेरी तालिका में दो कॉलम हैं। – RBT

उत्तर

5

आप इस MSDN प्रलेखन ध्यान से पढ़ें, तो आप मिल जाएगा:

IsDeterministic - स्तंभ नियतात्मक है। यह गुण गणना कॉलम और कॉलम देखने के लिए केवल लागू होता है।

यह गैर-निर्धारिती कार्यों वाले किसी अन्य कॉलम से प्राप्त कॉलम (गणना, दृश्य) पर लागू होता है।

उदाहरण:

CREATE TABLE Deterministic 
(
    ID int, 
    Calculated AS SYSDATETIME() 
) 

SELECT COLUMNPROPERTY(OBJECT_ID('Deterministic'), 'Calculated', 'IsDeterministic') IsDeterministic 
--Returns 0 

आप क्वेरी

CREATE VIEW vDeterministic AS 
SELECT ID, Calculated, DATEADD(D, 1, Calculated) Tomorrow 
FROM Deterministic 
GO 
SELECT 'Calculated' ColumnName, 
    COLUMNPROPERTY(OBJECT_ID('vDeterministic'), 'Calculated', 'IsDeterministic') IsDeterministic 
UNION ALL 
SELECT 'Tomorrow', 
    COLUMNPROPERTY(OBJECT_ID('vDeterministic'), 'Tomorrow', 'IsDeterministic') 

निम्नलिखित इस मेज पर दृश्य बनाने के रूप में निम्न प्रकार और निष्पादित तो तुम भी गैर नियतात्मक कॉलम

ColumnName IsDeterministic 
---------- --------------- 
Calculated 0 
Tomorrow  0 
संबंधित मुद्दे