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

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

2
SUM จาก DATALENGTHs ไม่ตรงกับขนาดตารางจาก sys.allocation_units
ฉันอยู่ภายใต้ความประทับใจว่าถ้าฉันจะรวมผลรวมDATALENGTH()ของเขตข้อมูลทั้งหมดสำหรับระเบียนทั้งหมดในตารางที่ฉันจะได้รับขนาดทั้งหมดของตาราง ฉันเข้าใจผิด SELECT SUM(DATALENGTH(Field1)) + SUM(DATALENGTH(Field2)) + SUM(DATALENGTH(Field3)) TotalSizeInBytes FROM SomeTable WHERE X, Y, and Z are true ฉันใช้แบบสอบถามนี้ด้านล่าง (ที่ฉันได้จากออนไลน์เพื่อรับขนาดตารางดัชนีคลัสเตอร์เท่านั้นดังนั้นจึงไม่รวมดัชนี NC) เพื่อรับขนาดของตารางเฉพาะในฐานข้อมูลของฉัน เพื่อวัตถุประสงค์ในการเรียกเก็บเงิน (เราเรียกเก็บเงินแผนกของเราตามจำนวนเนื้อที่ที่พวกเขาใช้) ฉันต้องทราบว่าแต่ละแผนกใช้พื้นที่เท่าใดในตารางนี้ ฉันมีแบบสอบถามที่ระบุแต่ละกลุ่มภายในตาราง ฉันแค่ต้องคิดออกว่าแต่ละกลุ่มจะมีพื้นที่ว่างเท่าใด ช่องว่างต่อแถวอาจแกว่งอย่างมากเนื่องจากVARCHAR(MAX)ฟิลด์ในตารางดังนั้นฉันจึงไม่สามารถใช้ขนาดเฉลี่ย * อัตราส่วนของแถวสำหรับแผนก เมื่อฉันใช้DATALENGTH()วิธีการที่อธิบายข้างต้นฉันได้รับเพียง 85% ของพื้นที่ทั้งหมดที่ใช้ในแบบสอบถามด้านล่าง คิด? SELECT s.Name AS SchemaName, t.NAME AS TableName, p.rows AS RowCounts, (SUM(a.total_pages) * 8)/1024 AS TotalSpaceMB, (SUM(a.used_pages) …

2
จัดทำดัชนีมุมมองใน SQL Server
ฉันมีตารางและมุมมองที่จัดทำดัชนีไว้เหมือนกัน Create table mytable1 (ID int identity(1,1), Name nvarchar(100)) Create table mytable2 (ID int identity(1,1), Name nvarchar(100)) Create view myview with schemabinding as select a.name, b.name from mytable1 a join mytable2 b on a.Id = b.Id ตอนนี้ถ้าฉันเรียกใช้แบบสอบถามต่อไปนี้ select a.name, b.name from mytable1 a join mytable2 b on a.Id = b.Id …

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
ตัวเลือก“ ตัดทอนล็อกออนจุดตรวจสอบ” ใน SQL Server
เรื่องยาว แต่ที่ปรึกษาระยะยาวของเรา (อดีตพนักงาน) เขียนสคริปต์ที่กำหนดเองปีที่ผ่านมา (2006 หรือดังนั้น) เพื่อติดต่อกับ Tivoli Storage Manager และดูเหมือนว่ามันจะได้รับการตรวจสอบตัวเลือก SQL Server DB truncate log on checkpointชื่อ การเรียกร้องของพวกเขาคือมันป้องกันสคริปต์จากการทำงานและการสำรองข้อมูลในอินสแตนซ์ซึ่งเป็น SQL 2012 ฉันรู้สึกว่า BS นั้นสมบูรณ์เพราะฉันไม่พบตัวเลือกดังกล่าวผ่านทางsp_configureและการสำรองข้อมูลทำงานได้ทุกที่ยกเว้นกรณีเดียว อย่างไรก็ตามฉันต้องการที่จะลบทุ่นระเบิดถ้านั่นคือสิ่งที่มันเป็นและลบองค์ประกอบที่ล้าสมัยอื่น ๆ ฉันให้พวกเขาตรวจสอบกับผู้ขาย แต่ฉันไม่มีความมั่นใจในระดับสูงในสิ่งที่พวกเขาพูด การวิจัยที่ฉันได้รับกลับมายิ่งกว่านั้นอาจเป็นตัวเลือกสำหรับ SQL 2000 หรือตัวเลือก Sybase การอ้างสิทธิ์อีกอย่างคือมันถูกเรียก / ใช้โดยนัยในรุ่นที่ใหม่กว่า (2008 ขึ้นไป) เมื่อรูปแบบการกู้คืนเป็นSIMPLEและไม่มีตัวเลือกที่ชัดเจนในการเปิดหรือปิด เนื่องจากTRUNCATE LOGคำสั่งล้าสมัยเนื่องจากบันทึกการทำงานของธุรกรรมในปัจจุบันฉันคิดว่านี่ไม่ใช่ตัวเลือกที่สามารถสอบถามได้ที่จุดนี้ เนื่องจากฉันไม่มีอินสแตนซ์ของ SQL Server 2000 ฉันหวังว่าจะมีบางคนจำได้หรือสามารถตรวจสอบได้จากที่วางไว้ ฉันบอกพวกเขาว่ามันไม่มีอะไรจะแนะนำ ฉันก็หวังว่าบางคนสามารถยืนยันได้ว่านี่เป็นสิ่งล้าสมัย

1
การสร้างดัชนีบนตารางที่ยุ่งมาก
เรามีโต๊ะที่มีจำนวนมากinsert\selectทุกครั้ง (เช่น 100 เครื่องที่แทรกการอัพเดททุกวินาที) วิธีที่ดีที่สุดในการสร้างดัชนีบนตารางที่ไม่สามารถล็อคไม่ได้เป็นวินาทีคืออะไร? ถ้าฉันสร้างดัชนีฉันแน่ใจว่ามันจะล็อคคำขอและฉันทำไม่ได้ มันเป็นตารางขนาดใหญ่ที่มี 1 ล้านแถว +

4
แก้ไข XML: คุณสมบัติเป็นองค์ประกอบ
ฉันมีXMLคอลัมน์ที่มีข้อมูลที่มีโครงสร้างคล้ายกัน: <Root> <Elements> <Element Code="1" Value="aaa"></Element> <Element Code="2" Value="bbb"></Element> <Element Code="3" Value="ccc"></Element> </Elements> </Root> ฉันจะแก้ไขข้อมูลโดยใช้ SQL Server เพื่อเปลี่ยนแต่ละValueแอตทริบิวต์เป็นองค์ประกอบได้อย่างไร <Root> <Elements> <Element Code="1"> <Value>aaa</Value> </Element> <Element Code="2"> <Value>bbb</Value> </Element> <Element Code="3"> <Value>ccc</Value> </Element> </Elements> </Root> ปรับปรุง: XML ของฉันมีลักษณะเช่นนี้: <Root attr1="val1" attr2="val2"> <Elements> <Element Code="1" Value="aaa" ExtraData="extra" /> <Element Code="2" Value="bbb" ExtraData="extra" …
11 sql-server  xml  xquery 

2
ไม่พบกระบวนการที่กำลังสร้างการสำรองข้อมูล
เรามีอินสแตนซ์ของ SQL Server 2008 ติดตั้งบนเซิร์ฟเวอร์ลูกค้า แผนกไอทีของลูกค้ารับผิดชอบการสำรองข้อมูลต่าง ๆ ของเครื่อง บันทึก SQL Server แสดงว่ามีการสำรองข้อมูลเต็มรูปแบบทุกวันเวลา 19.00 น. แต่เราไม่สามารถหาหลักฐานของแผนใด ๆ ที่กำหนดไว้ใน SQL Server ช่างเทคนิคที่เราติดต่อไม่สามารถบอกเราได้ว่ามีการสำรองข้อมูลอัตโนมัติบางประเภทสิ่งที่พวกเขาบอกคือเครื่องทั้งหมดกำลังสำรอง การใช้สคริปต์ที่ฉันพบในเธรดฟอรัมนี้ฉันพบว่าชื่ออุปกรณ์จริงคือ GUID และนั่นหมายความว่านี่เป็นกระบวนการสำรองข้อมูลภายนอก : USE [msdb] GO SELECT [bs].[database_name], [bs].[backup_start_date], [bs].[backup_finish_date], [bs].Server_name, [bs].user_name AS [BackupCreator] , [bmf].physical_device_name FROM msdb..backupset bs INNER JOIN msdb..backupmediafamily bmf ON [bs].[media_set_id] = [bmf].[media_set_id] ORDER BY …

2
ไม่สามารถทำมิเรอร์ฐานข้อมูล SQL Server 2012
เมื่อพยายามทำมิร์เรอร์ฐานข้อมูลโดยใช้คำสั่งต่อไปนี้ ALTER AVAILABILITY GROUP SQLAlwaysonGroup ADD DATABASE test0916aj8CJ ฉันได้รับข้อผิดพลาดดังต่อไปนี้ ข่าวสารเกี่ยวกับ 1475, ระดับ 16, สถานะ 105, ฐานข้อมูลบรรทัดที่ 1 "test0916aj8CJ" อาจมีการเปลี่ยนแปลงบันทึกจำนวนมากที่ยังไม่ได้ทำการสำรองข้อมูล ทำการสำรองข้อมูลบันทึกบนฐานข้อมูลหลักหรือฐานข้อมูลหลัก จากนั้นเรียกคืนการสำรองข้อมูลนี้ในฐานข้อมูลมิเรอร์เพื่อเปิดใช้งานการทำมิเรอร์ฐานข้อมูลหรือในฐานข้อมูลทุติยภูมิทุกครั้งเพื่อให้คุณสามารถเข้าร่วมกลุ่มความพร้อมใช้งานได้ สามารถทำได้โดยไม่สำรองฐานข้อมูลหรือไม่ หรือฉันควรสำรองข้อมูลแล้วยกเลิกการสำรองข้อมูล มันเป็นฐานข้อมูลที่สร้างขึ้นใหม่ดังนั้นฉันไม่จำเป็นต้องสำรองข้อมูล ณ จุดนี้ ฉันได้ลองสิ่งต่อไปนี้ ... BACKUP DATABASE [test0916aj8CJ] TO DISK = N’NUL’ WITH COPY_ONLY, NOFORMAT, INIT, NAME = N’test-Full Database Backup’, SKIP, NOREWIND, NOUNLOAD GO แต่วิธีการข้างต้นไม่ได้ผลเช่นกัน ขอบคุณ

1
การทำธุรกรรมที่ชัดเจนจำเป็นต้องใช้ในขณะนี้ในวง?
SQL Server 2014: เรามีตารางที่มีขนาดใหญ่มาก (100 ล้านแถว) และเราจำเป็นต้องอัปเดตเขตข้อมูลสองสามแห่ง สำหรับบันทึกการจัดส่ง ฯลฯ เรายังต้องการเก็บไว้ในธุรกรรมที่มีขนาดพอดี หากเราปล่อยให้บิตรันด้านล่างแล้วยกเลิก / ยุติการค้นหางานที่ทำไปทั้งหมดจะถูกส่งไปหรือเราจำเป็นต้องเพิ่มคำสั่ง BEGIN TRANSACTION / END TRANSACTION เพื่อให้เราสามารถยกเลิกได้ตลอดเวลา? DECLARE @CHUNK_SIZE int SET @CHUNK_SIZE = 10000 UPDATE TOP(@CHUNK_SIZE) [huge-table] set deleted = 0, deletedDate = '2000-01-01' where deleted is null or deletedDate is null WHILE @@ROWCOUNT > 0 BEGIN UPDATE …

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

3
อะไรจะหายไปเมื่อฉันสร้าง Foreign Key โดยใช้ "WITH NOCHECK"
ฉันรู้ว่าถ้าฉันEXISTS()โทรหาค่าการค้นหา FK ดังนั้นถ้าข้อ จำกัด FK นั้นเชื่อถือได้ผลลัพธ์จะเป็นทันที และถ้ามันไม่น่าเชื่อถือ (เช่นเมื่อฉันสร้าง FK โดยใช้WITH NOCHECK) แล้ว SQL Server จะต้องไปและตรวจสอบตารางเพื่อดูว่าค่านั้นมีจริง มีอะไรอีกบ้างที่ฉันแพ้โดยใช้NOCHECK?

1
วิธีตั้งค่ามุมมองที่จัดทำดัชนีไว้เมื่อเลือก TOP 1 ด้วย ORDER BY จากตารางที่แตกต่างกัน
ฉันกำลังพยายามติดตั้งมุมมองที่จัดทำดัชนีไว้ในสถานการณ์จำลองต่อไปนี้เพื่อให้แบบสอบถามต่อไปนี้ทำงานได้โดยไม่สแกนดัชนีคลัสเตอร์ เมื่อใดก็ตามที่ฉันสร้างมุมมองดัชนีสำหรับแบบสอบถามนี้แล้วใช้มันดูเหมือนว่าจะไม่สนใจดัชนีใด ๆ ที่ฉันวางไว้: -- +++ THE QUERY THAT I WANT TO IMPROVE PERFORMANCE-WISE +++ SELECT TOP 1 * FROM dbo.TB_test1 t1 INNER JOIN dbo.TB_test2 t2 ON t1.PK_ID1 = t2.FK_ID1 ORDER BY t1.somethingelse1 ,t2.somethingelse2; GO การตั้งค่าตารางมีดังนี้: สองตาราง พวกเขาจะเข้าร่วมโดยการเข้าร่วมภายในโดยแบบสอบถามด้านบน และเรียงลำดับโดยคอลัมน์จากคอลัมน์แรกจากนั้นคอลัมน์จากตารางที่สองโดยแบบสอบถามด้านบน เลือก TOP 1 เท่านั้น (ในสคริปต์ด้านล่างมีบางบรรทัดเพื่อสร้างข้อมูลทดสอบในกรณีที่ช่วยทำให้เกิดปัญหา) -- +++ TABLE SETUP +++ CREATE …

4
เป็นไปได้หรือไม่ที่จะพัฒนา SSIS ด้วย SQL Server Evaluation Version
เรากำลังคิดเกี่ยวกับการซื้อสำหรับการดำเนินการSQL Standard Server ETL via SSISเนื่องจากมันแพงมากสำหรับเราฉันต้องการทดสอบการพัฒนาแพ็คเกจ SSIS ในเวอร์ชันฟรี เนื่องจากรุ่นด่วนไม่รวม SSIS ฉันต้องการลองใช้กับการประเมินผล 180 เวอร์ชัน 2014 ของ SQL Server 2014 ที่หมดอายุแต่ไม่สามารถหาอะไรเกี่ยวกับ - Is it possible - Are there limitations. มีใครช่วยฉันที่นี่บ้าง
11 sql-server  ssis 

3
วิธีตอบว่าทำไมเราต้องมีดัชนีหรือแบบสอบถามต้องเปลี่ยน
ฉันเป็นจูเนียร์ DBA ที่มีประสบการณ์ 3 ปี งานของเราคือการปรับแต่งแบบสอบถามหรือให้คำแนะนำกับนักพัฒนาว่าควรเขียนโค้ดเฉพาะหรือดัชนีใหม่ คำถามง่ายๆหนึ่งคำถามที่ทีมพัฒนาถามบ่อยคือ: "เมื่อวานมันวิ่งได้ดี และเราจะถูกขอให้ตรวจสอบด้านโครงสร้างพื้นฐาน ปฏิกิริยาแรกที่เกิดขึ้นกับปัญหาใด ๆ มักจะทำให้เกิดความผิดพลาดสูงสุดในโครงสร้างพื้นฐานซึ่งเป็นสิ่งแรกที่ถูกตรวจสอบเสมอ เราควรตอบคำถาม "สิ่งที่เปลี่ยนแปลง" โดยทีมพัฒนาอย่างไร พวกคุณเคยเผชิญกับสถานการณ์เดียวกันหรือไม่? ถ้าเป็นเช่นนั้นโปรดแบ่งปันประสบการณ์ของคุณ

1
กรณีที่สงสัยของ HADR_SYNC_COMMIT รออยู่
เรากำลังสังเกตเห็นรูปแบบที่น่าสนใจสำหรับการHADR_SYNC_COMMITรอคอยในสภาพแวดล้อมของเรา เรามีแบบจำลองสามแบบ หนึ่งหลักรองหนึ่งซิงค์รองและหนึ่ง async รองในดาต้าเซ็นเตอร์และเราเพิ่งเพิ่มแบบจำลองASYNCอีกสามรายการในดาต้าเซ็นเตอร์อีกอัน (ห่างกันประมาณ 2400 ไมล์) นับตั้งแต่เราเริ่มสังเกตเห็นการเพิ่มขึ้นอย่างมากของการHADR_SYNC_COMMITรอคอย เมื่อเราดูเซสชันที่ใช้งานอยู่เราจะเห็นCOMMIT TRANSACTIONข้อความค้นหามากมายที่รอการจำลอง SYNC จากภาพหน้าจอเราสามารถเห็นได้อย่างชัดเจนว่ามีการHADR_SYNC_COMMITรอคอยในวันที่ 29 มิถุนายนและในที่สุดเราก็ลดลง 'สอง' ของสาม async แบบจำลองในดาต้าเซ็นเตอร์ระยะไกลในช่วงเที่ยงวันที่ 1 กรกฎาคม ที่ลดลงเวลารออย่างมากพร้อมกับมัน สิ่งที่เราตรวจสอบแล้ว - บันทึกการส่งคิว, ทำซ้ำคิว, เวลาเพิ่มความแข็งครั้งล่าสุดและเวลาส่งมอบครั้งสุดท้ายบนเรพลิคาระยะไกล เรามีธุรกรรมเล็ก ๆ ต่อเนื่องในช่วงเวลาทำการดังนั้นคิวการส่งจึงค่อนข้างเล็กในเวลาที่กำหนด (ที่ใดก็ได้ระหว่าง 60KB และ 1MB) รีโมตรีโมตเกือบจะซิงค์กันแล้วมีความแตกต่างกันเล็กน้อยระหว่างเวลาการส่งข้อมูลครั้งล่าสุดและเวลาการทำให้แข็งครั้งสุดท้ายสำหรับบุคคลใด ๆ ในแบบจำลอง ไพพ์เน็ตเวิร์กคือ 10G และเราปรับเปลี่ยนขนาดบัฟเฟอร์การส่งจาก 256 megs เป็น 2 gigs ซึ่งสร้างขึ้นภายใต้สมมติฐานว่าเน็ตเวิร์กวางแพ็กเก็ตและส่งสัญญาณอีกครั้ง วิธีที่ดูเหมือนจะไม่ช่วยมากทั้ง ดังนั้นฉันสงสัยว่าแบบจำลองASYNCเกี่ยวข้องกับการHADR_SYNC_COMMITรอคอยอย่างไร แบบจำลองSYNCไม่ควรขึ้นอยู่กับการรอประเภทนี้เพียงลำพังฉันหายไปไหน

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