คำถามติดแท็ก sql-server

Microsoft SQL Server ทุกรุ่น (ไม่ใช่ MySQL) โปรดเพิ่มแท็กเฉพาะเวอร์ชันเช่น sql-server-2016 เนื่องจากมักเกี่ยวข้องกับคำถาม

4
คำนวณจำนวนการเข้าชมทั้งหมด
ฉันกำลังพยายามเขียนแบบสอบถามที่ฉันต้องคำนวณจำนวนการเข้าชมสำหรับลูกค้าโดยดูแลวันที่ทับซ้อนกัน สมมติว่าสำหรับวันที่เริ่มต้น itemID 2009 คือ 23 และวันที่สิ้นสุดคือ 26 ดังนั้นรายการ 20010 อยู่ระหว่างวันเหล่านี้เราจะไม่เพิ่มวันที่ซื้อนี้ไปยังจำนวนรวมของเรา ตัวอย่างสถานการณ์: Item ID Start Date End Date Number of days Number of days Candidate for visit count 20009 2015-01-23 2015-01-26 4 4 20010 2015-01-24 2015-01-24 1 0 20011 2015-01-23 2015-01-26 4 0 20012 2015-01-23 2015-01-27 5 1 20013 2015-01-23 …

1
วิธีการใช้ประโยชน์จากโหมดแบทช์ด้วย UNPIVOT (การเข้าร่วมแบบวนซ้ำ)
ฉันมีแบบสอบถามของแบบฟอร์มต่อไปนี้: SELECT ... FROM ColumnstoreTable cs CROSS APPLY ( SELECT * FROM (VALUES ('A', cs.DataA) , ('B', cs.DataB) , ('C', cs.DataC) ) x(Col0, Col1) ) someValues การดำเนินการนี้จะใช้ทุกแถวจากแบบสอบถามย่อยที่สำรองไว้ในคอลัมน์ ( ColumnstoreTable) และคูณแถวเหล่านั้น UNPIVOTนี้เป็นหลัก แบบสอบถามจริงมีขนาดใหญ่กว่านี้ ส่วนนี้ของแบบสอบถามจะดึงข้อมูลไปยังการประมวลผลอื่น ๆ ปัญหาที่นี่คือสิ่งนี้CROSS APPLYถูกนำไปใช้เป็นการเข้าร่วมแบบวนรอบซึ่งเป็นตัวเลือกที่สมเหตุสมผล น่าเสียดายที่การรวมลูปไม่สนับสนุนโหมดแบทช์ ส่วนหนึ่งของแบบสอบถามนี้มีประสิทธิภาพที่สำคัญมากและฉันสงสัยว่าการรันในโหมดแบตช์อาจเป็นประโยชน์อย่างมากต่อประสิทธิภาพ ฉันจะเขียนแบบสอบถามนี้ใหม่เพื่อที่ฉันจะไม่เปลี่ยนจากโหมดแบทช์ได้อย่างไร ฉันลองใช้ตารางชั่วคราวแทนVALUESแต่นั่นไม่ได้เปลี่ยนความจริงที่ว่าไม่มีเงื่อนไขการเข้าร่วมที่เท่าเทียมกันในการเข้าร่วมแฮช

4
ตัวช่วยสร้างการคืนค่าฐานข้อมูลจะไม่เปิดใน SSMS 2014
บนเครื่องที่ใช้ Windows Server 2012 R2 ฉันเพิ่งอัพเกรด SQL Server จาก 2012 เป็น 2014 ใช้ SQL Server Management Studio 2014 เมื่อฉันคลิกขวาที่ฐานข้อมูลและไปที่Tasks -> Restore -> Database...ไม่มีอะไรเกิดขึ้น ตัวช่วยสร้างการคืนค่าฐานข้อมูลไม่ปรากฏขึ้นอย่างที่คาดไว้ ไม่มีข้อผิดพลาดหรือล่มใน Event Viewer เคอร์เซอร์ไม่ได้เปลี่ยนเป็นนาฬิกาทราย การใช้ T-SQL เพื่อคืนค่าทำงานได้ดีและถ้าฉันย้อนกลับไปใช้ SSMS 2012 ได้ผลดี ความคิดเห็นใด ๆ เกี่ยวกับวิธีทำให้ตัวช่วยสร้างทำงานใน SSMS 2014 ฉันกำลังเชื่อมต่อกับอินสแตนซ์เดียวกันของ SQL Server ในทั้งสองเวอร์ชันของ SSMS และฉันได้ลองใช้ SSMS ในฐานะผู้ดูแลระบบแล้ว เป็น Service Pack …

