คำถามติดแท็ก view

ตารางเสมือนที่แสดงข้อมูลในหนึ่งตารางขึ้นไปด้วยวิธีอื่น

5
ฉันจะค้นหามุมมองบันทึก 20 ล้านรายการนี้เร็วขึ้นได้อย่างไร
สำหรับฟังก์ชั่นการค้นหาฉันใช้มุมมองที่มีระเบียนจากตารางทั้งหมดที่ฉันต้องการค้นหา มุมมองมีเกือบ 20 ล้านบันทึก การค้นหามุมมองนี้ใช้เวลานานเกินไป ฉันควรปรับปรุงการทำงานของมุมมองนี้ที่ไหน คำจำกัดความคร่าวๆสำหรับมุมมองด้านล่าง ประกอบด้วยสิบสามตารางและรอบ ๆ สามสิบฟิลด์ CREATE VIEW [dbo].[v_AllForSearch] AS SELECT FT.firstField AS [firstField] , FT.fld_primary AS [fld_primary] , FT.fld_thirdField AS [thirdField] , FT.fld_fourthField AS [fourthField] , ISNULL(ST.[fld_firstSearchField],'') AS [firstSearchField] , ISNULL(TT.[fld_thirdSearch],'') AS thirdSearch , ISNULL(TT.[fld_fourthSearch],'')AS fourthSearch , ISNULL(TT.[fld_fifthSearch],'')AS fifthSearch , ISNULL(FRT.[fld_sixthSearch],'') As [sixthSearch] , ISNULL(FRT.[fld_seventhSearch],'') …

2
วิธีเพิ่มผู้ใช้ด้วยการเข้าถึงมุมมองเดียว?
ฉันทำงานกับ MSSQL Server Management Studio 2008 และฉันจำเป็นต้องเปิดเผยมุมมองต่อบุคคลที่สามสำหรับการปรับยอดข้อมูลให้ตรงกัน ฉันสร้างมุมมองที่เหมาะสม แต่ฉันมีปัญหาในการสร้างผู้ใช้และให้สิทธิ์ที่เหมาะสมแก่ผู้ใช้ในการเลือกจากมุมมอง ฉันติดตามพ่อมดเพื่อสร้างการเข้าสู่ระบบและผู้ใช้แล้วเพิ่มมุมมองของฉันในส่วนที่ปลอดภัยด้วยกล่องสิทธิ์ที่เลือกไว้ ทุกอย่างดูเหมือนจะดี แต่เมื่อฉันเข้าสู่ระบบในฐานะผู้ใช้นั้นและพยายามที่จะทำ "เลือก * จาก MyViewName" มันบอกฉันว่าการอนุญาตเลือกถูกปฏิเสธ ฉันเพิ่งสร้างผู้ใช้ใหม่ (คราวนี้ใช้ SQL แทนตัวช่วยสร้าง) และได้รับการอนุญาตอย่างชัดเจนและตอนนี้มันทำให้ฉันเกิดข้อผิดพลาด: Msg 916, Level 14, State 1, Line 2 The server principal "username" is not able to access the database "unrelated_db" under the current security context.(ฉันไม่รู้ว่าทำไมมันถึงพยายามเข้าถึงฐานข้อมูลที่ไม่เกี่ยวข้อง ... ) ฉันไม่รู้จะไปจากที่นี่จริงๆ …

1
คุณแสดง VIEWS ใน ERD อย่างไร
VIEWS (CREATE VIEW) แสดงใน ERD หรือไม่ ถ้าเป็นเช่นนั้นคุณจะเป็นตัวแทนของพวกเขาและระบุว่าพวกเขามาจากตารางอะไร?
12 view  erd 

