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

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

4
วิธีการตัดเครื่องหมายเน้นภาษาฮิบรู
ฉันต้องการเคล็ดลับการเข้ารหัส Char เพื่อเปลื้องเครื่องหมายสำเนียงภาษาฮิบรู ตัวอย่างก่อน בְּרֵאשִׁ֖יתבָּרָ֣אאֱלֹהִ֑יםאֵ֥תהַשָּׁמַ֖יִםוְאֵ֥תהָאָֽרֶץ ตัวอย่างหลังจาก בראשיתבראאלהיםאתהשמיםואתהארץ

8
เหตุผลในการหลีกเลี่ยงค่า ID ขนาดใหญ่
เรากำลังทำงานกับเว็บแอปพลิเคชันซึ่งผู้ใช้ยังไม่สามารถเข้าถึงได้ เจ้านายของฉันสังเกตเห็นว่าระเบียนที่สร้างขึ้นใหม่ได้รับ ID มากกว่า 10,000 รายการแม้ว่าเราจะมีระเบียนน้อยกว่า 100 รายการในตาราง เธอคิดว่าเว็บอินเตอร์เฟสด้วยเหตุผลบางอย่างสร้างเร็กคอร์ดชั่วคราวมากกว่า 100 เท่ามากกว่าเรคคอร์ดจริง (และลบทิ้ง) และสิ่งนี้สามารถนำเราให้วิ่งออกจากระยะภายในไม่กี่เดือนหลังจากปล่อย ฉันไม่คิดว่าเธอถูกต้องเกี่ยวกับสาเหตุของ ID อัตราเงินเฟ้อ (เพื่อนร่วมงานที่สามารถตอบคำถามนี้ในวันหยุดดังนั้นเราไม่ทราบแน่นอน) แต่สมมติว่าเธอเป็น เธอบอกว่าเธอเกลียดที่จะใช้คอลัมน์ bigint และเธอต้องการให้เราหยุดการสร้างคอลัมน์ ID โดยอัตโนมัติและเขียนรหัสฝั่งเซิร์ฟเวอร์ซึ่งเลือกจำนวนเต็ม "ไม่ได้ใช้" แรกและใช้เป็น ID ฉันเป็นนักเรียนที่จบการศึกษาด้านวิทยาศาสตร์คอมพิวเตอร์พร้อมประสบการณ์การใช้งานเพียงเล็กน้อยโดยเติมบทบาทนักพัฒนารุ่นเยาว์ เธอมีประสบการณ์หลายปีในการจัดการฐานข้อมูลทั้งหมดขององค์กรของเราและออกแบบส่วนใหญ่ ฉันคิดว่าว่าเธอไม่ถูกต้องในกรณีนี้รหัสประจำตัวที่ยิ่งใหญ่นั้นไม่มีอะไรต้องกลัว แต่ฉันยังไม่เชื่อคำตัดสินของฉัน อะไรคือข้อโต้แย้งสำหรับและต่อต้านแต่ละตำแหน่ง? มีอะไรที่ไม่ดีเกิดขึ้นได้ถ้าเราใช้ป้ายกำกับขนาดใหญ่และอะไรคืออันตรายของการคิดค้นฟังก์ชั่นการเติมล้ออัตโนมัติ? มีวิธีที่สามซึ่งดีกว่าอย่างใดอย่างหนึ่ง? เหตุผลของเธออาจเป็นเพราะต้องการหลีกเลี่ยงเงินเฟ้อของค่า ID ใบหน้า? ฉันสนใจที่จะฟังเกี่ยวกับเหตุผลในทางปฏิบัติด้วยเช่นกันบางทีรหัสประจำตัวขนาดใหญ่อาจใช้งานได้ในทางทฤษฎี แต่ก็ปวดหัวในทางปฏิบัติ แอปพลิเคชันไม่คาดว่าจะจัดการกับข้อมูลจำนวนมาก ฉันสงสัยว่ามันจะถึง 10,000 บันทึกจริงภายในไม่กี่ปีถัดไป หากมันสร้างความแตกต่างเรากำลังใช้เซิร์ฟเวอร์ Microsoft SQL แอปพลิเคชั่นเขียนด้วยภาษา C # และใช้ Linq …

