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

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

10
ฉันจะคัดลอกตารางด้วย SELECT INTO ได้อย่างไร แต่ไม่สนใจคุณสมบัติตัวตน
ฉันมีตารางที่มีคอลัมน์ระบุตัวตน: create table with_id ( id int identity(1,1), val varchar(30) ); มันเป็นที่รู้จักกันดีว่าสิ่งนี้ select * into copy_from_with_id_1 from with_id; ผลลัพธ์ใน copy_from_with_id_1 พร้อมรหัสประจำตัวด้วย คำถามล้นสแต็คต่อไปนี้กล่าวถึงรายการคอลัมน์ทั้งหมดอย่างชัดเจน มาลองกัน select id, val into copy_from_with_id_2 from with_id; อ๊ะแม้ในกรณีนี้ id จะเป็นคอลัมน์ข้อมูลประจำตัว สิ่งที่ฉันต้องการคือโต๊ะ create table without_id ( id int, val varchar(30) );

2
ใน SQL Server 2016 ความแตกต่างระหว่าง Always Encrypted และ Transparent Data Encryption แตกต่างกันอย่างไร
ขณะที่ฉันเขียนสิ่งนี้ฉันยังคงรอการเปิดตัวอย่างเป็นทางการของ SQL Server 2016 เพื่อให้เราสามารถสำรวจประโยชน์ของคุณสมบัติ "เข้ารหัสเสมอ" ฉันแค่อยากจะรู้ว่าความแตกต่างที่เฉพาะเจาะจงจะอยู่ระหว่างการเข้ารหัสเสมอและการเข้ารหัสข้อมูลแบบโปร่งใสที่มีอยู่ในปัจจุบันใน SQL Server 2016 เพื่อให้เราสามารถตัดสินใจได้อย่างถูกต้องสำหรับโครงการในอนาคต

2
ทำไมการเปลี่ยนลำดับคอลัมน์การประกาศที่ประกาศจึงแนะนำการเรียงลำดับ
ฉันมีสองตารางที่มีชื่อคอลัมน์พิมพ์และดัชนีคีย์เหมือนกัน หนึ่งในพวกเขามีที่ไม่ซ้ำกันดัชนีคลัสเตอร์ที่หนึ่ง ๆ มีที่ไม่ซ้ำกัน การตั้งค่าการทดสอบ สคริปต์การตั้งค่ารวมถึงสถิติที่เป็นจริง: DROP TABLE IF EXISTS #left; DROP TABLE IF EXISTS #right; CREATE TABLE #left ( a char(4) NOT NULL, b char(2) NOT NULL, c varchar(13) NOT NULL, d bit NOT NULL, e char(4) NOT NULL, f char(25) NULL, g char(25) NOT NULL, h char(25) NULL …