3
ตัวเลือกสำหรับคำสั่ง ORDER BY ในมุมมองคืออะไร
คำถามนี้ต้องอยู่ในเว็บไซต์นี้ :) ORDER BY ถูกห้ามไม่ให้ใช้ในมุมมองตามที่ฉันเข้าใจเนื่องจากความเป็นไปได้ในการสั่งซื้อหลายครั้งด้วยเมื่อใช้มุมมองนี้ ฉันรู้ว่ามีวิธีการข้ามข้อ จำกัด นี้ตัวอย่างเช่นTOP 99.999999 PERCENTแต่ฉันอยากจะรู้ว่าอะไรคือวิธีปฏิบัติที่ดีที่สุดไม่ใช่วิธีที่จะแฮ็ก ดังนั้นถ้าฉันต้องการสร้างมุมมองในฐานข้อมูลของฉันสำหรับใช้ส่วนตัวหมายถึงฉันต้องการเชื่อมต่อกับฐานข้อมูลและดูข้อมูลที่ได้รับการแก้ไขและเรียงลำดับฉันจะทำอย่างไรถ้าฉันไม่สามารถสั่งซื้อมุมมองได้? ขณะนี้ใน SQL Server DB ของฉันฉันมีมุมมองกับการTOPแฮ็กและฉันใช้มันเยอะ แต่ก็รู้สึกผิด

1
ทำไมคุณสามารถดร็อปมุมมอง SQL Server ในฐานข้อมูลปัจจุบันเท่านั้น
เพิ่งสังเกตุสิ่งนี้และมีเวลาที่ยากลำบากในการหาเหตุผลทางเทคนิค ตารางสามารถถูกดร็อปโดยใช้ชื่อสามส่วน แต่มุมมองถูก จำกัด ไว้ที่สองส่วนชื่อ อะไรคือเหตุผลเบื้องหลังสิ่งนี้
11 sql-server  view 

5
เหตุใดการอัปเดตนี้จึงล้มเหลวเนื่องจากมีการละเมิดข้อ จำกัด คีย์ที่ไม่ซ้ำกัน
ฉันเป็น DBA "บังเอิญ" ซึ่งค่อนข้างไม่มีประสบการณ์และรู้สึกงุนงงกับปัญหานี้ ใช้ MS SQL Server 2012 ปัญหานี้เกิดขึ้นกับคำสั่ง UPDATE นี้: UPDATE dbo.tAccts SET Ticket = 'ARP.ExGE' , Method = 'smtp' , AcctOwner = 'r00417819' , DisplayName = '~AppLight HBSFax-Inactive' , Destination = 'r00417819@mail.ad.ge.com' , UpdatedBy = SYSTEM_USER , UpdatedOn = CAST(GetDate() AS DATE) FROM dbo.vReclaimable WHERE OHR_EmpStatus <> …

1
noexpand hint สำหรับรุ่นที่ไม่ใช่ enterpise และประสิทธิภาพ
ฉันต้องใช้มุมมองที่จัดทำดัชนีเพื่อให้ได้ประสิทธิภาพ อย่างที่ฉันเห็นจากตารางเปรียบเทียบรุ่นมาตรฐานนี้ไม่รองรับมุมมองที่จัดทำดัชนีไว้ แต่ BOL พูดว่า: สามารถสร้างมุมมองที่จัดทำดัชนีใน SQL Server รุ่นใดก็ได้ ใน SQL Server Enterprise เครื่องมือเพิ่มประสิทธิภาพคิวรีจะพิจารณามุมมองที่จัดทำดัชนีโดยอัตโนมัติ หากต้องการใช้มุมมองที่จัดทำดัชนีไว้ในรุ่นอื่น ๆ ทั้งหมดจะต้องใช้คำใบ้ตาราง NOEXPAND มันจะทำงานได้ดี (ฉันกำลังพูดถึงการแสดง) select * from dbo.OrderTotals with (noexpand, index=IXCU_OrderTotals) บน SQL Server Standard edition และทำงานได้ select * from dbo.OrderTotals ในองค์กรหรือไม่ นี่คือรหัสสำหรับการดู: CREATE VIEW dbo.OrderTotals WITH SCHEMABINDING AS select OrderId = r.OrderId , …