2
จำนวนนิพจน์ค่าแถวในคำสั่ง INSERT มีค่าเกินจำนวนสูงสุดที่อนุญาตของค่าแถว 1,000 ค่า
หนึ่งในINSERT INTOสคริปต์ถูกเขียนดังนี้ INSERT INTO tableName (Column1, Column2,....) VALUES (value1, Value2,...), (value1, Value2,...),.... ต่อไปนี้เป็นข้อผิดพลาดที่เรากำลังเผชิญกับการแยกวิเคราะห์คำสั่งแทรกด้านบน ข่าวสารเกี่ยวกับ 10738, ระดับ 15, สถานะ 1, บรรทัด 1007 จำนวนนิพจน์ค่าของแถวในคำสั่ง INSERT เกินจำนวนสูงสุดที่อนุญาตของค่าแถว 1,000 ค่า คำถามง่ายๆของฉันคือว่าเราสามารถเปลี่ยนวงเงินได้ 1,000 ค่าหรือไม่

2
ลดขนาดบันทึกธุรกรรมขณะใช้กลุ่มความพร้อมใช้งาน AlwaysOn
เรากำลังใช้AlwaysOn Availability Groupคุณสมบัติของ SQL Server 2012 สำรองฐานข้อมูลเต็มรูปแบบปกติและสำรองข้อมูลบันทึกธุรกรรมจะทำทุกวันในฐานข้อมูลรอง ฉันได้อ่านที่นี่ในการทำสำรองข้อมูลบันทึกธุรกรรมบนทั้งเรพลิกาหลักหรือเรพพลิเคชั่นสำรองจะทำเครื่องหมายบันทึกธุรกรรมของเรพพลิกาทั้งสองว่าสามารถใช้ซ้ำได้ อย่างไรก็ตามขนาดการสำรองข้อมูลบันทึกธุรกรรมมีขนาดใหญ่และสามารถลดลงได้โดยใช้ไฟล์ย่อขนาด: ฉันกู้คืนฐานข้อมูลในเครื่องแล้วทำการดำเนินการย่อขนาด ขนาดของไฟล์บันทึกลดลงเหลือ 160 MB คำถามของฉันอยู่ที่ฐานข้อมูลใดที่ฉันควรทำการลดขนาดไฟล์ล็อกธุรกรรม (หลักรองหรือทั้งสองอย่าง)? ฉันเดาว่าในอดีตเป็นเวลาหลายปีที่ไม่มีไฟล์แบ็คอัพสำรองดังนั้นมันจึงใหญ่มาก การดำเนินการDBCC SQLPERF (LOGSPACE)ฉันจะเห็นว่ามี0.06%การใช้ไฟล์เท่านั้น - ไม่มีจุดใดที่ฉันจะเก็บไฟล์บันทึกขนาดใหญ่เช่นนี้ได้ ใน[sys].[database_files]ฉันจะตรวจสอบว่าmax_sizeมีการตั้งค่า-1กับgrowthการ65536ดังนั้นฉันเดาเมื่อมันต้องมีพื้นที่ว่างมากขึ้นก็จะได้รับ อย่างไรก็ตามฉันสามารถลดขนาดมันเป็น 5% เพื่อป้องกันการเติบโตในอนาคต ฉันกำลังพยายามหาคำยืนยันว่าฉันไม่คิดที่จะทำเช่นนั้น อันที่จริงแล้วการแบ็คอัพ (ในฐานข้อมูลและไฟล์บันทึก) จะดำเนินการเฉพาะในฐานข้อมูลรองดังนั้นมันจะง่ายกว่าที่จะทำการลดขนาดไฟล์ลง แต่ขนาดล็อกไฟล์หลักจะลดลงเช่นกัน?

2
ฉันจะบอกได้ว่ามีการใช้งาน Cores SQL Server จำนวนเท่าใด
ฉันมีเซิร์ฟเวอร์สองเครื่องที่ใช้ SQL Server เซิร์ฟเวอร์ 1: SQL Server 2008 R2 Express (4 คอร์) เซิร์ฟเวอร์ 2: SQL Server 2012 Developer Edition (8 คอร์) เท่าที่ฉันทราบ SQL Server 2008 R2 Express ควรใช้หนึ่งคอร์เท่านั้น รุ่นนักพัฒนาของ SQL Server 2012 ควรใช้ 8 คอร์ทั้งหมด อย่างไรก็ตามถ้าฉันเรียกใช้คำสั่งต่อไปนี้ภายในแบบสอบถาม SQL บน SQL Server 2008 R2 Express มันแสดง 4 คอร์ select scheduler_id, cpu_id, status, …

