ผู้ดูแลฐานข้อมูล

ถามตอบสำหรับผู้เชี่ยวชาญด้านฐานข้อมูลที่ต้องการพัฒนาทักษะฐานข้อมูลและเรียนรู้จากผู้อื่นในชุมชน

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 เดียวกันก็ไม่มีความล่าช้า เมื่อเพื่อนร่วมงานคนเดียวกันลงชื่อเข้าใช้พีซีของฉันด้วยบัญชีโดเมนของเขาเองเขาประสบความล่าช้า การทดสอบเหล่านี้แสดงว่าปัญหานั้นไม่เหมือนใครในพีซีของฉัน นอกจากนี้ปัญหาจะปรากฏเฉพาะเมื่อเชื่อมต่อกับ …

1
ไม่สามารถนำเข้าฐานข้อมูล SQL ที่เข้ารหัส UTF-8 ในเครื่องบน Mac
ฉันกำลังนำเข้าฐานข้อมูล SQL ที่เข้ารหัส UTF-8 ที่ได้รับการยืนยันไปยัง Sequel Pro บน Mac และได้โยนข้อผิดพลาดนี้ไปครึ่งทางแล้ว: เกิดข้อผิดพลาดขณะอ่านไฟล์เนื่องจากไม่สามารถอ่านได้ในการเข้ารหัสที่คุณเลือก (ตรวจหาอัตโนมัติ - Unicode (UTF-8) มีการประมวลผลแบบสอบถาม 1273 รายการเท่านั้น เป็นเพราะไฟล์ฐานข้อมูลนั้นมาจากเครื่อง windows และมีการแพร่กระจายของสิ่งต่าง ๆ หรือไม่ ฉันคิดว่าฉันจะได้รับข้อผิดพลาดนี้แม้ว่าฉันจะพยายามส่งฐานข้อมูลเดียวกันผ่านการถ่ายโอนไฟล์ไปยังเซิร์ฟเวอร์ดังนั้นฉันจะแก้ไขการเข้ารหัสได้อย่างไร -- MySQL dump 10.13 Distrib 5.5.40-36.1, for Linux (x86_64) -- -- Host: localhost Database: ***** -- ------------------------------------------------------ -- Server version 5.5.40-36.1-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 …

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
เลือก DISTINCT ในหลายคอลัมน์
สมมติว่าเรามีตารางที่มีสี่คอลัมน์(a,b,c,d)ของชนิดข้อมูลเดียวกัน เป็นไปได้หรือไม่ที่จะเลือกค่าที่แตกต่างทั้งหมดภายในข้อมูลในคอลัมน์และส่งกลับเป็นคอลัมน์เดียวหรือฉันต้องสร้างฟังก์ชันเพื่อให้ได้สิ่งนี้?

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 จะแตกต่างกันสำหรับโหมดเหล่านี้ มีร้านหนึ่งที่ควบคุมเวอร์ชันย่อยได้มากกว่าร้านอื่นหรือไม่ ทำไมการแยกสแน็ปช็อตจึงมีความเสี่ยงที่จะอัปเดตข้อขัดแย้ง

2
วิธีการย้อนกลับเมื่อเริ่ม 3 โพรซีเดอร์ที่เก็บไว้จากโพรซีเดอร์ที่เก็บไว้หนึ่งโพรซีเดอร์
ฉันมีโพรซีเดอร์ที่เก็บไว้ซึ่งประมวลผล 3 โพรซีเดอร์ที่เก็บไว้ภายในเท่านั้น ฉันใช้พารามิเตอร์ 1 ตัวเพื่อจัดเก็บเท่านั้นหากมาสเตอร์ SP ประสบความสำเร็จ หากโพรซีเดอร์ที่เก็บครั้งแรกทำงานได้ดีในโพรซีเดอร์ที่เก็บข้อมูลหลัก แต่โพรซีเดอร์ที่เก็บข้อมูลที่สองล้มเหลวแล้วมันจะย้อนกลับ SP ทั้งหมดใน Master SP โดยอัตโนมัติหรือฉันต้องทำบางคำสั่งหรือไม่? นี่คือขั้นตอนของฉัน: CREATE PROCEDURE [dbo].[spSavesomename] -- Add the parameters for the stored procedure here @successful bit = null output AS BEGIN begin transaction createSavebillinginvoice begin Try -- SET NOCOUNT ON added to prevent extra result sets …

6
วิธีรับบทบาททั้งหมดที่ผู้ใช้เป็นสมาชิก (รวมถึงบทบาทที่สืบทอด)
สมมติว่าฉันมีกลุ่มฐานข้อมูล Postgresql สองกลุ่มคือ "ผู้เขียน" และ "บรรณาธิการ" และผู้ใช้สองคนคือ "maxwell" และ "ernest" create role authors; create role editors; create user maxwell; create user ernest; grant authors to editors; --editors can do what authors can do grant editors to maxwell; --maxwell is an editor grant authors to ernest; --ernest is an author ฉันต้องการเขียนฟังก์ชั่นนักแสดงที่ส่งกลับรายการของบทบาท …

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