2
การติดตามผู้ใช้ปัจจุบันผ่านมุมมองและทริกเกอร์ใน PostgreSQL
ฉันมีฐานข้อมูล PostgreSQL (9.4) ที่ จำกัด การเข้าถึงระเบียนขึ้นอยู่กับผู้ใช้ปัจจุบันและติดตามการเปลี่ยนแปลงที่ทำโดยผู้ใช้ สิ่งนี้ทำได้โดยการดูและทริกเกอร์และส่วนใหญ่ทำงานได้ดี แต่ฉันมีปัญหากับมุมมองที่ต้องมีINSTEAD OFทริกเกอร์ ฉันพยายามลดปัญหาลง แต่ฉันต้องขออภัยล่วงหน้าว่านี่ยังค่อนข้างนาน สถานการณ์ การเชื่อมต่อกับฐานข้อมูลทั้งหมดที่ทำจากเว็บ front-end dbwebผ่านบัญชีเดียว เมื่อเชื่อมต่อบทบาทที่มีการเปลี่ยนแปลงทางเพื่อให้สอดคล้องกับคนที่ใช้อินเตอร์เฟซเว็บและทุกบทบาทดังกล่าวอยู่ในบทบาทของกลุ่มSET ROLE dbuser(ดูคำตอบนี้สำหรับรายละเอียด) aliceสมมติว่าผู้ใช้ ส่วนใหญ่ของตารางของฉันจะอยู่ในสคีมาที่นี่ผมจะโทรหาและอยู่ในprivate dbownerตารางเหล่านี้ไม่สามารถเข้าถึงได้โดยตรงไปแต่จะไปอีกบทบาทหนึ่งdbuser dbviewเช่น: SET SESSION AUTHORIZATION dbowner; CREATE TABLE private.incident ( incident_id serial PRIMARY KEY, incident_name character varying NOT NULL, incident_owner character varying NOT NULL ); GRANT ALL ON TABLE private.incident …

1
มุมมองการเข้าถึงตามตารางในฐานข้อมูลอื่นที่ไม่มีบัญชีในฐานข้อมูลอื่นนั้น
ฉันสร้างมุมมองในฐานข้อมูล 1 ตามตารางในฐานข้อมูล 2 ฉันให้SELECTสิทธิ์แก่ผู้ใช้ที่เข้าถึงได้เฉพาะฐานข้อมูล 1 ผู้ใช้ไม่สามารถรับมุมมองนี้ให้ทำงานได้เนื่องจากเขาไม่มีบัญชีในฐานข้อมูล 2 ฉันจะแก้ปัญหานี้ได้อย่างไร ฉันไม่ต้องการสร้างบัญชีในฐานข้อมูล 2

3
Oracle: ฉันจะค้นหาตารางลำดับชั้นได้อย่างไร
พื้นหลัง นี่คือการสร้างมุมมองบางอย่างที่เราจะใช้สำหรับการรายงาน ฉันมีตารางของสถานที่คีย์ฟิลด์เป็น "สถานที่" และ "ผู้ปกครอง" โครงสร้างที่สองฟิลด์นี้สร้างระดับที่ชาญฉลาดจะอยู่ในแนวเดียวกันกับชื่อ บริษัท -> ชื่อวิทยาเขต -> ชื่ออาคาร -> ชื่อชั้น -> ชื่อห้อง ชื่อ บริษัท ยังคงเหมือนเดิมและชื่อวิทยาเขตจะยังคงเหมือนเดิมในกรณีนี้ โครงสร้างของสถานที่โดยทั่วไปมีลักษณะดังนี้: +-----------+ | Org. Name | +-----+-----+ | +-----v-----+ +--------------------+|Campus Name|+---+--+-------------+ | +--+--------+ | | | | | | | | | | +--+-----+ +------+-+ +--+----+ +---+---+ +--+| BLDG-01|+--+ | BLDG-02| …
10 oracle  query  view  hierarchy 