2
การแปลง VARCHAR เป็น VARBINARY
ฉันได้เก็บบันทึกข้อความค้นหาที่ใช้งานราคาแพงพร้อมกับแผนแบบสอบถามไว้ในตารางเพื่อให้เราสามารถตรวจสอบแนวโน้มด้านประสิทธิภาพและระบุพื้นที่ที่ต้องการเพิ่มประสิทธิภาพ อย่างไรก็ตามมาถึงจุดที่แผนการสืบค้นใช้พื้นที่มากเกินไป (เนื่องจากเราจัดเก็บทั้งแผนกับแต่ละแบบสอบถาม) ฉันจึงพยายามทำให้ข้อมูลที่มีอยู่เป็นปกติด้วยการแยก QueryPlanHash และ QueryPlan ไปยังตารางอื่น CREATE TABLE QueryPlans ( QueryPlanHash VARBINARY(25), QueryPlan XML, CONSTRAINT PK_QueryPlans PRIMARY KEY ( QueryPlanHash ) ); เนื่องจากคำจำกัดความของquery_plan_hashin sys.dm_exec_query_statsเป็นเขตข้อมูลไบนารี (และฉันจะแทรกข้อมูลใหม่เป็นประจำ) ฉันจึงใช้VARBINARYกับชนิดข้อมูลในตารางใหม่ของฉัน อย่างไรก็ตามการแทรกด้านล่างล้มเหลว ... INSERT INTO QueryPlans ( QueryPlanHash, QueryPlan ) SELECT queryplanhash, queryplan FROM ( SELECT p.value('(./@QueryPlanHash)[1]', 'varchar(20)') queryplanhash, QueryPlan, ROW_NUMBER() OVER (PARTITION …

5
ทำไมฉันไม่สามารถใช้คำสั่ง CASE เพื่อดูว่ามีคอลัมน์อยู่หรือไม่และไม่ได้เลือกคอลัมน์
ทำไมบางอย่างเช่นนี้จึงไม่ทำงาน SELECT CASE WHEN NULLIF(COL_LENGTH('Customers', 'Somecol'), '') IS NULL THEN NULL ELSE Somecol END AS MyTest FROM Customers; ฉันแค่ตรวจสอบว่ามีคอลัมน์อยู่อย่างไรก็ตาม SQL Server บ่นว่าSomecolไม่มีอยู่ มีทางเลือกอื่นสำหรับสิ่งนี้ในข้อความเดี่ยว?
17 sql-server  t-sql 

1
รับภาพรวมภายหลังจาก Amazon RDS
ฉันไม่สามารถหาวิธีง่ายๆในการรับสำเนาของการสำรองข้อมูลทุกคืนที่ฉันใช้กับ Amazon RDS postgres ของฉันดังนั้นฉันจึงสามารถกู้คืนได้บนเครื่องคอมพิวเตอร์ของฉันเพื่อเล่น ตอนนี้ฉันกำลังทำ pg_dump เมื่อฉันต้องการสำเนา แต่มันก็ดีกว่า (และเร็วกว่าน่าจะเป็น) เพื่อให้สามารถดาวน์โหลดภาพรวมเหล่านั้นได้ มันเป็นไปไม่ได้เหรอ?

1
มี psql เทียบเท่ากับประวัติการค้นหาย้อนกลับของ bash หรือไม่
ฉันชื่นชอบbashreverse-search-history (Cr) (คุณสมบัติบรรทัดคำสั่ง) ของ: ค้นหาย้อนหลังเริ่มต้นที่บรรทัดปัจจุบันและเลื่อน 'up' ผ่านประวัติตามความจำเป็น นี่คือการค้นหาที่เพิ่มขึ้น เมื่อฉันตีcontrol-rในbashที่ฉันได้รับต่อไปนี้: (reverse-i-search)`': และฉันสามารถพิมพ์อักขระของคำสั่งที่เรียกใช้งานก่อนหน้านี้ได้โดยให้ความเคารพกับสิ่งที่ฉันกำลังมองหา หากฉันทำผิดฉันสามารถป้อนcontrol-hเพื่อลบอักขระ (เทียบเท่าbackspace) ฟังก์ชันบรรทัดคำสั่งนี้ทำให้ง่ายต่อการอ้างถึงคำสั่งที่เรียกใช้ก่อนหน้านี้ ฉันสงสัยว่ามีความสามารถดังกล่าวอยู่psqlหรือไม่ ฉันคิดว่ามันไม่มีประสิทธิภาพมากที่จะพึ่งพาเพียงและcontrol-pcontrol-n สำหรับสิ่งที่คุ้มค่าผมใช้PostgreSQL 9.3.1 on x86_64-apple-darwin13.0.0, compiled by Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn), 64-bit- ได้รับผ่านทางPostgres.app

5
วิธีหาช่องว่างซ้ำ ๆ เมื่อ 90 วันที่ผ่านไประหว่างแถว
นี่เป็นงานที่ไม่สำคัญใน C # โฮมเวิร์ลดของฉัน แต่ฉันยังไม่ได้ทำใน SQL และต้องการที่จะแก้ปัญหาการตั้งค่า (โดยไม่มีเคอร์เซอร์) ชุดผลลัพธ์ควรมาจากข้อความค้นหาเช่นนี้ SELECT SomeId, MyDate, dbo.udfLastHitRecursive(param1, param2, MyDate) as 'Qualifying' FROM T มันควรจะทำงานอย่างไร ฉันส่ง params ทั้งสามนี้ไปยัง UDF UDF ใช้ params ภายในเพื่อดึงข้อมูลแถว <= 90 วันที่เก่ากว่าที่เกี่ยวข้องจากมุมมอง UDF สำรวจ 'MyDate' และส่งคืน 1 ถ้าควรรวมอยู่ในการคำนวณทั้งหมด หากไม่ควรส่งคืนค่า 0 จะถูกตั้งชื่อเป็น "คุณสมบัติ" สิ่งที่ udf จะทำ แสดงรายการแถวตามลำดับวันที่ คำนวณวันระหว่างแถว แถวแรกในชุดผลลัพธ์เป็น Hit = 1 …

7
“ ไม่พบไฟล์ mysql / plugin.frm” เมื่อเริ่มต้น MySQL
เมื่อฉันเริ่มเซิร์ฟเวอร์ MySQL ฉันได้รับข้อผิดพลาดนี้: /usr/libexec/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13) [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. InnoDB: The error means mysqld does not have the access rights to InnoDB: the directory. InnoDB: File name ./ibdata1 InnoDB: File operation call: 'create'. InnoDB: Cannot continue operation. …
17 mysql 

3
วิธีการตรวจสอบ master ใน mysql master-slave
ฉันกำลังตั้งค่าการจำลองแบบ MySQL Master-slave และฉันกำลังพยายามหาวิธีจัดการกับสถานการณ์ที่ล้มเหลวซึ่งฉันเลื่อนตำแหน่งสลาฟไปเป็นมาสเตอร์ (ในกรณีที่มาสเตอร์ลงไป) แอ็พพลิเคชันเซิร์ฟเวอร์ของฉันต้องกำหนดให้การเขียนทั้งหมดไปยังต้นแบบปัจจุบัน แต่ฉันไม่สามารถใช้ HA ระดับเซิร์ฟเวอร์ระหว่างต้นแบบและทาส (heartbeat, keepalived) เนื่องจากเซิร์ฟเวอร์ db สองตัวอยู่บนเครือข่ายย่อยที่แตกต่างกันโดยสิ้นเชิงในตำแหน่งที่ตั้งทางกายภาพที่แตกต่างกัน ฉันคิดว่านี่เป็นสิ่งที่ฉันต้องจัดการในระดับแอปพลิเคชัน ฉันสามารถค้นหาเซิร์ฟเวอร์ทั้งสองและถามว่าเซิร์ฟเวอร์ใดเป็นเซิร์ฟเวอร์หลักแล้วดำเนินการสอบถามทั้งหมดไปยังเซิร์ฟเวอร์นั้น มีแบบสอบถามใน MySQL เพื่อดูว่าเซิร์ฟเวอร์ปัจจุบันเป็นหลักในแบบจำลองต้นแบบทาสหรือไม่?

5
ย้ายหลายฐานข้อมูลจาก C: เป็น D: ในครั้งเดียว
ฉันมี SQL Server 2008 R2 โดยมีฐานข้อมูล 323 แห่งกินไดรฟ์ C: ไดรฟ์ SSD ที่รวดเร็วถึง 14 GB เนื่องจากฉันต้องการเรียกคืนพื้นที่บางส่วนบนไดรฟ์ C: ฉันต้องการย้ายพวกเขาไปยังไดรฟ์ D: ของฉัน ฉันพบบทความ MSDN นี้แล้ว แต่ดูเหมือนว่าเป็นขั้นตอนการย้ายฐานข้อมูลเดียวเท่านั้น มีวิธีอัตโนมัติหรือสคริปต์เพื่อย้ายฐานข้อมูลทั้งหมดของฉันในครั้งเดียว?

5
ความแตกต่างระหว่างการสำรองข้อมูลเต็มรูปแบบและการสำรองข้อมูลเต็มรูปแบบเฉพาะการคัดลอกเท่านั้น
ฉันเห็นในเธรด SQL Server Central การสำรองข้อมูลเต็มตัดทอนบันทึกหรือไม่ การสำรองข้อมูลเต็มรูปแบบไม่ตัดทอนบันทึก: ไม่ทั้งการสำรองข้อมูลทั้งหมดหรือส่วนต่างจะตัดทอนบันทึกธุรกรรม - Lynn Pettis No - การสำรองข้อมูลเต็มรูปแบบไม่ตัดทอนบันทึก - Chad Crawford ดังนั้นความแตกต่างระหว่างการสำรองข้อมูลเต็มรูปแบบและการสำรองข้อมูลเต็มรูปแบบเฉพาะการคัดลอกคืออะไร? สำหรับการสำรองข้อมูลบันทึกจะมีการสำรองข้อมูลแบบคัดลอกเท่านั้นซึ่งป้องกันไม่ให้ห่วงโซ่การบันทึกเสียหายโดยไม่ตัดทอนบันทึก ดังนั้นการสำรองข้อมูลเต็มรูปแบบเฉพาะการคัดลอกคืออะไร?

2
ขั้นตอนการจัดเก็บกลางเพื่อดำเนินการในบริบทฐานข้อมูลการโทร
ฉันกำลังทำงานกับโซลูชันการบำรุงรักษาที่กำหนดเองโดยใช้sys.dm_db_index_physical_statsมุมมอง ฉันมีมันถูกอ้างอิงจากขั้นตอนการจัดเก็บ ตอนนี้เมื่อโพรซีเดอร์ที่เก็บรันบนหนึ่งในฐานข้อมูลของฉันมันทำสิ่งที่ฉันต้องการให้ทำและดึงรายการของระเบียนทั้งหมดที่เกี่ยวข้องกับฐานข้อมูลใด ๆ ลง เมื่อฉันวางไว้ในฐานข้อมูลอื่นมันจะดึงรายการทั้งหมดที่เกี่ยวข้องกับฐานข้อมูลนั้นลง ตัวอย่างเช่น (รหัสที่ด้านล่าง): การค้นหาทำงานกับฐานข้อมูล 6 แสดงข้อมูล [ร้องขอ] สำหรับฐานข้อมูล 1-10 เคียวรีรันกับฐานข้อมูล 3 แสดงข้อมูล [ร้องขอ] สำหรับฐานข้อมูล 3 เท่านั้น เหตุผลที่ฉันต้องการขั้นตอนนี้โดยเฉพาะในฐานข้อมูลสามเป็นเพราะฉันต้องการเก็บวัตถุการบำรุงรักษาทั้งหมดในฐานข้อมูลเดียวกัน ฉันต้องการให้งานนี้อยู่ในฐานข้อมูลการบำรุงรักษาและทำงานราวกับว่าอยู่ในฐานข้อมูลแอปพลิเคชันนั้น รหัส: ALTER PROCEDURE [dbo].[GetFragStats] @databaseName NVARCHAR(64) = NULL ,@tableName NVARCHAR(64) = NULL ,@indexID INT = NULL ,@partNumber INT = NULL ,@Mode NVARCHAR(64) = 'DETAILED' AS BEGIN SET …

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