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

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

2
'CONCAT' ไม่ใช่ชื่อฟังก์ชันในตัวที่ได้รับการยอมรับ
ลูกค้ารายงานว่าพวกเขากำลังทำงานบน SQL Server 2012 และเราได้ส่งแบบสอบถามทดสอบสำหรับการทดสอบก่อนส่งมอบครั้งสุดท้ายอย่างไรก็ตาม: 'CONCAT' ไม่ใช่ชื่อฟังก์ชันในตัวที่ได้รับการยอมรับ ฉันเข้าใจว่าCONCAT()เป็นฟังก์ชันในตัวใหม่ที่นำมาใช้ใน SQL Server 2012 ซึ่งดีและดี แต่ฉันถูกขอให้ย้อนกลับการเปลี่ยนแปลงของฉันเพื่อให้ 2008R2 นี้เข้ากันได้ภายใต้หน้ากากของ "ผู้ใช้ที่ดำเนินการแบบสอบถามอาจไม่ มีสิทธิ์ Transact-SQL ในการดำเนินการ " ดังนั้นฉันแค่พิสูจน์จุดของฉันว่าไคลเอนต์ส่วนใหญ่มี SQL Server รุ่นอื่นติดตั้งใน DEV มากกว่าที่พวกเขาทำใน PROD ฉันไม่สามารถหาข้อมูลใด ๆ เกี่ยวกับการปฏิเสธการSELECT/EXECUTEอนุญาตโดยเฉพาะสำหรับฟังก์ชั่นที่มีมูลค่าสเกลาร์ในตัว แต่เป็นไปได้และถ้าเป็นเช่นนั้นผู้ใช้จะยังได้รับข้อความแสดงข้อผิดพลาดเดียวกันหรือไม่

3
การใช้ตัวเลือก“ ชุดการสำรองข้อมูลจะหมดอายุ:” ในขณะที่สร้างงานฐานข้อมูลสำรองในแผนการบำรุงรักษา
ในขณะที่สำรองฐานข้อมูลฉันต้องการใช้ตัวเลือก " ชุดการสำรองข้อมูลจะหมดอายุ: " เพื่อลบ / เขียนทับการสำรองฐานข้อมูลเก่า ฉันไม่สามารถใช้ตัวเลือกนี้ คำแนะนำใด ๆ เกี่ยวกับวิธีการใช้ตัวเลือก "ชุดการสำรองข้อมูลจะหมดอายุ:" ในขณะที่สร้างแผนการบำรุงรักษาจะได้รับการชื่นชม

3
พาร์ติชันคีย์ต้องเป็นส่วนหนึ่งของคีย์หลักด้วยหรือไม่
ฉันกำลังแบ่งตารางตามคอลัมน์ที่ไม่ใช่คีย์หลักหรือไม่ ฉันได้อ่านข้อมูลที่ขัดแย้งกันในวันนี้แล้วว่าคอลัมน์พาร์ติชันต้องเป็นส่วนหนึ่งของคีย์หลักหรือไม่ ไส้ของฉันบอกว่าไม่ แต่ฉันไม่แน่ใจ 100% ดังนั้นคำถาม ... คอลัมน์พาร์ติชันจะต้องเป็นส่วนหนึ่งของหลักหรือไม่ มันแนะนำวิธีหนึ่งหรืออื่น ๆ ? ฉันต้องสร้างดัชนีสำหรับพาร์ติชันคีย์หรือไม่ DBMS ทำมันเองโดยอัตโนมัติหรือไม่?

1
เหตุใดแบบสอบถามนี้จึงไม่ใช้สปูลดัชนี
ฉันกำลังถามคำถามนี้เพื่อให้เข้าใจถึงพฤติกรรมของเครื่องมือเพิ่มประสิทธิภาพและเข้าใจขีด จำกัด รอบ ๆ ดัชนีสิ่งของ สมมติว่าฉันใส่จำนวนเต็มจาก 1 ถึง 10,000 ลงในกอง: CREATE TABLE X_10000 (ID INT NOT NULL); truncate table X_10000; INSERT INTO X_10000 WITH (TABLOCK) SELECT TOP 10000 ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM master..spt_values t1 CROSS JOIN master..spt_values t2; และบังคับให้วงวนซ้อนกันเข้าร่วมกับMAXDOP 1: SELECT * FROM X_10000 a INNER JOIN …

