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

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

2
INT หรือ CHAR สำหรับเขตข้อมูลประเภท
การออกแบบที่ดีที่สุดสำหรับตารางคืออะไรTypeข้อมูลที่เป็นintหรือchar(1)? กล่าวอีกนัยหนึ่งให้คีมานี้: create table Car ( Name varchar(100) not null, Description varchar(100) not null, VehType .... not null ) มันมีประสิทธิภาพมากกว่า (ฉลาดในการทำงาน) VehTypeเพื่อที่จะเป็นintหรือchar(1)? สมมติว่าคุณมีรถยนต์ห้าประเภทคุณควรใช้ค่าที่เพิ่มขึ้น 0 -> 4 หรือตัวอักษรสำหรับประเภท (พูด; 'v', 's', 'c', 't', 'm')? หากเป็นมากกว่านั้นฉันจะใช้ตาราง Type แยกต่างหากและมีความสัมพันธ์กับคีย์ต่างประเทศ แต่ฉันไม่เห็นความต้องการดังกล่าว ฉันสังเกตเห็นว่าsys.objectsมุมมองแคตตาล็อกใช้อักขระสำหรับtypeฟิลด์ มีเหตุผลสำหรับสิ่งนั้นหรือไม่? ฉันเพิ่งจะคว้าที่อากาศที่นี่และมันเป็นสิ่งที่ฉันสะดวกสบายด้วยหรือไม่

3
การลดขนาดไฟล์บันทึกของ SQL Server มีผลต่อประสิทธิภาพอย่างไร
ฉันมีฐานข้อมูล SQL Server 2008 ที่มีไฟล์ข้อมูลขนาด 2GB บางส่วน แต่ไฟล์บันทึกมีขนาดเกิน 8GB ด้วยฐานข้อมูลก่อนปี 2551 ฉันสามารถใช้ 'บันทึกการสำรองข้อมูล' และTRUNCATE_ONLYตัวเลือก แต่ไม่สามารถใช้งานได้กับฐานข้อมูล 2008 และใหม่กว่า ฉันมีสคริปต์ที่ตัดทอนไฟล์บันทึก: USE [MyDatabase] GO ALTER DATABASE [MyDatabase] SET RECOVERY SIMPLE WITH NO_WAIT DBCC shrinkfile('MyDatabase_log', 1) ALTER DATABASE [MyDatabase] SET RECOVERY FULL WITH NO_WAIT GO สิ่งนี้จะตัดทอนไฟล์บันทึกอย่างสมบูรณ์ แต่คำถามของฉันคือ: สิ่งนี้มีผลกระทบต่อประสิทธิภาพหรือไม่ ฉันทำการสำรองข้อมูลเต็มรูปแบบสองครั้งต่อวันดังนั้นการบันทึกจึงไม่จำเป็นต้องมีความสำคัญเท่าที่ข้อมูลจะถูกนำไปใช้

3
ฉันจะบอกได้อย่างไรว่าแบบจำลองการกู้คืนฐานข้อมูล SQL ของฉันมีอะไร
มีคำสั่ง SQL ที่ฉันสามารถรันเพื่อกำหนดรูปแบบการกู้คืนของฐานข้อมูลของฉันได้หรือไม่? ฉันต้องการทราบว่าการกู้คืนเต็มหรือไม่

5
SQL Server - ฐานข้อมูลแยกต่างหากสำหรับรายงาน?
บน SQL Server ของเราเรามีฐานข้อมูลสำหรับแต่ละเว็บแอปของเรา สำหรับรายงานเราใช้บริการรายงานและข้อมูลรายงานทั้งหมด (รวมถึงพารามิเตอร์รายงาน) มาจากขั้นตอนการจัดเก็บ ขั้นตอนการจัดเก็บอยู่ในฐานข้อมูลเดียวกับข้อมูลในรายงาน ตัวอย่างเช่น procs ที่ให้บริการรายงานสต็อคอยู่ในฐานข้อมูลสต็อค บางรายงานแสดงข้อมูลจากฐานข้อมูลมากกว่าหนึ่งฐานข้อมูลจากนั้น proc จะอยู่ในฐานข้อมูลแหล่งใดแหล่งหนึ่ง พารามิเตอร์รายงานรับข้อมูลจาก procs ในฐานข้อมูลองค์กรที่มีข้อมูลเช่นร้านค้าพนักงาน ฯลฯ ซึ่งหมายความว่ารายงานทั้งหมดมีการเชื่อมต่อกับฐานข้อมูลองค์กรอย่างน้อยและการเชื่อมต่ออื่นไปยังฐานข้อมูลอื่น - และบางครั้งมากกว่านั้น คำถามของฉันคือจะมีประโยชน์ในการเคลื่อนย้าย procs รายงานเข้าแยก "รายงาน" ฐานข้อมูล ฉันรู้ถึงประโยชน์ของการย้ายรายงานไปยังเซิร์ฟเวอร์อื่นและฉันไม่ได้พูดถึงเรื่องนี้ - มันจะอยู่บนเซิร์ฟเวอร์เดียวกัน สิ่งที่อาจส่งผลกระทบต่อสิ่งนี้คือ: การมีการเชื่อมต่อฐานข้อมูลมากกว่าหนึ่งครั้งสำหรับรายงานมีผลต่อความเร็วของรายงานหรือไม่ การมี proc การรายงานในฐานข้อมูลแยกต่างหากจากข้อมูลจะป้องกันไม่ให้เราใช้มุมมองที่จัดทำดัชนีหรือไม่ คุณพบว่าการจัดการรายงานของคุณง่ายขึ้น / ยากขึ้นในฐานข้อมูลแยกต่างหาก โปรดแจ้งให้เราทราบว่าคุณคิดอย่างไร

