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

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

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 …

2
จำกัด สิทธิ์การเชื่อมต่อบน SQL Server
ฉันมีแอพที่จะปรับใช้ในการผลิตที่ใช้ความปลอดภัย 'ระบบเกียรติ' นั่นคือผู้ใช้ทั้งหมดเชื่อมต่อกับฐานข้อมูลโดยใช้ข้อมูลประจำตัวผู้ใช้ SQL / passwd และแอปจัดการสิทธิ์เอง ส่วนหลังไม่ได้รบกวนฉันเท่าที่ความจริงที่ว่าวัตถุการเชื่อมต่อมีข้อมูลประจำตัวที่ฝังตัวและสามารถคัดลอกได้อย่างอิสระ ฉันพยายามหาวิธี จำกัด การเชื่อมต่อกับชุดลูกค้าที่ จำกัด มากขึ้น ฉันสามารถสร้างกฎไฟร์วอลล์เพื่อ จำกัด โดย IP แน่นอน มีวิธีใดบ้างในการ 'เข้าสู่ระบบ SQL ล่วงหน้า' โดยใช้บัญชี Machine หรือการเป็นสมาชิกของโดเมน?

1
คำเตือนในแผนแบบสอบถาม“ Cardinality Estimate”
create table T(ID int identity primary key) insert into T default values insert into T default values go select cast(ID as varchar(10)) as ID from T where ID = 1 แบบสอบถามด้านบนมีคำเตือนในแผนแบบสอบถาม <Warnings> <PlanAffectingConvert ConvertIssue="Cardinality Estimate" Expression="CONVERT(varchar(10),[xx].[dbo].[T].[ID],0)" /> </Warnings> ทำไมถึงมีคำเตือน? นักแสดงในรายการฟิลด์จะมีผลต่อการประมาณค่า cardinality อย่างไร


1
สิทธิ์ของ SQL Server ในการสร้างเรียกคืนลบฐานข้อมูลบางอย่างเท่านั้น
บน MS SQL Server 2008 R2 ฉันต้องมีผู้ใช้ที่สามารถสร้าง, เรียกคืน, DBCC CHECKDB แล้วปล่อยฐานข้อมูล แต่เขาจะต้องไม่สามารถเข้าถึงหรือลบฐานข้อมูลที่ระบุบนเซิร์ฟเวอร์ (เหตุผลด้านความปลอดภัย) เป็นไปได้หรือไม่

2
การหยุดชะงักจากการล็อคบนตารางชั่วคราวเดียวกันในกระบวนการที่แตกต่างกัน
ฉันได้พบการหยุดชะงักที่ดูเหมือนจะแสดงสิ่งที่ฉันคิดว่าเป็นไปไม่ได้ มีสองกระบวนการที่เกี่ยวข้องในการหยุดชะงัก: 1. กระบวนการ 8cf948 SPID 63 ดำเนินการ ALTER TABLE บนตารางชั่วคราว #PB_Cost_Excp_Process_Invoices_Work เป็นเจ้าของล็อค IX บนโต๊ะ #PB_Cost_Excp_Process_Invoices_Work ด้วย ID วัตถุ 455743580 2. กระบวนการ 4cb3708 SPID 72 ดำเนินการใน UPDATE บนตารางชั่วคราว #PB_Cost_Excp_Process_Invoices_Work ซึ่งควรจะเป็นสำเนาเฉพาะของตาราง เป็นเจ้าของล็อค Sch-M ใน #PB_Cost_Excp_Process_Invoices_Work ด้วย ID วัตถุเดียวกัน 455743580 ! นี่น่าจะเป็นไปไม่ได้ ฉันพลาดอะไรไปรึเปล่า? #Temporary ตารางได้รับการใช้ซ้ำระหว่าง SPID ทั้งสองนี้จริง ๆ หรือไม่ นี่คือบน SQL Server …

5
วิธีที่เร็วที่สุดในการส่งออกตารางไปยังไฟล์ข้อความคืออะไร
ฉันจะมีฐานข้อมูล SQL Server 2012 และตารางที่มี 3 ล้านแถวและอาจ 50 คอลัมน์ สิ่งใดจะเป็นวิธีที่เร็วที่สุดสำหรับกระบวนการเบื้องหลัง. net (อาจออกคำสั่ง SQL หรือ Powershell) เพื่อส่งออกไปยังไฟล์ข้อความหนึ่งบรรทัดสำหรับแต่ละแถวของข้อมูล? กระบวนการ. net ควรทราบเมื่อการส่งออกเสร็จสิ้นหรือมีข้อผิดพลาดใด ๆ ประเภทข้อมูลจะทั้งหมดหรือintnvarchar ฉันสมมติว่ารหัส C # บริสุทธิ์โดยใช้ ado.net เพื่อดำเนินการselect *คำสั่งและวนซ้ำไปที่ชุดข้อมูลและการเขียนไปยังไฟล์สำหรับแต่ละระเบียนจะช้าและไม่มีวิธีใดที่ฉันสามารถทำให้ขนานกันได้ เป็นการดีที่การส่งออกจะไปยังโฟลเดอร์เครือข่ายระยะไกลที่ใช้ร่วมกันไม่ใช่โฟลเดอร์บนเครื่อง SQL Server SQL Server จะเป็นคลัสเตอร์ HA SSIS เหมาะสมกับสิ่งนี้มากกว่าหรือไม่ไม่จำเป็นต้องแปลงข้อมูล กระบวนการ. Net จะทำงานบน Machine A, SQL Server บน Machine B และปลายทางไฟล์ที่ดีที่สุดคือการแชร์เครือข่าย ทางเลือกหนึ่งคือเซิร์ฟเวอร์ SQL …

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