4
หากฐานข้อมูลมีการแทรกเพียงครั้งเดียวมันจะไม่ดีที่จะทำดัชนีชุดค่าผสมของคอลัมน์ที่เป็นไปได้หรือไม่?
ฉันกำลังทำงานกับระบบการรายงานที่จะต้องใช้แบบสอบถามที่มีขนาดใหญ่ แต่ขึ้นอยู่กับฐานข้อมูลที่กรอกเพียงครั้งเดียว ระบบการจัดการฐานข้อมูลคือ Microsoft SQL Server 2017 อาจมีวิธีที่ดีกว่าในการออกแบบระบบเช่นนี้ ในทางทฤษฎีการพูด: หากเรามีฐานข้อมูลขนาดใหญ่มาก (150M + แถวในหลายตาราง) และเราสามารถสรุปได้ว่าฐานข้อมูลจะถูกบรรจุครั้งเดียว การทำดัชนีทุกชุดคอลัมน์ที่เป็นไปได้มีผลกระทบด้านลบต่อแบบสอบถามแบบใช้เลือกข้อมูลหรือไม่

1
เหตุใดคำสั่ง MERGE นี้จึงทำให้เซสชันถูกฆ่า
ฉันมีMERGEคำสั่งด้านล่างซึ่งออกกับฐานข้อมูล: MERGE "MySchema"."Point" AS t USING ( SELECT "ObjectId", "PointName", z."Id" AS "LocationId", i."Id" AS "Region" FROM @p1 AS d JOIN "MySchema"."Region" AS i ON i."Name" = d."Region" LEFT JOIN "MySchema"."Location" AS z ON z."Name" = d."Location" AND z."Region" = i."Id" ) AS s ON s."ObjectId" = t."ObjectId" WHEN NOT …

1
มีการติดตั้ง SQL Server ของฉันหรือไม่
ฉันจะรู้ได้อย่างไรว่าอินสแตนซ์ SQL Server ของฉันได้รับการแพตช์หรือไม่? มีฟังก์ชั่นพื้นฐานที่จะระบุว่ามีโปรแกรมแก้ไขสำหรับเซิร์ฟเวอร์ของฉันหรือไม่? เฮ้อฉันยังมีข้อมูลรุ่นให้ฉันได้ไหม?
23 sql-server 

1
การเสียหายของดัชนีเชิงพื้นที่ที่ไม่สามารถแก้ไขได้ถือว่าเป็นเรื่องปกติหรือไม่
ฉันมีดัชนีเชิงพื้นที่ซึ่งDBCC CHECKDBรายงานความเสียหาย: DBCC CHECKDB(MyDB) WITH EXTENDED_LOGICAL_CHECKS, DATA_PURITY, NO_INFOMSGS, ALL_ERRORMSGS, TABLERESULTS ดัชนีเชิงพื้นที่ดัชนี XML หรือมุมมองที่จัดทำดัชนี 'sys.extended_index_xxx_384000' (ID วัตถุ xxx) ไม่มีแถวทั้งหมดที่นิยามมุมมองสร้างขึ้น สิ่งนี้ไม่จำเป็นต้องแสดงถึงปัญหาด้านความสมบูรณ์ของข้อมูลในฐานข้อมูลนี้ ดัชนีปริภูมิดัชนี XML หรือมุมมองที่จัดทำดัชนี 'sys.extended_index_xxx_384000' (ID อ็อบเจ็กต์ xxx) มีแถวที่ไม่ได้สร้างขึ้นโดยการกำหนดมุมมอง สิ่งนี้ไม่จำเป็นต้องแสดงถึงปัญหาด้านความสมบูรณ์ของข้อมูลในฐานข้อมูลนี้ CHECKDB พบข้อผิดพลาดในการจัดสรร 0 ข้อและข้อผิดพลาดที่สอดคล้องกัน 2 ข้อในตาราง 'sys.extended_index_xxx_384000' (รหัสวัตถุ xxx) repair_rebuildระดับการซ่อมเป็น การปล่อยและสร้างดัชนีใหม่จะไม่ลบรายงานความเสียหายเหล่านี้ หากไม่มีEXTENDED_LOGICAL_CHECKSแต่ด้วยDATA_PURITYข้อผิดพลาดจะไม่ถูกรายงาน นอกจากนี้CHECKTABLEใช้เวลา 45 นาทีสำหรับตารางนี้แม้ว่า CI ของมันจะมีขนาด 30 MB และมีแถวประมาณ 30k ข้อมูลทั้งหมดในตารางนั้นเป็นgeographyข้อมูลจุด …

