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

Microsoft SQL Server เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) ใช้แท็กนี้สำหรับ SQL Server ทุกรุ่นรวมถึง Compact, Express, Azure, Fast-track, APS (เดิมคือ PDW) และ Azure SQL DW อย่าใช้แท็กนี้สำหรับ DBMS ประเภทอื่น (MySQL, PostgreSQL, Oracle, ฯลฯ ) อย่าใช้แท็กนี้สำหรับปัญหาเกี่ยวกับซอฟต์แวร์และการพัฒนาอุปกรณ์พกพาเว้นแต่จะเกี่ยวข้องโดยตรงกับฐานข้อมูล

11
Oracle: มีเครื่องมือในการติดตามคิวรีเช่น Profiler สำหรับ sql server หรือไม่ [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน5 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันทำงานกับเซิร์ฟเวอร์ sql แต่ฉันต้องย้ายไปยังแอปพลิเคชันที่มี Oracle DB สำหรับการติดตามการสืบค้นแอปพลิเคชันของฉันใน Sql Server ฉันใช้เครื่องมือ Profiler ที่ยอดเยี่ยม Oracle มีสิ่งที่เทียบเท่าหรือไม่

9
ปรับปรุงประสิทธิภาพการสืบค้น SQL Server บนตารางขนาดใหญ่
ฉันมีตารางที่ค่อนข้างใหญ่ (ปัจจุบันมีข้อมูล 2 ล้านรายการ) และต้องการทราบว่าเป็นไปได้หรือไม่ที่จะปรับปรุงประสิทธิภาพสำหรับข้อความค้นหาเฉพาะกิจ คำว่าเฉพาะกิจเป็นกุญแจสำคัญที่นี่ การเพิ่มดัชนีไม่ใช่ตัวเลือก (มีดัชนีอยู่แล้วในคอลัมน์ที่มีการสืบค้นบ่อยที่สุด) เรียกใช้แบบสอบถามง่ายๆเพื่อส่งคืนระเบียนที่อัปเดตล่าสุด 100 รายการ: select top 100 * from ER101_ACCT_ORDER_DTL order by er101_upd_date_iso desc ใช้เวลาหลายนาที ดูแผนการดำเนินการด้านล่าง: รายละเอียดเพิ่มเติมจากการสแกนตาราง: SQL Server Execution Times: CPU time = 3945 ms, elapsed time = 148524 ms. เซิร์ฟเวอร์ค่อนข้างมีประสิทธิภาพ (จากหน่วยความจำ 48GB ram, โปรเซสเซอร์ 24 คอร์) ที่รัน sql server 2008 r2 …

6
สุ่มบันทึกจากตารางฐานข้อมูล (T-SQL)
มีวิธีที่รวบรัดในการดึงข้อมูลแบบสุ่มจากตารางเซิร์ฟเวอร์ sql หรือไม่? ฉันต้องการสุ่มข้อมูลการทดสอบหน่วยของฉันดังนั้นกำลังมองหาวิธีง่ายๆในการเลือกรหัสสุ่มจากตาราง ในภาษาอังกฤษตัวเลือกจะเป็น "Select one id จากตารางโดยที่ id เป็นตัวเลขสุ่มระหว่าง id ต่ำสุดในตารางและ id สูงสุดในตาราง" ฉันไม่สามารถหาวิธีทำได้โดยไม่ต้องเรียกใช้แบบสอบถามทดสอบค่าว่างจากนั้นเรียกใช้ใหม่หากเป็นโมฆะ ไอเดีย?

5
ลำดับของคอลัมน์มีความสำคัญในกลุ่มตามข้อหรือไม่?
ถ้าฉันมีสองคอลัมน์คอลัมน์หนึ่งมีคาร์ดินาลลิตี้สูงมากและอีกคอลัมน์หนึ่งมีคาร์ดินาลลิตี้ต่ำมาก (# ของค่าที่ไม่ซ้ำกัน) จะมีความสำคัญในลำดับใดที่ฉันจัดกลุ่มตาม? นี่คือตัวอย่าง: select dimensionName, dimensionCategory, sum(someFact) from SomeFact f join SomeDim d on f.dimensionKey = d.dimensionKey group by d.dimensionName, -- large number of unique values d.dimensionCategory -- small number of unique values มีสถานการณ์ที่สำคัญหรือไม่?


7
ฉันสามารถมีคีย์ต่างประเทศที่อ้างอิงคอลัมน์ในมุมมองใน SQL Server ได้หรือไม่
ใน SQL Server 2008 และให้ TableA(A_ID, A_Data) TableB(B_ID, B_Data) ViewC(A_or_B_ID, A_or_B_Data) เป็นไปได้หรือไม่ที่จะกำหนดคอลัมน์TableZ(A_or_B_ID, Z_Data)ดังกล่าวให้Z.A_or_B_IDจำกัด ตามค่าที่พบในViewC? สามารถทำได้โดยใช้ Foreign Key เทียบกับมุมมองหรือไม่

6
จะลบส่วนเวลาของค่าวันที่และเวลา (SQL Server) ได้อย่างไร
นี่คือสิ่งที่ฉันใช้: SELECT CAST(FLOOR(CAST(getdate() as FLOAT)) as DATETIME) ฉันคิดว่าอาจมีวิธีที่ดีกว่าและสง่างามกว่านี้ ข้อกำหนด: จะต้องเร็วที่สุดเท่าที่จะเป็นไปได้ (ยิ่งหล่อน้อยยิ่งดี) ผลลัพธ์สุดท้ายจะต้องเป็นdatetimeประเภทไม่ใช่สตริง

6
ไม่สามารถเปิดฐานข้อมูลได้เนื่องจากเป็นเวอร์ชัน 782 เซิร์ฟเวอร์นี้รองรับเวอร์ชัน 706 และเวอร์ชันก่อนหน้า ไม่รองรับเส้นทางการดาวน์เกรด
ฉันได้สร้างฐานข้อมูลตัวอย่างโดยใช้ SQL Server 2014 Express และเพิ่มลงในโซลูชัน Windows Form ของฉัน เมื่อดับเบิลคลิกเพื่อเปิดฉันได้รับข้อผิดพลาดนี้ ไม่สามารถเปิดฐานข้อมูลได้เนื่องจากเป็นเวอร์ชัน 782 เซิร์ฟเวอร์นี้รองรับเวอร์ชัน 706 และเวอร์ชันก่อนหน้า ไม่รองรับเส้นทางการดาวน์เกรด ฉันใช้ Visual Studio 2013 ฉันไม่เข้าใจจริงๆว่าฉันกำลังใช้ผลิตภัณฑ์ Microsoft สองเวอร์ชันล่าสุดและไม่สามารถใช้ร่วมกันได้ ฉันพลาดอะไรไปรึเปล่า? ฉันจะเปิดฐานข้อมูลนี้ได้อย่างไร?

2
เหตุใด 199.96 - 0 = 200 ใน SQL
ฉันมีลูกค้าบางคนได้รับตั๋วเงินแปลก ๆ ฉันสามารถแยกปัญหาหลัก: SELECT 199.96 - (0.0 * FLOOR(CAST(1.0 AS DECIMAL(19, 4)) * CAST(199.96 AS DECIMAL(19, 4)))) -- 200 what the? SELECT 199.96 - (0.0 * FLOOR(1.0 * CAST(199.96 AS DECIMAL(19, 4)))) -- 199.96 SELECT 199.96 - (0.0 * FLOOR(CAST(1.0 AS DECIMAL(19, 4)) * 199.96)) -- 199.96 SELECT 199.96 - …

10
รวมผลลัพธ์หลายรายการในแบบสอบถามย่อยเป็นค่าเดียวที่คั่นด้วยจุลภาค
ฉันมีสองโต๊ะ: TableA ------ ID, Name TableB ------ ID, SomeColumn, TableA_ID (FK for TableA) ความสัมพันธ์เป็นหนึ่งแถวTableA- หลายแถวTableBหลาย ตอนนี้ฉันต้องการเห็นผลลัพธ์ดังนี้: ID Name SomeColumn 1. ABC X, Y, Z (these are three different rows) 2. MNO R, S สิ่งนี้จะไม่ทำงาน (ผลลัพธ์หลายรายการในแบบสอบถามย่อย): SELECT ID, Name, (SELECT SomeColumn FROM TableB WHERE F_ID=TableA.ID) FROM TableA นี่เป็นปัญหาเล็กน้อยหากฉันดำเนินการกับฝั่งไคลเอ็นต์ แต่นี้จะหมายความว่าฉันจะมีการเรียกใช้คำสั่ง X ในทุกหน้าที่ …
84 sql-server  tsql  join 

10
การค้นหาที่ไม่มีลูปในขณะที่
เรามีตารางนัดหมายที่แสดงด้านล่าง การนัดหมายแต่ละครั้งจะต้องจัดหมวดหมู่เป็น "ใหม่" หรือ "ติดตาม" การนัดหมายใด ๆ (สำหรับผู้ป่วย) ภายใน 30 วันนับจากการนัดหมายครั้งแรก (ของผู้ป่วยรายนั้น) คือการติดตาม หลังจาก 30 วันการนัดหมายจะเป็น "ใหม่" การนัดหมายใด ๆ ภายใน 30 วันจะกลายเป็น "การติดตาม" ฉันกำลังทำสิ่งนี้โดยการพิมพ์ขณะวนซ้ำ วิธีการบรรลุสิ่งนี้โดยไม่ต้องห่วงในขณะที่? โต๊ะ CREATE TABLE #Appt1 (ApptID INT, PatientID INT, ApptDate DATE) INSERT INTO #Appt1 SELECT 1,101,'2020-01-05' UNION SELECT 2,505,'2020-01-06' UNION SELECT 3,505,'2020-01-10' UNION SELECT 4,505,'2020-01-20' UNION …

6
รับวันที่ล่าสุดจากหลายคอลัมน์
รู้สึกเช่นนี้ควรเป็นเรื่องง่าย ฉันจะได้รับวันที่ล่าสุดที่อยู่ในคอลัมน์ต่าง ๆ ได้อย่างไร DROP TABLE #indebtedness CREATE TABLE #indebtedness (call_case CHAR(10), date1 DATETIME, date2 DATETIME, date3 DATETIME) INSERT #indebtedness VALUES ('Key1', '2019-10-30', '2019-11-30', '2019-10-25') INSERT #indebtedness VALUES ('Key2', '2019-10-20', '2019-10-30', '2019-10-15') INSERT #indebtedness VALUES ('Key3', '2019-11-11', '2019-10-29', '2019-10-30') INSERT #indebtedness VALUES ('Key4', null , '2019-10-29', '2019-10-13') select call_case, ?? …

5
ค้นหาจำนวนวันที่ไม่ซ้ำกัน
ฉันต้องการที่จะเขียนแบบสอบถาม SQL timesเพื่อหาจำนวนวันทำงานที่ไม่ซ้ำกันสำหรับพนักงานจากแต่ละตาราง *---------------------------------------* |emp_id task_id start_day end_day | *---------------------------------------* | 1 1 'monday' 'wednesday' | | 1 2 'monday' 'tuesday' | | 1 3 'friday' 'friday' | | 2 1 'monday' 'friday' | | 2 1 'tuesday' 'wednesday' | *---------------------------------------* ผลลัพธ์ที่คาดหวัง: *-------------------* |emp_id no_of_days | *-------------------* | 1 4 …
11 sql  sql-server 

1
ข้อผิดพลาด“ การรวบรวมถูกแก้ไขการดำเนินการแจงนับอาจไม่ทำงาน” เมื่อกู้คืนการสำรองฐานข้อมูลใน Azure Data Studio
ฉันใหม่มากกับฐานข้อมูลดังนั้นโปรดอดทนกับฉัน ฉันตั้งค่าเซิร์ฟเวอร์ SQL ในเครื่องกำลังทำงานอยู่บนคอนเทนเนอร์ Docker (โดยใช้ Mac) ฉันพยายามกู้คืนฐานข้อมูล SQL โดยใช้ Azure Data Studio (v1.14.0) แต่มันไม่ทำงาน ฉันใช้คำแนะนำในdatabase.guideแต่ได้รับข้อผิดพลาด ฉันไม่รู้ว่ามันหมายความว่าอะไร กู้คืนฐานข้อมูลล้มเหลว: การรวบรวมถูกแก้ไข; การดำเนินการแจงนับอาจไม่ทำงาน ฉันได้ลองกู้คืน. bak-file จากข้อมูลสำรองที่ทำไว้ในคอมพิวเตอร์ของโรงเรียน (ใช้ SQL Server Management Studio บนพีซี) แล้วลองกู้คืนด้วย bak-file จาก Database.guide ฉันได้สำรองข้อมูลจากฐานข้อมูลปัจจุบันของฉันใน Azure และพยายามกู้คืนข้อมูลนั้น - ไม่ได้ผลเช่นกัน

8
แบบสอบถามกำลังดำเนินการช้ามากมีวิธีใดปรับปรุงเพิ่มเติมหรือไม่
ฉันมีคิวรีต่อไปนี้และเนื่องจากมีSUMการเรียกใช้ฟังก์ชันจำนวนมากเคียวรีของฉันจึงทำงานช้าเกินไป ฉันมีบันทึกจำนวนมากในฐานข้อมูลของฉันและฉันต้องการรับรายงานจากปีปัจจุบันและปีที่แล้ว (30 วันล่าสุด 90 วันล่าสุดและ 365 วันสุดท้าย) สำหรับแต่ละคน: SELECT b.id as [ID] ,d.[Title] as [Title] ,e.Class as [Class] ,Sum(CASE WHEN a.DateCol >= DATEADD(MONTH,-1,GETDATE()) THEN a.col1 ELSE 0 END) as [Current - Last 30 Days Col1] ,Sum(CASE WHEN a.DateCol >= DATEADD(MONTH,-1,GETDATE()) THEN a.col2 ELSE 0 END) as [Current - Last …

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