3
การตั้งค่า CLR กลางที่เก็บ CLR โพรซีเดอร์ / ฟังก์ชันที่เก็บไลบรารีสำหรับ procs ที่จัดเก็บภายในในฐานข้อมูลอื่น ๆ ที่จะใช้?
ฉันต้องการใช้รหัสที่ฉันพัฒนาใน C # CLR เพื่อใช้ในฐานข้อมูลทั้งหมดในระบบเพื่อให้ฉันไม่ต้องตั้งค่าให้เชื่อถือได้และเปิด CLR และเก็บรหัสเดียวกันไว้ในแต่ละอัน . มีวิธีที่ดีที่สุดในการทำเช่นนี้จากมุมมองการบริหารและความปลอดภัย? ฟังก์ชัน CLR นั้นพื้นฐานมากเช่นตัวแบ่งสตริง, การตรวจสอบความถูกต้องของอีเมล, url en / decode, base64 และอื่น ๆ ฉันต้องการเฉพาะ dbo schema ในแต่ละฐานข้อมูลเพื่อให้สามารถเข้าถึงฟังก์ชันได้ มีวิธีง่าย ๆ ในการทำเช่นนี้? นอกจากนี้ฉันยังไม่ชัดเจนว่า CLR dll ถูกฝังอยู่หรือไม่และถ้าฉันย้ายฐานข้อมูลมันจะแท็กตามหรือฉันต้องย้าย dll ด้วยเช่นกัน ขอบคุณ

3
ฉันควรโอนย้ายข้อมูลโดยใช้ detach / copy / attach หรือผ่าน backup-restore-replay หรือไม่
ฉันกำลังจะเริ่มดำเนินการเกี่ยวกับการย้ายไฟล์ฐานข้อมูลไปยัง SAN ใหม่ (จาก SAN เก่า) อับดุลฉันมีสองตัวเลือกในการใช้งานนี้ (1) แนะนำให้ฉันดูระดับความพยายามในการกู้คืนการสำรองข้อมูลเต็มรูปแบบไปยังฐานข้อมูลใหม่บนเซิร์ฟเวอร์ อย่างไรก็ตาม (2) แผนดั้งเดิมของฉันคือการคัดลอกไฟล์จาก SAN เก่าไปยัง SAN ใหม่โดยการแยกออกแล้วติดตั้งฐานข้อมูลอีกครั้ง ไส้ของฉันบอกฉันว่าฉันอยากถอดคัดลอกและติดเนื่องจากดูเหมือนว่าจะไม่ปลอดภัยมากกว่า แต่นั่นอาจเป็นความไร้เดียงสาของฉัน ฉันไม่ต้องการที่จะพลาดการทำธุรกรรมหรือ "ทำลายบางอย่าง" ในกระบวนการเปลี่ยนชื่อฐานข้อมูล ฉันเดาคำถามของฉันหรือไม่ว่าฉันมีเหตุผลในความสงสัยของตัวเลือก BACKUP-RESTORE-Replay และข้อดีหรือความเสี่ยงอื่นของตัวเลือกนั้นคืออะไร

1
เมื่อใดที่คุณควรระบุ PAD_INDEX
ดังนั้นคุณสามารถใช้FILLFACTORเพื่อเว้นช่องว่างในหน้าดัชนีลีฟ การระบุPAD_INDEXยังเว้นช่องว่างในโหนดกลาง สถานการณ์ใดที่คุณควรระบุPAD_INDEXและมีประโยชน์อะไรบ้างต่อดัชนี

1
ประสิทธิภาพของ SQL Server ไม่ดีเมื่อสตูดิโอจัดการปิด
ฉันสังเกตเห็นพฤติกรรมแปลก ๆ ของ SQL Server 2008 r2 express: โดยทั่วไปแล้วเวลาในการดำเนินการค้นหาของฉันคือ ~ 650ms แต่ถ้าฉันเปิด Management Studio และเรียกใช้แบบสอบถามอย่างง่าย ๆ (เช่นSELECT * FROM Something) เวลาดำเนินการจะกลายเป็น ~ 40ms หากฉันปิด Studio การจัดการค่านี้จะกลับสู่ปกติ ~ 650ms และไม่ว่าจะดำเนินการสืบค้นที่ใด: จาก Management Studio หรือแอปพลิเคชันของฉัน (ใช้ ADO.Net) การตั้งค่า ARITHABORT ไม่มีผลใด ๆ ทำไมสิ่งนี้จึงเกิดขึ้น
17 sql-server  ssms 

4
แถว 'จริง' ไม่ถูกต้องนับเป็นแผนขนาน
นี่เป็นคำถามเชิงวิชาการล้วนๆที่มันไม่ก่อให้เกิดปัญหาและฉันแค่สนใจที่จะฟังคำอธิบายเกี่ยวกับพฤติกรรม รับปัญหามาตรฐาน Itzik Ben-Gan ตารางเข้าร่วม CTE นับรวม: USE [master] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[TallyTable] ( @N INT ) RETURNS TABLE WITH SCHEMABINDING AS RETURN ( WITH E1(N) AS ( SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 …
17 sql-server 


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