5
จาก DMV คุณสามารถบอกได้หรือไม่ว่าการเชื่อมต่อนั้นใช้ ApplicationIntent = ReadOnly หรือไม่
ฉันมีการตั้งค่ากลุ่มความพร้อมใช้งานตลอดเวลาและฉันต้องการตรวจสอบให้แน่ใจว่าผู้ใช้ของฉันกำลังใช้ ApplicationIntent = อ่านได้อย่างเดียวในสตริงการเชื่อมต่อของพวกเขา จาก SQL Server ผ่าน DMVs (หรือ Extended Events หรืออะไรก็ตาม) ฉันสามารถบอกได้ไหมว่าผู้ใช้เชื่อมต่อกับ ApplicationIntent = อ่านได้อย่างเดียวในสตริงการเชื่อมต่อของพวกเขาหรือไม่ โปรดอย่าตอบด้วยวิธีป้องกันการเชื่อมต่อ - นั่นไม่ใช่สิ่งที่คำถามนี้เกี่ยวกับ ฉันไม่สามารถหยุดการเชื่อมต่อได้เพียงเพราะเรามีแอปพลิเคชั่นที่มีอยู่ซึ่งกำลังเชื่อมต่อโดยไม่มีสายอักขระที่ถูกต้องและฉันจำเป็นต้องรู้ว่าพวกเขาเป็นใครฉันจึงสามารถทำงานร่วมกับนักพัฒนาและผู้ใช้ สมมติว่าผู้ใช้มีหลายแอปพลิเคชัน ตัวอย่างเช่น Bob เชื่อมต่อกับ SQL Server Management Studio และกับ Excel เขาเชื่อมต่อกับ SSMS เมื่อต้องการอัปเดตและ Excel เมื่อเขาต้องการอ่าน ฉันต้องแน่ใจว่าเขาใช้ ApplicationIntent = อ่านอย่างเดียวเมื่อเขาเชื่อมต่อกับ Excel (นั่นไม่ใช่สถานการณ์ที่แน่นอน แต่ใกล้พอที่จะอธิบาย)