2
การเปรียบเทียบแบบ case-insensitive ทำงานอย่างไร
ชนิดการเรียงข้อมูลเริ่มต้นใน SQL Server อนุญาตสำหรับการทำดัชนีกับสตริงที่ไม่คำนึงถึงขนาดตัวพิมพ์ แต่เคสของข้อมูลยังคงอยู่ มันใช้งานได้จริงอย่างไร? ฉันกำลังมองหาถั่วและโบลต์บิตและไบต์จริง ๆ หรือแหล่งข้อมูลที่ดีที่อธิบายรายละเอียด create table casetest (fruitnames nvarchar(50) not null); create unique index IX_fruitnames on casetest(fruitnames); insert into casetest values ('apples'); insert into casetest values ('Pears'); -- this insert fails insert into casetest values ('pears'); -- this yields 'Pears' as a result select * …

2
ไม่สามารถอัปเดต“ CO2” เป็น“ CO₂” ในแถวตาราง
รับตารางนี้: CREATE TABLE test ( id INT NOT NULL, description NVARCHAR(100) COLLATE Modern_Spanish_CI_AS NOT NULL ); INSERT INTO test (id, description) VALUES (1, 'CO2'); ฉันรู้ว่าฉันไม่สามารถแก้ไขปัญหาเกี่ยวกับการพิมพ์ได้: SELECT * FROM test WHERE id = 1; UPDATE test SET description = 'CO₂' WHERE id = 1; SELECT * FROM test WHERE id = …

3
ยกเว้นผู้ประกอบการ vs NOT IN
ตัวEXCEPTดำเนินการถูกนำมาใช้ใน SQL Server 2005 แต่ความแตกต่างระหว่างNOT INและEXCEPTคืออะไร มันทำเช่นเดียวกัน? ฉันต้องการคำอธิบายง่ายๆพร้อมตัวอย่าง

17
ฉันจะเปรียบเทียบสคีมาของฐานข้อมูลทั้งสองได้อย่างไร
มีวิธีการค้นหาความแตกต่างในสองฐานข้อมูล SQL Server (schema เท่านั้น) หนึ่งคือท้องถิ่นและที่สองคือที่เว็บไซต์ของลูกค้า เรากำลังประสบปัญหากับรายงานแบบคริสตัลที่เรียกใช้รายงานบางส่วนและบางรหัสไม่ทำงานและดูเหมือนว่าสคีมาไม่ตรงกัน ฉันสามารถรันคำสั่งเดียวกันบนฐานข้อมูลทั้งสองและเปรียบเทียบผลลัพธ์เพื่อบอกความแตกต่างได้หรือไม่

2
มุมมองระบบอ้างอิงใน SSDT?
ฉันได้นำเข้าฐานข้อมูลไปยัง SSDT ที่มีการอ้างอิงถึงมุมมองระบบ (โดยเฉพาะ sys.columns) ปัญหาคือว่าฉันได้รับคำเตือนเกี่ยวกับการอ้างอิงที่ยังไม่ได้แก้ไขเมื่อฉันสร้างโครงการ จากสิ่งที่ฉันเห็นในฟอรัม MSDN ดูเหมือนว่าอาจเป็นปัญหาที่ทราบ: http://social.msdn.microsoft.com/Forums/en-US/ssdsgetstarted/thread/5a7026bd-0602-42e6-a639- d73bed903c26 ตอนนี้ฉันรู้ว่าฉันสามารถปิดการเตือนหรือเพิกเฉยได้ แต่ไม่มีใครรู้วิธีการแก้ปัญหาที่เกิดขึ้นจริง? ขอบคุณ


5
มีแนวคิดของ "รวมไฟล์" ใน SQL Server หรือไม่?
ฉันมีชุดของสคริปต์ที่ต้องทำงานในลำดับที่แน่นอน ฉันต้องการสร้าง "ไฟล์หลัก" ซึ่งแสดงรายการไฟล์อื่นทั้งหมดและลำดับที่ถูกต้อง โดยทั่วไปชอบไฟล์รวมจาก C ++ หรือ ASP / VBScript
19 sql-server 

