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

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

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

6
ภัยคุกคามความปลอดภัยใดที่บัญชี SA และชื่อบัญชีที่รู้จักอื่น ๆ ก่อให้เกิดความปลอดภัย?
ชื่อบัญชีที่รู้จักเช่น sa ก่อให้เกิดภัยคุกคามด้านความปลอดภัยต่อฐานข้อมูลหรือไม่? เมื่อใช้การรับรองความถูกต้องของ windows บน SQL Server มันกำหนดนโยบายรหัสผ่านเดียวกัน (หากถูกตั้งให้พูดการล็อคบัญชีหลังจาก 5 ครั้ง)

10
ย่อขนาดฐานข้อมูลให้ต่ำกว่าขนาดเริ่มต้น
ฉันมีฐานข้อมูล dev SQL Server 2005 ที่เป็นสำเนา 30GB เราได้ลบข้อมูลบางส่วนที่ไม่ต้องการใน dev ซึ่งนำพื้นที่ไฟล์ข้อมูลที่ใช้ไปถึง 20GB ดังนั้นเราจึงไม่ได้ใช้ประมาณ 33% ฉันต้องการเรียกคืนพื้นที่ซึ่งจะช่วยให้เรามีฐานข้อมูล dev ที่สองบนเซิร์ฟเวอร์ (ขึ้นอยู่กับรุ่นที่ตัดลง); อย่างไรก็ตามฉันไม่สามารถเรียกคืนพื้นที่ได้ฉันได้ทำสิ่งต่อไปนี้แล้ว: ขนาดเริ่มต้นของไฟล์SMS2_Dataคือ 30GB DBCC SHRINKFILE (N'SMS2_Data' , 0, TRUNCATEONLY) ติดตามโดย DBCC SHRINKFILE (N'SMS2_Data' , 19500) ไม่มีความสุข ฉันได้ลองทำสำเนาสำรองสร้างฐานข้อมูลใหม่ที่มีขนาดเริ่มต้นต่ำแล้วกู้คืนไม่มีความสุขเมื่อขนาดเริ่มต้นถูกเขียนทับ ได้ลองแล้ว: ALTER DATABASE SMS2HazSub MODIFY FILE (NAME = 'SMS2_Data', SIZE = 20000) ข้อผิดพลาดนี้บอกว่า: ไฟล์ MODIFY ล้มเหลว …

2
วิธีการป้องกัน Deadlocks ของคอลัมน์ที่แบ่งพาร์ติชันบน SELECT
ฉันมีตารางดัชนีคอลัมน์หลัก (CCI) สามตารางใน SQL Server 2016 CCI ทั้งหมดเหล่านี้อยู่ในรูปแบบการแบ่งพาร์ติชันเดียวกันโดยยึดตาม ID ผู้เช่า เมื่อเร็ว ๆ นี้และไม่สอดคล้องกันฉันได้รับการหยุดชะงักในงบเลือกง่าย ๆ จากการเข้าร่วมตารางเหล่านี้ ตัวอย่างแบบสอบถามที่ deadlocks: SELECT TOP 33 r.tenantid FROM Table_r r INNER JOIN Table_cm cm ON r.MyKey=cm.MyKey INNER JOIN Table_pe pe ON r.MyKey=pe.MyKey WHERE r.TenantId = 69 AND pe.TenantId = 69 AND cm.TenantId = 69 ข้อความผิดพลาด: ทรานแซคชัน …

1
คอลัมน์ที่กระจัดกระจายเวลาซีพียูและดัชนีที่กรอง
Sparsing เมื่อทำการทดสอบบางอย่างเกี่ยวกับคอลัมน์หร็อมแหร็มเช่นที่คุณทำมีความปราชัยประสิทธิภาพที่ฉันต้องการทราบสาเหตุโดยตรงของ DDL ฉันสร้างตารางที่เหมือนกันสองตารางโดยที่หนึ่งมี 4 คอลัมน์หร็อมแหร็มและอีกหนึ่งไม่มีคอลัมน์ที่กระจัดกระจาย --Non Sparse columns table & NC index CREATE TABLE dbo.nonsparse( ID INT IDENTITY(1,1) PRIMARY KEY NOT NULL, charval char(20) NULL, varcharval varchar(20) NULL, intval int NULL, bigintval bigint NULL ); CREATE INDEX IX_Nonsparse_intval_varcharval ON dbo.nonsparse(intval,varcharval) INCLUDE(bigintval,charval); -- sparse columns table & NC index CREATE …

