/ / क्रॉस डेटाबेस स्वामित्व चैनिंग विफल: डेटाबेस तक पहुँचने में सक्षम नहीं - sql-server, sql-server-2008, सुरक्षा, स्वामित्व

क्रॉस डेटाबेस स्वामित्व चेनिंग विफल रहता है: डेटाबेस तक पहुंचने में सक्षम नहीं - एसक्यूएल-सर्वर, एसक्यूएल-सर्वर -2008, सुरक्षा, स्वामित्व

मेरे पास है:

  • एक एकल Microsoft SQL Server 2008 R2
  • कुछ तालिकाओं वाले दो डेटाबेस: DB1 तथा DB2 (दोनों एक ही मालिक के साथ)
  • DB1 में एक दृश्य, DB1.dbo.View1कि SELECT * FROM DB2.dbo.Table1
  • कोई भूमिका, ViewRole, DB1 में दृश्य (कोई अन्य अनुमति) के लिए चयनित अनुमति दी
  • एक Windows उपयोगकर्ता, DOMAINuser, सर्वर रोल के साथ सेट किया गया public, जो DB1 के अंतर्गत आता है ViewRole

जब उपयोगकर्ता दृश्य से चयन करने का प्रयास करता है, तो मुझे त्रुटि मिलती है:

सर्वर प्रिंसिपल "DOMAINuser" वर्तमान सुरक्षा संदर्भ के तहत डेटाबेस "DB2" तक पहुंचने में सक्षम नहीं है

मैंने क्रॉस डाटाबेस ओनरशिप चैनिंग को सक्रिय करने के लिए (और उम्मीद के मुताबिक सफल) दोनों का उपयोग करने की कोशिश की है:

EXEC sp_configure "Cross DB Ownership Chaining", "1";RECONFIGURE

तथा

EXEC sp_dboption DB1, "db chaining", "true"
EXEC sp_dboption DB2, "db chaining", "true"

यह सुनिश्चित करने के लिए कि सेटिंग की गई है, मैं चलाता हूं:

SELECT name, owner_sid, is_db_chaining_on FROM sys.databases

और नतीजा यह है:

name  owner_sid           is_db_chaining_on
DB1   0x0105...DCB510000  1
DB2   0x0105...DCB510000  1

तो, क्यों जीता गया "उपयोगकर्ता दृश्य से चयन करने में सक्षम होगा? कोई त्रुटि नहीं होगी यदि दृश्य केवल DB1 के भीतर एक तालिका से चयन करता है।

किसी के पास कोई सुझाव है कि मुझे क्या याद आया या गलत समझा गया?

उत्तर:

जवाब के लिए 2 № 1

विंडोज़ उपयोगकर्ता को क्रॉस डेटाबेस स्वामित्व चाइनिंग का उपयोग करने में सक्षम होने के लिए दोनों डेटाबेस तक पहुंच प्राप्त करनी होगी।

आपको सुरक्षा के लिए सर्वर स्तर पर विकल्प को भी अक्षम करना चाहिए और केवल डेटाबेस में विकल्प को सक्षम करना चाहिए।

आप इसके बारे में यहां और अधिक पढ़ सकते हैं www.mssqltips.com/sqlservertip/1782/understanding-cross-database-ownership-chaining-in-sql-server/