4
SQL Server Management studio ช้าหรือหมดเวลาเชื่อมต่อเมื่อใช้ Windows Authentication
ฉันได้รับความล่าช้านานมาก (10 ~ 30 วินาที) ในสตูดิโอของ SQL Server 2014 การจัดการเมื่อพยายามที่จะเชื่อมต่อกับ 2012 อินสแตนซ์ของ SQL Server ผ่าน TCP ใช้Windows ตรวจสอบ สิ่งนี้เกิดขึ้นเมื่อเชื่อมต่อ Object Explorer หรือหน้าต่างแบบสอบถามว่างเปล่าใหม่ เมื่อเชื่อมต่อแล้วการเรียกใช้แบบสอบถามจะรวดเร็ว ปัญหาไม่เกิดขึ้นเมื่อฉันเชื่อมต่อโดยใช้การพิสูจน์ตัวตน SQL Server สิ่งแวดล้อม: Windows 7 เข้าสู่ระบบในฐานะผู้ใช้โดเมน การเชื่อมต่อ TCP ผ่านที่อยู่ IP (ไม่ใช่ชื่อโฮสต์) เซิร์ฟเวอร์อยู่ในสถานที่ห่างไกลที่เชื่อมต่อผ่าน VPN ไม่มีการเข้ารหัส เมื่อฉันเข้าสู่คอมพิวเตอร์ Windows 7 ของเพื่อนร่วมงานด้วยบัญชีโดเมนของฉันและเชื่อมต่อกับ SQL Server เดียวกันผ่าน VPN เดียวกันก็ไม่มีความล่าช้า เมื่อเพื่อนร่วมงานคนเดียวกันลงชื่อเข้าใช้พีซีของฉันด้วยบัญชีโดเมนของเขาเองเขาประสบความล่าช้า การทดสอบเหล่านี้แสดงว่าปัญหานั้นไม่เหมือนใครในพีซีของฉัน นอกจากนี้ปัญหาจะปรากฏเฉพาะเมื่อเชื่อมต่อกับ …

3
เป็นวิธีที่ดีที่สุดในการเก็บถาวรทั้งหมดยกเว้นปีปัจจุบันและแบ่งพาร์ติชันตารางในเวลาเดียวกัน
งาน เก็บถาวรทั้งหมดยกเว้นรอบระยะเวลา 13 เดือนจากกลุ่มของตารางขนาดใหญ่ ข้อมูลที่เก็บถาวรต้องถูกเก็บไว้ในฐานข้อมูลอื่น ฐานข้อมูลอยู่ในโหมดการกู้คืนอย่างง่าย ตารางมีขนาด 50 ล้านแถวถึงหลายพันล้านและในบางกรณีอาจใช้เวลาหลายร้อยกิกะไบต์ในแต่ละครั้ง ตารางไม่ได้ถูกแบ่งพาร์ติชันในปัจจุบัน แต่ละตารางมีหนึ่งดัชนีคลัสเตอร์ในคอลัมน์วันที่เพิ่มขึ้น แต่ละตารางจะมีดัชนีที่ไม่ใช่คลัสเตอร์อีกหนึ่งดัชนี การเปลี่ยนแปลงข้อมูลทั้งหมดในตารางเป็นการแทรก เป้าหมายคือเพื่อลดการหยุดทำงานของฐานข้อมูลหลัก เซิร์ฟเวอร์คือ 2008 R2 Enterprise ตาราง "เก็บถาวร" จะมีประมาณ 1.1 พันล้านแถวตาราง "สด" ประมาณ 400 ล้านแถว เห็นได้ชัดว่าตารางเก็บถาวรจะเพิ่มขึ้นเมื่อเวลาผ่านไป แต่ฉันคาดว่าตารางถ่ายทอดสดจะเพิ่มขึ้นอย่างรวดเร็วด้วยเช่นกัน พูดอย่างน้อย 50% ในอีกไม่กี่ปีข้างหน้า ฉันคิดเกี่ยวกับฐานข้อมูล Azure ยืด แต่น่าเสียดายที่เราอยู่ที่ 2008 R2 และมีแนวโน้มที่จะอยู่ที่นั่นชั่วครู่ แผนปัจจุบัน สร้างฐานข้อมูลใหม่ สร้างตารางใหม่ที่แบ่งพาร์ติชันตามเดือน (โดยใช้วันที่แก้ไข) ในฐานข้อมูลใหม่ ย้ายข้อมูล 12-13 เดือนล่าสุดไปยังตารางที่แบ่งพาร์ติชัน ทำการเปลี่ยนชื่อการแลกเปลี่ยนของฐานข้อมูลทั้งสอง ลบข้อมูลที่ย้ายแล้วออกจากฐานข้อมูล "เก็บถาวร" …