2
ฟังก์ชั่นหน้าต่างทำให้เกิดแผนการดำเนินการที่น่ากลัวเมื่อถูกเรียกจากมุมมองที่มี parametrized ภายนอกโดยที่ 'clause
ฉันมีปัญหานี้มานานแล้วฉันพบวิธีแก้ปัญหาที่เหมาะกับฉันและลืมมันไป แต่ตอนนี้มีคำถามนั้นดังนั้นฉันยินดีที่จะทำให้ปัญหานี้เกิดขึ้น มีมุมมองที่รวมตารางบางอย่างในทางตรงไปตรงมามาก (คำสั่ง + คำสั่งซื้อ) เมื่อถูกสอบถามโดยไม่มีwhereประโยคมุมมองจะส่งกลับหลายล้านบรรทัด อย่างไรก็ตามไม่มีใครเคยเรียกมันว่าอย่างนั้น แบบสอบถามปกติคือ select * from that_nasty_view where order_number = 123456; สิ่งนี้จะส่งกลับประมาณ 10 ระเบียนจาก 5m สิ่งสำคัญ: มุมมองมีฟังก์ชั่นหน้าต่างrank()ซึ่งแบ่งพาร์ติชันตามฟิลด์โดยใช้มุมมองที่ถูกสอบถามเสมอ: rank() over (partition by order_number order by detail_line_number) ตอนนี้ถ้ามุมมองนี้ถูกสอบถามด้วยพารามิเตอร์ที่แท้จริงในสตริงแบบสอบถามตรงตามที่แสดงข้างต้นก็จะส่งกลับแถวทันที แผนการดำเนินการเป็นเรื่องปกติ: ดัชนีค้นหาทั้งสองตารางโดยใช้ดัชนีบนorder_number(ส่งคืน 10 แถว) การคำนวณหน้าต่างเหนือผลลัพธ์เล็ก ๆ ที่ส่งคืน การเลือก อย่างไรก็ตามเมื่อมีการเรียกใช้มุมมองในแบบที่กำหนดสิ่งต่าง ๆ น่ารังเกียจ: Index scanบนตารางทั้งหมดที่ละเว้นดัชนี ส่งคืนแถว 5 ม. เข้าร่วมมาก การคำนวณหน้าต่างทั้งหมดpartitions …

1
PostgreSQL: วางคอลัมน์จากมุมมอง
ฉันมีVIEWที่ที่ฉันพยายามสร้างสคริปต์วิวัฒนาการเพื่อให้ฉันสามารถเพิ่มคอลัมน์ลงไปได้ ส่วนนั้นใช้ได้ดี; เพิ่มคอลัมน์แล้วก็ได้ อย่างไรก็ตามการย้อนกลับไม่ทำงาน ลบคอลัมน์ที่เพิ่มล่าสุดล้มเหลวด้วยERROR: cannot drop columns from viewข้อความ ปัญหาคือว่ามุมมองนี้มีการอ้างอิงจำนวนมากทั้งจากและไปดังนั้นฉันไม่สามารถเพียงแค่DROP CASCADEสิ่งที่ยี้! มีเหตุผลทำไมฉันไม่สามารถลบคอลัมน์ที่เพิ่มใหม่จากที่กำหนดVIEW? จากนั้นฉันจะทำอย่างไรเพื่อให้ภารกิจนี้สำเร็จ (หมายเหตุ: สถานการณ์นี่คือสิ่งที่พวกเขาเป็น แต่ฉันเป็นอย่างดีสามารถดูสถานการณ์ที่คล้ายกันหรือที่รู้จักลดลงคอลัมน์จากมุมมองในกรณีอื่น ๆ อีกมากมาย)