4
จะเริ่มเข้าใจฐานข้อมูลที่ไม่รู้จักได้ที่ไหน
ดังนั้นชื่อเรื่องจึงสรุป ฉันมีฐานข้อมูล SQL Server ที่มี 28 ตารางและ 86 โพรซีเดอร์ที่เก็บไว้ซึ่งต้องถูกวิศวกรรมย้อนกลับ ฉันค่อนข้างแน่ใจว่าบางตารางไม่เคยใช้และไม่ใช้ procs ทั้งหมดเช่นกัน ปัญหาที่ใหญ่ที่สุดคือบริการ Windows ทั้งหมดที่สร้างขึ้นเพื่อใช้กับ DB นี้และเอกสารซอฟต์แวร์และฐานข้อมูลทั้งหมดหายไปและบุคคลที่ออกแบบระบบทั้งหมดไม่พบ ฉันได้สร้างไดอะแกรม ER แล้วเพื่อช่วยให้ฉันเข้าใจความสัมพันธ์ แต่เนื่องจากฉันไม่เคยมีประสบการณ์ในการจัดการฐานข้อมูลฉันจึงไม่ทราบว่าจะเริ่มต้นอย่างไร ฉันขอโทษด้วยถ้าคำถามแบบนี้ไม่ได้ถูกถามที่นี่

1
ปัญหาในการสร้างธุรกรรมในแพ็คเกจ SSIS
ฉันกำลังทำงานกับแพ็คเกจที่ต้องใช้ธุรกรรม แต่ขณะนี้ฉันได้รับข้อผิดพลาดต่อไปนี้: SSIS package "CATS-Package.dtsx" starting. Information: 0x4004300A at Data Flow Task, SSIS.Pipeline: Validation phase is beginning. Information: 0x4001100A at CATS-Package: Starting distributed transaction for this container. Error: 0xC001401A at CATS-Package: The SSIS Runtime has failed to start the distributed transaction due to error 0x8004D01B "The Transaction Manager is not …

2
วิธีที่ดีที่สุดในการรีเฟรชเพียงไม่กี่ตารางในฐานข้อมูลทดสอบจากการผลิตคืออะไร
ฉันมีฐานข้อมูลการผลิตขนาดใหญ่มากและฐานข้อมูลสภาพแวดล้อมการทดสอบขนาดใหญ่มากใน SQL Server 2008R2 ฐานข้อมูลทั้งสองมีโครงสร้างตารางที่คล้ายกัน แต่ผู้ใช้ / การเข้าสู่ระบบ / สิทธิ์ / บทบาทที่แตกต่างกัน ฉันต้องการรีเฟรชเพียงไม่กี่ตารางในฐานข้อมูลการทดสอบเป็นระยะ ๆ จากการผลิตประมาณเดือนละครั้ง วิธีปัจจุบันที่ฉันวางแผนจะทำคือ ใช้ยูทิลิตี้ BCP เพื่อทำการส่งออกตารางที่ฉันต้องการจากการผลิต คัดลอกไฟล์ส่งออก bcp ไปยังเซิร์ฟเวอร์ทดสอบ ปิดการใช้งานดัชนีและข้อ จำกัด ในตารางทั้งหมดที่ฉันรีเฟรชในการทดสอบ ตัดทอนตารางฐานข้อมูลทดสอบ โหลดข้อมูลกลับเข้าไปในตารางฐานข้อมูลทดสอบโดยใช้ BCP สร้างดัชนีใหม่และเปิดใช้งานข้อ จำกัด ในการทดสอบอีกครั้ง ทั้งหมดนี้ดูเหมือนจะซับซ้อนเกินไปสำหรับงานเล็ก ๆ น้อย ๆ ดูเหมือนว่าจะสร้างการทำซ้ำจำนวนมาก (ใน t-log) มีวิธีที่ดีกว่าในการทำเช่นนี้หรือไม่? อีกวิธีที่ฉันคิดว่าทำเช่นนี้คือการคืนค่าการสำรองข้อมูลจากการผลิตสู่สภาพแวดล้อมการทดสอบ - แต่ปัญหาที่ฉันมีคือการสำรองข้อมูลเต็มรูปแบบจะมีขนาดค่อนข้างใหญ่และฉันไม่ต้องการให้ทุกตารางทำการรีเฟรช - และผู้ใช้และความปลอดภัยในฐานข้อมูลการผลิตแตกต่างจากการทดสอบ ที่จะถูกเขียนทับโดยการตั้งค่าความปลอดภัยในฐานข้อมูลการผลิตถ้าฉันคืนค่าฐานข้อมูลทั้งหมด