1
ความยาวสูงสุด 8000 อักขระสำหรับ OPENQUERY กับเซิร์ฟเวอร์ที่เชื่อมโยง
ฉันมีคำถามที่ฉันพยายามเรียกใช้OPENQUERYบน SSRS / SQL Server 2014 แต่ฉันได้รับข้อผิดพลาด: สตริงอักขระที่ขึ้นต้นด้วย [... ] ยาวเกินไป ความยาวสูงสุดคือ 8000 มีวิธีแก้ไขข้อ จำกัด นี้ไหม? สำหรับการอ้างอิงฉันพยายามเรียกใช้แบบสอบถามจาก SSRS ผ่านเซิร์ฟเวอร์ MySQL ที่เชื่อมโยง

2
วิธีที่ดีกว่าสำหรับ“ LIKE หรือ LIKE หรือ LIKE หรือ LIKE หรือ LIKE”
ในคำถามนี้เขามีปัญหาเช่นเดียวกับฉัน ฉันต้องการบางสิ่งเช่น: select * from blablabla where product like '%rock%' or like '%paper%' or like '%scisor%' or like '%car%' or like '%pasta%' นี่น่าเกลียดและไม่ได้ใช้ดัชนี .. ในกรณีนี้นี่เป็นวิธีเดียวที่จะทำเช่นนี้ (เพื่อเลือกหลายคำภายในสตริง) หรือฉันควรใช้ FULLTEXT? ตามที่ฉันเข้าใจด้วยข้อความเต็มฉันสามารถเลือกหลายคำภายในสตริง คำถามนี้พูดถึงเกี่ยวกับข้อความเต็มเช่นกัน

2
แยกธงกับตาราง
ฉันกำลังออกแบบสารบัญซึ่งอาจมีหลายสิบล้านระเบียน บางรายการจะไม่สามารถใช้งานได้จนกว่าพวกเขาจะ "อนุมัติ" โดยผู้ดูแลระบบ โดย "ใช้" ฉันหมายความว่ารายการดังกล่าวจะไม่ถูกอ้างอิงในตารางอื่นจนกว่าพวกเขาจะ "อนุมัติ" มากถึง 50% ของรายการอาจ "ไม่ผ่านการอนุมัติ" ในเวลาใดก็ได้ บันทึกอาจกลายเป็น "อนุมัติ" แต่ไม่ใช่ในทางกลับกัน ฉันพิจารณาตัวเลือกการออกแบบสองตัว: ธงบิต ตารางแยกรายการ "ที่ไม่ผ่านการอนุมัติ" - เมื่อรายการได้รับการอนุมัติจะถูกย้ายไปที่ตาราง "ปกติ" (การต่ออายุ ID ของรายการไม่ใช่ปัญหา) ฉันคิดว่าตัวเลือกที่สองนั้นดีกว่ามาก การตั้งค่าสถานะบิตใช้เวลาเพียงไบต์ต่อแถวดังนั้นจึงไม่มีปัญหา แต่ถ้าเรามีบันทึกที่ได้รับการอนุมัติจำนวนหนึ่งล้านไฟล์และยังไม่ได้รับการอนุมัติในตารางเดียวกัน - เวลาสแกนจะเพิ่มขึ้นสำหรับการดำเนินการด้วยระเบียนที่ได้รับการอนุมัติ คำถามคือฉันควรพิจารณาตัวเลือกแรก (ตั้งค่าสถานะบิต) แทนหรือไม่ มีประโยชน์ในสถานการณ์ที่อธิบายหรือไม่?

4
คำสั่ง DELETE ขัดแย้งกับข้อ จำกัด การอ้างอิง
สถานการณ์ของฉันเป็นดังนี้: ตาราง STOCK_ARTICLES: ID *[PK]* OTHER_DB_ID ITEM_NAME ตาราง LOCATION: ID *[PK]* LOCATION_NAME ตาราง WORK_PLACE: ID *[PK]* WORKPLACE_NAME ตาราง INVENTORY_ITEMS: ID *[PK]* ITEM_NAME STOCK_ARTICLE *[FK]* LOCATION *[FK]* WORK_PLACE *[FK]* 3 FKs ใน INVENTORY_ITEMS อ้างอิงคอลัมน์ "ID" ในตารางอื่น ๆ ที่เกี่ยวข้องอย่างชัดเจน ตารางที่เกี่ยวข้องที่นี่คือ STOCK_ARTICLE และ INVENTORY_ITEMS ขณะนี้มีงาน SQL ประกอบด้วยหลายขั้นตอน (สคริปต์ SQL) ที่ "ประสาน" ฐานข้อมูลที่กล่าวถึงข้างต้นกับฐานข้อมูลอื่น (OTHER_DB) …