2
ฉันจะค้นหาคิวรีที่ใช้เวลานานด้วย ID กระบวนการชื่อกระบวนการเวลาเข้าสู่ระบบผู้ใช้เวลาเริ่มต้นและระยะเวลาได้อย่างไร
ทุกคนสามารถช่วยฉันค้นหารายละเอียดด้านล่างนี้สำหรับการค้นหาที่ยาวนาน ProcessID, ชื่อกระบวนการ, ฐานข้อมูล, โฮสต์, ผู้ใช้, เวลาเข้าสู่ระบบกระบวนการ, เวลาเริ่มต้นแบบสอบถามและระยะเวลาแบบสอบถาม ฉันกำลังมองหาแบบสอบถามหรือ SP ที่ให้ข้อมูลนี้แก่ฉัน
23 sql-server 

3
ตัดทอนตาราง 200GB แต่พื้นที่ดิสก์ไม่ออก
ฉันเหลือเพียง 2GB ดังนั้นฉันต้องลบตารางประวัตินี้ ตารางนี้ในขณะนี้ว่างเปล่า แต่พื้นที่ดิสก์ฐานข้อมูลไม่ออก และไฟล์ฐานข้อมูล 320GB

5
วิธีสร้างคำหลักตัวพิมพ์ใหญ่ SSMS
ฉันเพิ่งเริ่มใช้ Studio จัดการ 2012 เมื่อใช้ MySQL Workbench เป็นคุณสมบัติที่มีประโยชน์คือการที่ฉันสามารถอยู่ทั้งหมดในกรณีที่ต่ำกว่าและคำสงวนใด ๆ (เช่นSELECT, INSERT) จะแปลงเป็นกรณีบนโดยอัตโนมัติ ฉันจะทำซ้ำพฤติกรรมนี้ใน SSMS ได้อย่างไร

2
SQL Server อ่านแล้วยอมรับ SNAPSHOT กับ SNAPSHOT
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 6 ปีที่แล้ว ฉันค้นคว้าความแตกต่างระหว่าง SQL Server READ COMMITTED SNAPSHOTและSNAPSHOTระดับการแยกและพบกับทรัพยากรต่อไปนี้: การเลือกระดับการแยกตามเวอร์ชันของแถว สำหรับแอปพลิเคชันส่วนใหญ่ขอแนะนำให้อ่านการแยกโดยใช้การกำหนดเวอร์ชันของแถวมากกว่าการแยกสแน็ปช็อตด้วยเหตุผลต่อไปนี้: มันใช้พื้นที่ tempdb น้อยกว่าการแยกสแน็ปช็อต การแยกสแนปชอตมีความเสี่ยงที่จะอัปเดตความขัดแย้งที่ไม่สามารถใช้งานได้กับการอ่านแบบแยกที่มุ่งมั่นโดยใช้การกำหนดเวอร์ชันของแถว เมื่อธุรกรรมที่รันภายใต้การแยกสแน็ปช็อตอ่านข้อมูลที่ถูกแก้ไขโดยธุรกรรมอื่นการอัพเดตโดยธุรกรรมสแน็ปช็อตไปยังข้อมูลเดียวกันทำให้เกิดความขัดแย้งในการอัปเดตและธุรกรรมจะสิ้นสุดและย้อนกลับ นี่ไม่ใช่ปัญหาของการแยกการอ่านโดยใช้การกำหนดเวอร์ชันของแถว ฉันค่อนข้างใหม่สำหรับหัวข้อเหล่านี้ แต่ดูเหมือนว่าฉันไม่สามารถเข้าใจหัวข้อย่อยทั้งสองจากลิงก์ด้านบน ทำไมพื้นที่ tempdb จะแตกต่างกันสำหรับโหมดเหล่านี้ มีร้านหนึ่งที่ควบคุมเวอร์ชันย่อยได้มากกว่าร้านอื่นหรือไม่ ทำไมการแยกสแน็ปช็อตจึงมีความเสี่ยงที่จะอัปเดตข้อขัดแย้ง

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