3
การทำความเข้าใจผลกระทบ / ความเสี่ยงของการปิด“ ตรวจสอบความถูกต้องของข้อมูลสำรอง” ในการสำรองข้อมูล SQL
ขณะนี้เราใช้แผนการบำรุงรักษามาตรฐานสำหรับการสำรองข้อมูลบนเซิร์ฟเวอร์ SQL Server 2005/2008 / 2008R2 / 2012 ในสภาพแวดล้อมของเราและมีการทำเครื่องหมายในช่อง "ตรวจสอบความถูกต้องของการสำรองข้อมูลที่สมบูรณ์" การสำรองข้อมูลบางอย่างใช้เวลานานมากดังนั้นฉันแนะนำให้ปิดตัวเลือกนั้น แต่ฝ่ายบริหารต้องการให้ฉันบันทึกผลกระทบและความเสี่ยงของการเปลี่ยนแปลงนี้ ฉันเข้าใจการใช้งานและประวัติของตัวเลือกนี้ดูเหมือนว่าไม่จำเป็นสำหรับฉันที่จะเพิ่มเวลาเป็นสองเท่าสำหรับงานสำรองเมื่อ (ในความคิดของฉัน) ข้อผิดพลาดใด ๆ ที่อาจเกิดขึ้นจะเกิดขึ้นในระหว่างขั้นตอนการสำรองข้อมูล ฉันผิดหรือเปล่า? เป็นความเสี่ยงเพียงเล็กน้อยในการปิดการทำงานนี้หากฉันสำรองข้อมูลไว้ในดิสก์และไม่ทำการสตรีมเทปหรือบางสิ่งบางอย่าง (เราสำรองข้อมูลผ่านเครือข่ายไปยังอุปกรณ์สำรองข้อมูล EMC DD-800 หากมีความเกี่ยวข้อง) มีคำแนะนำอย่างเป็นทางการของ MS สำหรับเมื่อใดที่ปลอดภัยที่จะปิด คุณเรียกใช้ "ยืนยัน" ในการสำรองข้อมูลทุกครั้งในระบบของคุณหรือไม่? คุณตรวจสอบพวกเขาหรือไม่ แก้ไข : เพื่อชี้แจงเมื่อคุณทำเครื่องหมายที่ "ตรวจสอบความถูกต้องสำรองข้อมูล" ในแผนการบำรุงรักษา SQL จะทำการคืนค่าข้อมูลทั้งหมดในฐานข้อมูลแต่ละรายการทันทีหลังจากการสำรองข้อมูลแต่ละครั้ง นี่เป็นเพียงข้อมูล / IO มากเช่นเดียวกับการสำรองข้อมูลดั้งเดิมและ (โดยทั่วไป) จะเพิ่มเวลาโดยรวมของงานสำรองเป็นสองเท่า นี่ไม่เหมือนกับการเปิดใช้งานตัวเลือก "checksum" ในการสำรองข้อมูล (ซึ่งไม่สามารถทำได้ในตัวช่วยสร้างเท่าที่ฉันรู้)

2
แบบสอบถามที่ใดที่จะตรวจสอบการเปรียบเทียบที่ง่ายกว่า (เช่นบิต) ก่อนที่จะทำการเปรียบเทียบที่ยากขึ้น (เช่น varchar)
ถ้าฉันเขียนแบบสอบถามที่มีWHEREคำสั่งผสมเช่น: SELECT * FROM MyTable WHERE BitField = 1 AND VarcharField = 'asdf' และการรวมbitการเปรียบเทียบนั้นเพียงแค่แยกฟิลด์เดียวกันที่การvarcharเปรียบเทียบจะแยกออกการมีอยู่ของbitการเปรียบเทียบฟิลด์นั้นจะทำให้ฉันปรับปรุงประสิทธิภาพได้หรือไม่