2
กุญแจต่างประเทศสามารถทำให้เกิดการหยุดชะงักและขัดขวางการอ่าน SNAPSHOT ได้หรือไม่?
นี่เป็นคำถามติดตามจาก: /programming/7684477/is-it-possible-to-set-transaction-isolation-level-snapshot-automatically ฉันยังคงมีสถานการณ์การหยุดชะงัก / หมดเวลาในโปรแกรมประยุกต์ ASP.NET READ_COMMITTED_SNAPSHOT ONเมื่อเรียกใช้รายงานขนาดใหญ่พร้อมกันถึงแม้ว่า ดังนั้นฉันมีสองคำถาม: ฉันจะตรวจสอบว่าภาพรวมธุรกรรมการแยกระดับการทำงานเป็นไปตามที่คาดไว้หรือไม่? ฉันสมมติว่าคีย์ต่างประเทศ (ในตารางของเว็บแอปพลิเคชันไปยังตารางรายงาน) มีหน้าที่รับผิดชอบการหยุดชะงัก ฉันพบบทความที่น่าสนใจนี้ : หมายเหตุ SQL Server จะได้รับการล็อกที่ใช้ร่วมกันเมื่อตรวจสอบคีย์ต่างประเทศแม้ว่าธุรกรรมกำลังใช้ snapshot ที่อ่านแล้ว (อ่านโดยใช้การกำหนดเวอร์ชันแถว) หรือระดับการแยกสแน็ปช็อต ระวังสิ่งนี้เมื่อตรวจสอบกราฟ deadlock จากทรานแซคชันเมื่อใช้ระดับการแยกทรานแซคชันเหล่านี้ หากคุณเห็นการล็อคที่ใช้ร่วมกันให้ตรวจสอบเพื่อดูว่าการล็อคนั้นเกิดขึ้นกับวัตถุที่อ้างอิงโดยคีย์ต่างประเทศหรือไม่ ฉันจะตรวจสอบได้อย่างไรว่า FK รับผิดชอบต่อสถานการณ์การหยุดชะงัก / หมดเวลาจริง ๆ หรือไม่นั่นหมายความว่าฉันสามารถลบกุญแจต่างประเทศเหล่านั้นเพื่อป้องกันการหยุดชะงัก (สิ่งที่จะเป็นความพยายามที่ยอมรับได้)? หมายเหตุ : ฉันแค่อ่านจากตารางที่ทำให้เกิดการหยุดชะงัก ความคิดใด ๆ ในหัวข้อนี้ชื่นชมอย่างมาก แก้ไข นี่คือการหยุดชะงักกราฟ บางทีใครบางคนอาจช่วยให้ฉันเข้าใจสิ่งที่ทำให้เกิดการหยุดชะงัก ดูเหมือนว่ามันจะเกิดขึ้นโดยไม่มีรายงานใด ๆ ที่ทำงานที่เกิดจากเว็บแอ็พพลิเคชันเท่านั้นเมื่อธุรกรรมสองรายการต้องการเขียนตารางเดียวกัน (หนึ่งการอัปเดตและหนึ่งการแทรกหนึ่งรายการ เหตุใดจึงมีการล็อกหน้าและวิธีเปิดใช้งานการล็อกแถวเท่านั้น? แทรก-SP …

2
ฉันควรใช้การเปรียบเทียบชุดใดในฮีบรูในพระคัมภีร์ไบเบิล?
ฉันควรใช้การเปรียบเทียบ SQL Server สำหรับภาษาฮีบรูในพระคัมภีร์ไบเบิลอย่างไร ฐานข้อมูลที่อยู่ระหว่างการพิจารณาจำเป็นต้องมีการกำกับกำกับ (เช่นเสียงสระ, เสียง, เสียงแหลม, ฯลฯ )

2
ข้อ จำกัด ค่าเริ่มต้นคุ้มค่าหรือไม่
ฉันมักจะออกแบบฐานข้อมูลตามกฎต่อไปนี้: ไม่มีใครอื่นนอกจาก db_owner และดูแลระบบสามารถเข้าถึงตารางฐานข้อมูล บทบาทของผู้ใช้จะถูกควบคุมที่ชั้นแอปพลิเคชัน ฉันมักจะใช้บทบาท db หนึ่งรายการเพื่อให้สิทธิ์เข้าถึงมุมมองโพรซีเดอร์และฟังก์ชันที่เก็บไว้ แต่ในบางกรณีฉันเพิ่มกฎที่สองเพื่อปกป้องโพรซีเดอร์ที่เก็บไว้บางส่วน ฉันใช้ TRIGGERS เพื่อตรวจสอบข้อมูลที่สำคัญในขั้นต้น CREATE TRIGGER <TriggerName> ON <MyTable> [BEFORE | AFTER] INSERT AS IF EXISTS (SELECT 1 FROM inserted WHERE Field1 <> <some_initial_value> OR Field2 <> <other_initial_value>) BEGIN UPDATE MyTable SET Field1 = <some_initial_value>, Field2 = <other_initial_value> ... END DML ดำเนินการโดยใช้กระบวนงานที่เก็บไว้: …

2
วิธีการปิดใช้งาน“ เวลาที่เสร็จสมบูรณ์: …” ในหน้าต่างข้อความเซิร์ฟเวอร์ SQL
ทุกคำถามที่ฉันเรียกใช้ใน SSMS ต่อท้ายข้อความที่น่ารำคาญ: "เวลาที่เสร็จสมบูรณ์: ... " ฉันจะปิดการใช้งานข้อความนั้นได้อย่างไร?

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