1
การใช้เซิร์ฟเวอร์ที่เชื่อมโยงกับ OPENQUERY ในโครงการฐานข้อมูล
ฉันมี SQL Server 2008 ที่ใช้ฐานข้อมูลที่ฉันต้องการจะโยนใน TFS ดังนั้นฉันจึงใช้โครงการฐานข้อมูล Visual Studio 2013 ที่ฉันนำเข้าฐานข้อมูล หลังจากแก้ไขข้อผิดพลาดจำนวนมากฉันติดอยู่กับข้อผิดพลาดเดียวที่เหลืออยู่: ในมุมมองหนึ่ง devs ที่ใช้OPENQUERYในการเข้าถึงเซิร์ฟเวอร์ที่เชื่อมโยง ดังนั้นฉันจึงนำเข้า DACPAC ซึ่งมีฐานข้อมูลที่ถูกต้องและเพิ่มเข้าไปในโครงการโดยใช้Add Database Referenceตัวเลือกการอ้างอิงต่อไปนี้ เวอร์ชันสคริปต์เริ่มต้น นี่คือเวอร์ชันที่สั้นกว่าของการสร้างมุมมองดั้งเดิม: CREATE VIEW dbo.vwStatus AS SELECT StatusID, StatusName FROM OPENQUERY(LinkedServer, 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1 นำไปสู่ข้อผิดพลาดต่อไปนี้: ข้อผิดพลาด 136 SQL71501: มุมมอง: [dbo]. [vwStatus] มีการอ้างอิงที่ไม่ได้แก้ไขไปยังวัตถุ [LinkedServer] ความพยายามครั้งแรก ดังนั้นฉันจึงพยายามแทรกตัวแปรชื่อเซิร์ฟเวอร์ FROM OPENQUERY($(LinkedServer), …

2
คำสั่ง mysqldump จะสำรองมุมมองทั้งหมดที่มีอยู่ใน DB หรือมีคำสั่งพิเศษหรือไม่?
ฉันพยายามสำรองฐานข้อมูลทั้งหมดพร้อมกับมุมมอง ฉันจะใช้mysqldumpคำสั่ง ฉันสงสัยว่าจะคัดลอกมุมมองทั้งหมดหรือไม่ฉันจะต้องใช้คำสั่งแยกต่างหาก กรุณาแนะนำคำตอบ ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก
10 mysql  backup  mysqldump  view 

2
มุมมองจำเป็นต้องมีข้อ จำกัด กุญแจต่างประเทศของตัวเองหรือไม่?
คำเตือน: ฉันเป็นโปรแกรมเมอร์ไม่ใช่ DBA ดังนั้นทนกับฉัน ... ฉันมีมุมมองที่ฉันใช้เพื่อจับคู่เอนทิตี 2 รายการเข้าด้วยกัน ฉันต้องเข้าร่วมระหว่างตารางที่แตกต่างกันสองสามเพื่อให้ได้: CREATE OR REPLACE VIEW V_SCREENING_GROUP_SITES AS ( SELECT SG.SCREENING_GROUP_ID, V.SITE_ID FROM SCREENING_GROUP SG, VISIT V, VISIT_DATE VD WHERE VD.VISIT_ID = V.VISIT_ID AND V.SCREENING_GROUP_ID = SG.SCREENING_GROUP_ID); ด้านบนเป็นเพียงบริบทไม่ต้องกังวลมากเกินไป สิ่งที่ฉันต้องรู้คือวิธีสร้างฟิลด์ในมุมมอง V_SCREENING_GROUP_SITES ใหม่ของฉัน (SCREENING_GROUP_ID และ SITE_ID) ทำหน้าที่เป็นคีย์ต่างประเทศในตาราง SCREENING_GROUP และ SITE หรือว่ามันสำคัญ ถ้าเป็นตารางฉันจะทำ: ALTER TABLE V_SCREENING_GROUP_SITES …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.