2
ทำไมส่วนคำสั่ง WHERE ของฉันจึงได้รับประโยชน์จากคอลัมน์ "รวม"
ตามคำตอบนี้เว้นแต่ว่าดัชนีจะถูกสร้างขึ้นเหนือคอลัมน์ที่ใช้ในการ จำกัด การสืบค้นจะไม่ได้รับประโยชน์จากดัชนี ฉันมีคำจำกัดความนี้: CREATE TABLE [dbo].[JobItems] ( [ItemId] UNIQUEIDENTIFIER NOT NULL, [ItemState] INT NOT NULL, [ItemPriority] INT NOT NULL, [CreationTime] DATETIME NULL DEFAULT GETUTCDATE(), [LastAccessTime] DATETIME NULL DEFAULT GETUTCDATE(), -- other columns ); CREATE UNIQUE CLUSTERED INDEX [JobItemsIndex] ON [dbo].[JobItems]([ItemId] ASC); GO CREATE INDEX [GetItemToProcessIndex] ON [dbo].[JobItems]([ItemState], [ItemPriority], [CreationTime]) …

4
การรวบรวมข้อมูลจากตารางที่แตกต่างกันเป็นแบบฝึกหัดหรือไม่
พื้นหลัง ฉันเขียนรายงานขนาดใหญ่จำนวนมากและโดยทั่วไปแล้วรักษาฐานข้อมูลสุขภาพขนาดใหญ่ (เขียน SP, ฟังก์ชั่น, งาน, ฯลฯ ) สคีมาดั้งเดิมและซอฟต์แวร์ที่ใช้นั้นมาจากผู้จำหน่ายรายอื่นดังนั้นฉันจึงไม่สามารถเปลี่ยนแปลงโครงสร้างได้มากนัก มีบันทึกมากมายที่ต้องมีการติดตามเช่นห้องปฏิบัติการขั้นตอนวัคซีน ฯลฯ และพวกมันกระจัดกระจายไปทั่วโต๊ะหลายสิบแห่งซึ่งหลายแห่งถูกป่องและจัดทำดัชนีไม่ดี (ฉันสามารถแก้ไขปัญหานี้ได้บ้าง) ปัญหา ปัญหาคือเนื่องจากเรามีการควบคุม DB น้อยและเนื่องจากสามารถเปลี่ยนแปลงได้จากการอัพเดทหรือแพทช์ใด ๆ ทำให้การเขียนและการบำรุงรักษารายงานเหล่านี้ยากและน่าเบื่อโดยเฉพาะอย่างยิ่งเมื่อมีการทับซ้อนกันจำนวนมาก สิ่งที่ต้องทำคือแพทช์เดียวและฉันติดเขียนส่วนใหญ่ของรายงานโหล นอกจากนี้เคียวรีกลายเป็นสับสนและช้าลงเมื่อการรวมซ้อนเลือกและซ้อนกัน "ทางออก" ของฉัน แผนของฉันคือการเขียนระเบียนทั้งหมดเหล่านี้ลงในตาราง "catch-all" หนึ่งตารางและเขียนทริกเกอร์บนตารางดั้งเดิมเพื่อรักษาระเบียนในตารางรวมนี้ แน่นอนฉันต้องมั่นใจว่าตัวกระตุ้นของฉันยังคงอยู่หลังจากการอัพเดต แต่จะง่ายกว่ามากจากมุมมองการบำรุงรักษาและเพียงแค่อ้างอิงข้อมูล ตารางจะบางและยาวเก็บเฉพาะข้อมูลที่ต้องการเช่นนี้: CREATE TABLE dbo.HCM_Event_Log ( id INT IDENTITY, type_id INT NULL, orig_id VARCHAR(36) NULL, patient_id UNIQUEIDENTIFIER NOT NULL, visit_id UNIQUEIDENTIFIER NULL, lookup_id …

1
ทำไมการติดตั้ง SQL Server ถึงรูทของไดรฟ์จึงเป็นสิ่งที่ไม่ดี
เมื่อฉันติดตั้ง SQL Server ลงในรากของไดรฟ์ของฉันตัวอย่างเช่นD:\ฉันได้รับข้อผิดพลาดเมื่อฉันเรียกใช้โปรแกรมปรับใช้ฐานข้อมูลจากซอฟต์แวร์ของบุคคลที่สาม แต่เมื่อฉันย้ายอินสแตนซ์ SQL Server ของฉันไปที่D:\SQL\(ย้ายไปยังโฟลเดอร์ภายในไดรฟ์) การติดตั้งก็ทำงานได้อย่างสมบูรณ์ คำถามของฉันไม่เกี่ยวกับตัวปรับใช้ฐานข้อมูล แต่เหตุผลที่ว่าทำไม SQL จะมีปัญหาในการติดตั้งลงในรากของไดรฟ์ นี่คือการปฏิบัติที่ไม่ดีหรือไม่? ทำไมฉันไม่ควรติดตั้ง SQL Server ไปยังรากของไดรฟ์ของฉัน

2
SQL Server 2014 schema มีการเปลี่ยนแปลงในสภาพแวดล้อมที่ผู้ใช้หลายคนตลอด 24 ชั่วโมงทุกวัน
เราติดตั้ง SQL Server 2014 Enterprise เพื่อเรียกใช้ฐานข้อมูลซึ่งควรมีให้บริการตลอด 24 ชั่วโมงทุกวัน ฐานข้อมูลของเราใหญ่พอ (200gb +) นอกจากนี้เรายังมีบริการมากมายที่เข้าถึงฐานข้อมูลของเราทุกนาทีเพื่ออ่านอัปเดตหรือแทรกข้อมูลใหม่ เราต้องการมอบคุณสมบัติการปรับใช้งานที่ "ร้อนแรง" สำหรับลูกค้าของเราและทำให้การอัปเดตรายวัน (.net และการปรับปรุงสคีมา) ของเราโปร่งใสสำหรับลูกค้า เราพบวิธีแก้ไขปัญหาตามคลัสเตอร์ที่มี load balancer เพื่ออัปเดตไบนารีของแอปของเรา แต่เรายังคงมีความเข้าใจผิดเกี่ยวกับฐานข้อมูล 'ปรับปรุงกระบวนการปรับใช้และสิ่งที่เป็นแนวทางปฏิบัติที่ดีที่สุดในการแก้ปัญหานี้ สำหรับการเปลี่ยนแปลงสคีมาให้นำเซิร์ฟเวอร์หนึ่งตัวลงใช้การเปลี่ยนแปลงสคีมานำมาสำรองและใช้การเปลี่ยนแปลงแบบเดียวกันกับอินสแตนซ์ที่สอง สามารถใช้เครื่องมือ SQL Server ได้หรือไม่และนี่เป็นวิธีการทั่วไปหรือไม่ ซิงค์ข้อมูลหลังจากเซิร์ฟเวอร์ได้รับการสำรองอย่างไร หรือฉันกำลังคิดผิดไปอย่างสิ้นเชิงและมีวิธีแก้ปัญหาที่ดีกว่าหรือไม่? การเปลี่ยนแปลงแบบแผนทั่วไปของเรา: เพิ่ม / ลดลงคอลัมน์เพิ่ม / ลบขั้นตอนการจัดเก็บ

2
การเปรียบเทียบ Schema SSDT ล้มเหลวเมื่อเปรียบเทียบโครงการฐานข้อมูลของฉันกับเซิร์ฟเวอร์ Azure ของฉัน
ฉันมีโครงการฐานข้อมูล SQL ที่ฉันสร้างฐานข้อมูลองค์กรของเรา มีการปรับใช้หลายครั้งบนภายในและ AWS โฮสต์เซิร์ฟเวอร์ SQL โดยใช้เครื่องมือ Schema เปรียบเทียบของ SSDT ปัญหาเมื่อฉันโพสต์ไปยังเซิร์ฟเวอร์ Win 2012 โฮสต์ Azure ที่เรียกใช้ SQL Ent 2012 sp2 มันกลับมาพร้อมกับ "การเปรียบเทียบเสร็จสมบูรณ์ไม่พบความแตกต่าง" ฉันรู้ว่ามันผิดเพราะฉันสามารถเปิด Enterprise Manager และเปรียบเทียบ schema กับโครงการ SQL และดูว่ามีความแตกต่าง ฉันพบบทความหลายบทความที่พูดถึงการเปิดตัวในปี 2014 ทำให้เครื่องมือแตกหัก แต่มีความแตกต่างของรุ่น [ใช่ฉันทำสิ่งนี้กับ Google การกล่าวเนื่องจากฉันมีชื่อเสียงในการลืมทำเช่นนั้น ] https://www.google.com/webhp?ie=utf-8&oe=utf-8#q=ssdt+data+compare+fail+to+detect+difference&start=10 สิ่งอื่น ๆ ที่ฉันได้ตรวจสอบรวมถึงทำให้แน่ใจว่าบัญชี DB ของฉันมีการเข้าถึงไม่ จำกัด ฉันสามารถเชื่อมต่อกับคอนโซลการจัดการ ฉันสามารถเชื่อมต่อกับโปรแกรมท้องถิ่น การยืนยันครั้งล่าสุดว่ามีปัญหา: ฉันสร้าง …

2
ช่วยด้วยแบบสอบถาม PIVOT
ฉันมีตารางที่มีโครงสร้างด้านล่าง: CREATE TABLE [dbo].[AUDIT_SCHEMA_VERSION]( [SCHEMA_VER_MAJOR] [int] NOT NULL, [SCHEMA_VER_MINOR] [int] NOT NULL, [SCHEMA_VER_SUB] [int] NOT NULL, [SCHEMA_VER_DATE] [datetime] NOT NULL, [SCHEMA_VER_REMARK] [varchar](250) NULL ); ข้อมูลตัวอย่างบางส่วน (ดูเหมือนจะมีปัญหากับ sqlfiddle .. ดังนั้นควรใส่ข้อมูลตัวอย่างบางส่วน): INSERT INTO [AUDIT_SCHEMA_VERSION]([SCHEMA_VER_MAJOR],[SCHEMA_VER_MINOR],[SCHEMA_VER_SUB],[SCHEMA_VER_DATE],[SCHEMA_VER_REMARK]) VALUES(1,6,13,CAST('20130405 04:41:25.000' as DATETIME),'Stored procedure build') INSERT INTO [AUDIT_SCHEMA_VERSION]([SCHEMA_VER_MAJOR],[SCHEMA_VER_MINOR],[SCHEMA_VER_SUB],[SCHEMA_VER_DATE],[SCHEMA_VER_REMARK]) VALUES(1,6,13,CAST('20130405 04:41:25.000' as DATETIME),'Stored procedure build') INSERT INTO [AUDIT_SCHEMA_VERSION]([SCHEMA_VER_MAJOR],[SCHEMA_VER_MINOR],[SCHEMA_VER_SUB],[SCHEMA_VER_DATE],[SCHEMA_VER_REMARK]) …

1
วิธีเพิ่มประสิทธิภาพของแบบสอบถามเพื่อให้ค้นหาในดัชนีหนึ่งก่อนจากนั้นจึงสร้างดัชนีอื่นหลังจากนั้น
ฉันมีการวัดโลกสองชุดจากข้อมูลดาวเทียมแต่ละชุดมีเขตเวลา (mjd สำหรับค่าจูเลียนเฉลี่ย) และตำแหน่งทางภูมิศาสตร์ (GeoPoint, spacial) และฉันกำลังมองหาความบังเอิญระหว่างสองชุดดังกล่าวซึ่งเวลาของพวกเขาตรงกับเกณฑ์ของ 3 ชั่วโมง (หรือ .125 วัน) และระยะทางของพวกเขาภายใน 200 กม. ของกันและกัน ฉันสร้างดัชนีสำหรับทั้งฟิลด์ mjd บนทั้งตารางและตารางเชิงพื้นที่ เมื่อฉันเพิ่งเข้าร่วมในข้อ จำกัด เวลาฐานข้อมูลจะคำนวณการแข่งขัน 100,000 ครั้งใน 8 วินาทีและคำนวณระยะทางสำหรับการแข่งขันทั้งหมด 100,000 ครั้งในเวลานั้น แบบสอบถามมีลักษณะดังนี้: select top 100000 h.Time, m.Time, h.GeoPoint.STDistance(m.GeoPoint)/1000.0 from L2V5.dbo.header h join L2.dbo.MLS_Header m on h.mjd between m.mjd-.125 and m.mjd+.125 option( table hint …

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