2
เลือกแถวที่ตรงตามเงื่อนไขสำหรับกลุ่ม (ไม่มีตารางชั่วคราว)
มีตารางที่มี 3 คอลัมน์: ID category flag 1 A 1 2 A 0 3 A 0 4 B 0 5 C 0 ฉันต้องการเลือกแถวทั้งหมดที่มีflag = 1อย่างน้อยหนึ่งครั้งต่อหมวดหมู่ ผลลัพธ์ที่คาดหวัง: ID category flag 1 A 1 2 A 0 3 A 0 สามารถแก้ไขได้โดยใช้ตารางชั่วคราวเช่นนี้ select ID into #tempTable from someTable where flag = 1 select * …

5
ตัวเลขเฉพาะในช่วงที่กำหนด
เมื่อเร็ว ๆ นี้ฉันได้รับมอบหมายให้พิมพ์หมายเลขเฉพาะทั้งหมด (1-100) ฉันล้มเหลวอย่างมากที่นั่น รหัสของฉัน: Create Procedure PrintPrimeNumbers @startnum int, @endnum int AS BEGIN Declare @a INT; Declare @i INT = 1 ( Select a = @startnum / 2; WHILE @i<@a BEGIN @startnum%(@a-@i) i=i+1; ) END แม้ว่าฉันจะลงเอยโดยไม่ทำให้เสร็จ แต่ฉันก็สงสัยว่าเป็นไปได้หรือไม่ที่จะทำโปรแกรมเช่นนั้นบนฐานข้อมูล (SQL Server 2008 R2) ถ้าใช่มันจะจบได้อย่างไร

2
โปรดอธิบายความแตกต่างระหว่างการบีบอัดแถวและหน้า
ฉันกำลังพยายามพิจารณาว่าจะใช้แบบไหนและเวลาใดเหมาะสมในการใช้การบีบอัด ฉันโพสต์คำถามนี้เพื่อรับข้อมูลเชิงลึกจากชุมชนนี้ ฉันได้อ่านบทความหลายฉบับ แต่ต้องการมีสถานที่ซึ่งระบุไว้ในผู้ดูแลฐานข้อมูล

1
ความแตกต่างระหว่างการค้นหาดัชนีแบบคลัสเตอร์และการค้นหาแบบไม่จัดกลุ่มดัชนี
อะไรคือความแตกต่างระหว่างการค้นหาดัชนีแบบกลุ่ม (CI) และการค้นหาแบบไม่จัดกลุ่มดัชนี (NCI) มีประสิทธิภาพดีกว่าอีกหรือไม่ เหตุผลที่ฉันถามสิ่งนี้เพราะฉันมีตารางที่มี 50 ล้านแถวและ 150 คอลัมน์ มันมีชื่อคอลัมน์ที่IDกำหนดไว้เป็นดัชนีคลัสเตอร์ มี NCI อีกหนึ่งตัวที่มีรหัสคีย์ดัชนีและincludeคอลัมน์เจ็ดคอลัมน์ที่เหมือนกัน สำหรับฉันแล้วดูเหมือนว่าดัชนี NC ซ้ำกันที่นี่และสามารถทิ้งได้อย่างปลอดภัย ดังนั้นฉันต้องการความคิดเห็น / คำแนะนำจากผู้เชี่ยวชาญหากสามารถทิ้งไว้อย่างปลอดภัยหรือควรรักษาไว้เหมือนเดิม?

1
วิธีการลดการกระจายตัวของฮีปใน SQL Server
ฉันเพิ่งพบว่าหนึ่งตารางกองมีการกระจายตัวมากกว่า 70% ดังนั้นฉันตัดสินใจที่จะทำ ALTER TABLE dbo.myTable REBUILD ตลกพอหลังจากนั้นฉันแยกส่วน 20% ไม่มีการเขียนบนโต๊ะนั้นตั้งแต่นั้นเป็นต้นมา ดังนั้นฉันจึงตัดสินใจที่จะสร้างใหม่อีกครั้ง หลังจากครั้งที่ 2 หมวกตารางการกระจายตัว 50% ดังนั้นยิ่ง! ฉันไม่เข้าใจจริงๆว่ามันจะเกิดอะไรขึ้น ...

1
SQLCLR ชนิดรอในการตรวจสอบกิจกรรมภายใน SQL Server Management Studio (SSMS) คืออะไร
เมื่อฉันตรวจสอบเซิร์ฟเวอร์ SQL Prod ของฉันทุกครั้งที่ฉันเปิดการตรวจสอบกิจกรรมฉันจะเห็นSQLCLRรายการแรกในส่วนรอทรัพยากรในการตรวจสอบกิจกรรม มันมีจำนวนสูงเสมอ มีSQLCLRไว้เพื่ออะไร มันจะไม่ดีสำหรับเซิร์ฟเวอร์ที่SQLCLRมีจำนวนรอทรัพยากรสูงในการตรวจสอบกิจกรรม?

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