6
อาจารย์ของฉันสอนฉันว่า `COUNT 'ไม่นับซ้ำกัน
ที่มหาวิทยาลัยอาจารย์ของฉันสอนฉันปีนี้ว่าคำสั่ง SQL นี้: SELECT COUNT(length) FROM product จะกลับมา2พร้อมชุดข้อมูลต่อไปนี้: | product | |id | length | code | |-------------------| | 1 | 11 | X00 | | 2 | 11 | C02 | | 3 | 40 | A31 | เธออ้างเหตุผลโดยบอกว่าCOUNTไม่นับซ้ำ ฉันบอกอาจารย์ว่าฉันคิดว่าเธอทำผิดพลาด เธอตอบฉันว่า DBMS บางคนอาจหรือไม่นับซ้ำกัน หลังจากลอง DBMS เป็นจำนวนมากฉันไม่เคยพบที่มีพฤติกรรมนี้ DBMS นี้มีอยู่หรือไม่? มีเหตุผลใดที่อาจารย์ผู้สอนจะสอนพฤติกรรมนี้? …
40 dbms 

3
พารามิเตอร์การดมกลิ่นเทียบกับตัวแปรเทียบกับการคอมไพล์ vs ออปติไมซ์สำหรับ UNKNOWN
ดังนั้นเราจึงใช้เวลานาน proc ทำให้เกิดปัญหาเมื่อเช้านี้ (30 วินาที + เวลาทำงาน) เราตัดสินใจตรวจสอบเพื่อดูว่าการดมพารามิเตอร์เป็นการตำหนิหรือไม่ ดังนั้นเราเขียน proc ใหม่และตั้งค่าพารามิเตอร์ขาเข้าเป็นตัวแปรเพื่อกำจัดพารามิเตอร์การดมกลิ่น วิธีการทดลอง / จริง แบมปรับปรุงเวลาแบบสอบถาม (น้อยกว่า 1 วินาที) เมื่อดูที่แผนแบบสอบถามการปรับปรุงจะพบในดัชนีที่ไม่ได้ใช้ เพียงเพื่อยืนยันว่าเราไม่ได้รับผลบวกผิดพลาดเราได้ dbcc freeproccache ใน proc และรันซ้ำเพื่อดูว่าผลลัพธ์ที่ได้รับการปรับปรุงจะเหมือนเดิมหรือไม่ แต่เพื่อความประหลาดใจของเรา proc ดั้งเดิมยังคงทำงานช้า เราลองอีกครั้งด้วย WITH RECOMPILE ยังคงช้า (เราลองคอมไพล์อีกครั้งในการโทรไปยัง proc และภายใน proc itelf) เรายังรีสตาร์ทเซิร์ฟเวอร์ (เห็นได้ชัดว่ากล่อง dev) ดังนั้นคำถามของฉันคือสิ่งนี้ ... พารามิเตอร์การดมกลิ่นสามารถตำหนิได้อย่างไรเมื่อเราได้รับแบบสอบถามช้าแบบเดียวกันกับแคชแผนว่างเปล่า ... ไม่ควรมีพารามิเตอร์ใด ๆ ในการดมกลิ่น ??? เรากำลังได้รับผลกระทบจากสถิติตารางที่ไม่เกี่ยวข้องกับแคชแผนหรือไม่ และถ้าเป็นเช่นนั้นทำไมการตั้งค่าพารามิเตอร์ขาเข้าเป็นตัวแปรช่วยได้อย่างไร …

3
คุณจะให้สิทธิ์ดำเนินการสำหรับขั้นตอนการจัดเก็บเดียวได้อย่างไร
ปกติเมื่อฉันสร้างโพรซีเดอร์ที่เก็บไว้ฉันจะใช้สิ่งต่อไปนี้เป็นเทมเพลตการเรียงลำดับ Create procedure <procedurename> <@param1 <type>, @param2 <type>, etc..> as begin <procedure> end มีวิธีการรวมการให้สิทธิ์ดำเนินการในขั้นตอนที่เก็บไว้ในขณะที่ฉันอยู่หรือไม่ ตัวอย่างเช่น ... Grant execute [User_Execute] ... แต่สำหรับขั้นตอนการจัดเก็บนี้เท่านั้น ฉันเคยเห็นคำถามที่คล้ายกันอื่น ๆ แต่ดูเหมือนว่าพวกเขาทั้งหมดอ้างถึงขั้นตอนการจัดเก็บทั้งหมดไม่ใช่แค่คำถามเดียวและฉันไม่เคยเห็นคำถามที่คุณสามารถระบุสิทธิ์ภายในcreate procedureสคริปต์ได้ แม้แต่คำตอบเกี่ยวกับวิธีที่ฉันสามารถตั้งค่าการอนุญาตโดยไม่มี GUI สำหรับขั้นตอนการจัดเก็บเฉพาะจะยินดี แก้ไข คำตอบยอดนิยมชี้ให้ฉันอย่างแม่นยำในทิศทางที่ถูกต้องนี่คือสิ่งที่ฉันกำลังมองหาฉันไม่ได้คิดเกี่ยวกับการรวมชุดคำสั่งซึ่งเป็นสิ่งที่ฉันทำลงไปการผสมคำสั่งพร้อมกับกระบวนการจัดเก็บของฉัน อย่างไรก็ตามฉันคิดว่ามันค่อนข้างเรียบ Create procedure <procedurename> <@param1 <type>, @param2 <type>, etc..> as begin <procedure> end GO GRANT EXECUTE ON <procedurename> to <username> …
40 sql-server 

1
MySQL ล่มเป็นระยะพร้อมด้วยข้อผิดพลาด“ ข้อผิดพลาดร้ายแรง: ไม่สามารถจัดสรรหน่วยความจำสำหรับบัฟเฟอร์พูล”
เพิ่มเมื่อแก้ไข 2013-05-29:เนื่องจากนี่เป็นคำถามและการอภิปรายที่ยาวนานนี่เป็นบทสรุปโดยย่อของคำถามและวิธีแก้ไข ฉันมีปัญหาในการใช้งาน MySQL และ Apache บนเซิร์ฟเวอร์ Linux ขนาดเล็ก (หน่วยความจำ 1 GB) Apache ยังคงต้องการหน่วยความจำเพิ่มขึ้นและในฐานะที่เป็นระบบปฏิบัติการนั้นก็จะฆ่า MySQL เพื่อให้ได้หน่วยความจำกลับคืนมา วิธีแก้ไขคือแทนที่ Apache ด้วย Lighttpd หลังจากที่ฉันทำอย่างนั้นแล้วการใช้หน่วยความจำบนเซิร์ฟเวอร์มีความเสถียรอย่างสมบูรณ์เป็นเวลาหลายเดือนแล้วและฉันก็ไม่พบปัญหาใด ๆ สิ้นสุดการแก้ไข ฉันเป็นผู้ดูแลระบบเริ่มต้นสำหรับเซิร์ฟเวอร์เสมือนขนาดเล็ก หน้าที่หลักของเซิร์ฟเวอร์คือการรันซอฟต์แวร์ระบบการจัดการหลักสูตรMoodleแบบโอเพ่นซอร์สซึ่งเขียนด้วย PHP มันอาศัยฐานข้อมูลในกรณีนี้ MySQL และเว็บเซิร์ฟเวอร์ในกรณีนี้ Apache เซิร์ฟเวอร์กำลังเรียกใช้ CentOS 64 บิตรีลีส 5.8 (Final) พร้อมหน่วยความจำ 1 GB และดิสก์ 200 GB, เคอร์เนลรุ่น 2.6.18-308.8.2.el5xen รุ่น MySQL คือ Ver 14.14 Distrib …

2
DBA ต้องรู้อะไรเกี่ยวกับ SSAS
ฉันได้เห็นวัสดุจำนวนมากครอบคลุมด้านธุรกิจของ SSAS แต่ไม่มากเกี่ยวกับประเด็นสำคัญของการบริหารและการจัดการ จากมุมมองของการดูแลอินสแตนซ์ของ SQL Server Analysis Services DBA ที่ทำงานต้องรู้อะไรเกี่ยวกับ SSAS เพื่อจัดการอย่างถูกต้องและมีประสิทธิภาพ
40 sql-server  ssas 

3
การสแกนที่ไม่คาดหมายระหว่างการลบโดยใช้ WHERE IN
ฉันมีคำถามดังนี้ DELETE FROM tblFEStatsBrowsers WHERE BrowserID NOT IN ( SELECT DISTINCT BrowserID FROM tblFEStatsPaperHits WITH (NOLOCK) WHERE BrowserID IS NOT NULL ) tblFEStatsBrowsers มี 553 แถว tblFEStatsPaperHits มีแถว 47.974.301 tblFEStatsBrowsers: CREATE TABLE [dbo].[tblFEStatsBrowsers]( [BrowserID] [smallint] IDENTITY(1,1) NOT NULL, [Browser] [varchar](50) NOT NULL, [Name] [varchar](40) NOT NULL, [Version] [varchar](10) NOT NULL, …

4
ฉันจะกำหนดการเข้าถึงความปลอดภัยของกลุ่ม Active Directory ทั้งหมดใน SQL Server 2008 ได้อย่างไร
ฉันต้องการใช้การรักษาความปลอดภัยแบบรวมกับแอปพลิเคชันภายในซึ่งอยู่ในโดเมนทั้งหมด น่าเสียดายที่ฉันไม่สามารถทำให้สิ่งนี้ทำงานได้ดี ฉันต้องการกำหนดให้ทั้ง Exchange (Active Directory) จัดกลุ่มบทบาทใน SQL Server สำหรับการเข้าถึงแบบอ่าน / เขียนในตารางบางตัว ด้วยวิธีนี้ฉันจะไม่ต้องสร้างโอเปอเรเตอร์เมื่อมีคนจ้างหรือลบโอเปอเรเตอร์เมื่อมีคนถูกไล่ออก เป็นไปได้ไหม ฉันจะทำขั้นตอนใดในการทำเช่นนี้?

1
ความแตกต่างระหว่าง Hash, Merge และ Loop เข้าร่วมหรือไม่
ใน SQL Server คุณสามารถระบุคำแนะนำการเข้าร่วม: เข้าร่วมแฮช รวมเข้าด้วยกัน เข้าร่วมLOOP คำจำกัดความของการเข้าร่วมทั้งสามคำจำกัดความคืออะไรและแต่ละคนควรใช้เมื่อใด
40 sql-server 


5
กรณีการใช้งานที่ถูกต้องสำหรับการใช้ TIMESTAMP โดยไม่มี TIME ZONE คืออะไร?
มีคำตอบยาวและค่อนข้างชัดเจนเกี่ยวกับความแตกต่างระหว่าง TIMESTAMP WITH TIME ZONE -vs- TIMESTAMP WITHOUT TIME ZONE มีอยู่ในโพสต์ SOนี้ สิ่งที่ฉันต้องการทราบคือมีกรณีการใช้งานที่ถูกต้องสำหรับการใช้งานจริงTIMESTAMP WITHOUT TIME ZONEหรือควรได้รับการพิจารณาว่าเป็นรูปแบบการต่อต้าน
40 postgresql 

2
เป็นไปได้ INDEX บนเขตข้อมูล VARCHAR ใน MySql
ฉันทำงานในฐานข้อมูล MySqlโดยมีตารางดังนี้: +--------------+ | table_name | +--------------+ | myField | +--------------+ ... และฉันต้องการสอบถามจำนวนมากเช่นนี้(มี 5-10 สตริงในรายการ) : SELECT myField FROM table_name WHERE myField IN ('something', 'other stuff', 'some other a bit longer'...) จะมีแถวที่ไม่ซ้ำประมาณ 24.000.000 แถว 1)ฉันควรใช้ a FULLTEXTหรือและที่INDEXสำคัญสำหรับของฉันVARCHAR(150)? 2)ถ้าฉันเพิ่มตัวอักษรจาก 150 เป็น 220 หรือ 250 ... มันจะสร้างความแตกต่างได้หรือไม่? (มีวิธีการคำนวณหรือไม่?) 3)ตามที่ฉันพูดพวกเขาจะไม่ซ้ำกันดังนั้นสนามของฉันควรเป็นคีย์หลัก การเพิ่มคีย์หลักในฟิลด์ซึ่งเป็น VARCHAR INDEX …

4
จะอัปเดตหนึ่งตารางตามค่าของตารางอื่นได้อย่างไร
ฉันมีตารางในชื่อ ips ดังต่อไปนี้: CREATE TABLE `ips` ( `id` int(10) unsigned NOT NULL DEFAULT '0', `begin_ip_num` int(11) unsigned DEFAULT NULL, `end_ip_num` int(11) unsigned DEFAULT NULL, `iso` varchar(3) DEFAULT NULL, `country` varchar(150) DEFAULT NULL ) ENGINE=InnoDB สมมติว่าฉันมีcountryidฟิลด์ในตารางนี้จากตารางประเทศซึ่งเป็นด้านล่าง: CREATE TABLE `country` ( `countryid` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) CHARACTER SET utf8 …
40 mysql  update 

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