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

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

1
ความหมายของความปลอดภัยของ sp_executesql คืออะไร
โดยค่าเริ่มต้นใน SQL Server ที่[public]มีบทบาทสิทธิEXECUTEsp_executesql แต่ผมได้รับมรดกเซิร์ฟเวอร์ฐานข้อมูลที่ DBA ก่อนหน้านี้ได้มีการเพิกถอนขวาบนEXECUTEsp_executesql ในฐานะวิธีแก้ปัญหาชั่วคราวฉันได้ให้EXECUTEสิทธิsp_executesqlในการใช้งานตามความจำเป็น (ผ่านบทบาทในฐานข้อมูลหลัก) แต่นี่เป็นจุดเริ่มต้นของความเจ็บปวดในการบำรุงรักษา หากฉันมอบEXECUTEคืนสู่สาธารณะมีผลกระทบใดที่ฉันต้องระวังหรือไม่?

1
ทำไมปัจจัยการเติมใน SQL Server เริ่มต้นที่ 0 (100%)
ฉันเข้าใจปัจจัยการเติมหน้าและโครงสร้างดัชนีและฉันเข้าใจว่าทำไมปัจจัยการเติมเต็ม 100% จึงเป็นแนวปฏิบัติที่ดีที่สุดที่หายาก เหตุใดจึงใช้ค่าเริ่มต้นเป็น 0 (หรือ 100%) เป็นค่าเริ่มต้น ทำไมไม่ 90 หรือ 95 มีบางอย่างที่ฉันขาดหายไปหรือไม่?

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

2
มีวิธีอนุญาตให้ผู้ใช้เข้าถึงเฉพาะมุมมองที่ไม่ใช่ระบบทั้งหมดของฐานข้อมูลหรือไม่?
ใน SQL Server ฉันมีผู้ใช้ในฐานข้อมูลเฉพาะและฉันถูกขอให้พวกเขาเข้าถึงมุมมองที่ไม่ใช่ระบบทั้งหมดของฐานข้อมูลเท่านั้น ฉันเชื่อว่าสามารถทำได้โดยการแก้ไข Securables ของการดูประเภทและอนุญาตให้เลือกในแต่ละมุมมอง แต่มีหลายมุมมองมากมาย มีวิธีที่มีประสิทธิภาพมากกว่านี้หรือไม่?

3
วิธีการระบุลำดับคอลัมน์ในตาราง
ฉันต้องการรายการคอลัมน์จากตารางตามลำดับคำจำกัดความของตาราง: select * from syscolumns where id = object_id('MyTable') --order by colid โดยการตรวจสอบsyscolumnsตารางสองคอลัมน์มองที่เกี่ยวข้อง: และcolid บทความ MSDN ใน syscolumnsพูดว่า:colorder colid | smallint | Column or parameter ID. colorder | smallint | Identified for informational purposes only. | Not supported. Future compatibility is not guaranteed. ฉันพยายามวิ่ง select * from syscolumns where colorder …

2
ทำไม Microsoft ถึงฆ่า“ English Query” บน SQL Server
ได้รับความนิยมของผู้ใช้ภาษาธรรมชาติอินเตอร์เฟซสิริซึ่งได้มาจากแอปเปิ้ล $ 200 ล้านผมเคยสงสัยว่าถ้าใครรู้ว่าทำไมไมโครซอฟท์ถูกฆ่าตาย"แบบสอบถามภาษาอังกฤษ" ใน SQL Server

2
มีการรวบรวมสคริปต์ PowerShell ใด ๆ ที่ช่วยงานบำรุงรักษา SQL Server หรือไม่
ฉันกำลังศึกษา PowerShell และฉันได้รับอย่างช้า ๆ ในการทำงาน DBA แบบวันต่อวัน จนถึงตอนนี้ฉันได้เห็นสคริปต์ PowerShell ที่ไม่ได้เชื่อมต่อสำหรับกิจกรรมการดูแลระบบที่แตกต่างกันจำนวนมาก สิ่งที่ฉันต้องการทราบคือมีคอลเลกชันหรือพื้นที่เก็บข้อมูลสคริปต์อย่างเป็นทางการ (หรือที่รู้จัก) PowerShell ที่ผู้คนมักจะไปที่สคริปต์ SQL Server PowerShell สำหรับกิจกรรม DBA ทั่วไป (เช่นสคริปต์ T-SQL ของ Ola Hallengren)

1
การเพิ่ม SPARSE ทำให้ตารางใหญ่ขึ้นมาก
ฉันมีตารางบันทึกทั่วไปแถวประมาณ 5 เมตร มีฟิลด์ "พิมพ์อย่างยิ่ง" ที่จัดเก็บประเภทเหตุการณ์และมีคอลัมน์ "พิมพ์จำนวนมาก" ที่ประกอบด้วยข้อมูลที่เกี่ยวข้องกับเหตุการณ์ นั่นคือความหมายของคอลัมน์ "ที่พิมพ์แบบแพ้ ๆ " นั้นขึ้นอยู่กับประเภทของเหตุการณ์ คอลัมน์เหล่านี้ถูกกำหนดเป็น: USER_CHAR1 nvarchar(150) null, USER_CHAR2 nvarchar(150) null, USER_CHAR3 nvarchar(150) null, USER_CHAR4 nvarchar(150) null, USER_CHAR5 nvarchar(150) null, USER_INTEGER1 int null, USER_INTEGER2 int null, USER_INTEGER3 int null, USER_INTEGER4 int null, USER_INTEGER5 int null, USER_FLAG1 bit null, USER_FLAG2 bit null, …

2
ALTER INDEX และ DBCC DBREINDEX แตกต่างกันอย่างไร
เป็นเพียงข้อแตกต่างระหว่าง ALTER INDEX [index_name] on [object_name] REBUILD with (ONLINE=OFF, FILLFACTOR=90) และ DBCC DBREINDEX([dbname], 90) เพียงว่าคำสั่ง DBCC จะทำดัชนีดัชนีทั้งหมดใหม่บนตารางทั้งหมดในฐานข้อมูลหรือไม่

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

5
ใช้งานเกิน / ใช้งาน schema อย่างถูกต้อง?
ต้องถามคำถามนี้ในStackoverflowฉันสงสัยว่าสิ่งที่ฉันทำไปนั้นถูกต้องหรือเป็นแนวปฏิบัติที่ดีที่สุด โดยทั่วไปวัตถุทุกชิ้นที่ฉันสร้างจะเข้าสู่สคีมาพร้อมกับชื่อสคีมาที่สะท้อนถึงการใช้งาน ตัวอย่างเช่นฉันมี schemas AuditและAdmin(ท่ามกลางคนอื่น ๆ ) dboนี้ในการเปิดใบไม่มีวัตถุใน ตกลงไหม มีอะไรอีกบ้างที่ฉันต้องทำ?

4
SQL 2008 R2 สร้างผู้ใช้ / สคีมาเมื่อผู้ใช้ Windows สร้างตาราง
เราเพิ่มการเข้าสู่ระบบเซิร์ฟเวอร์และผู้ใช้ฐานข้อมูลที่จับคู่ Windows Group กับอินสแตนซ์ SQL 2008 R2 โดยใช้สคริปต์ต่อไปนี้โดยเปลี่ยนชื่อเป็น anonymity: USE master go CREATE LOGIN [DOMAIN\AppUsers] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english] go USE AppDb go CREATE USER [DOMAIN\AppUsers] FOR LOGIN [DOMAIN\AppUsers] go EXEC sp_addrolemember N'db_owner', N'DOMAIN\AppUsers' go เมื่อบัญชี DOMAIN \ User1 เข้าสู่แอป User1 ทำการสืบค้นตารางใน dbo schema ได้ดีเนื่องจาก User1 เป็นสมาชิกของ DOMAIN \ …

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

3
ฉันจะตัดทอนบันทึกธุรกรรมในฐานข้อมูล SQL Server 2008 ได้อย่างไร
ฉันจะตัดทอนบันทึกธุรกรรมในฐานข้อมูล SQL Server 2008 ได้อย่างไร อะไรคือวิธีที่ดีที่สุดที่เป็นไปได้? ฉันลองสิ่งนี้จากบล็อกดังนี้: 1) จากฐานข้อมูลการตั้งค่าไปจนถึงการกู้คืนอย่างง่ายการลดขนาดไฟล์และตั้งค่าอีกครั้งในการกู้คืนแบบเต็มคุณจะสูญเสียข้อมูลบันทึกที่มีค่าของคุณและจะไม่สามารถกู้คืนจุดได้ทันเวลา ไม่เพียงแค่นั้นคุณจะไม่สามารถใช้ไฟล์บันทึกที่ตามมาได้อีกด้วย 2) ลดขนาดไฟล์ฐานข้อมูลหรือฐานข้อมูลเพิ่มการกระจายตัว มีหลายสิ่งที่คุณสามารถทำได้ ก่อนอื่นให้เริ่มต้นการสำรองข้อมูลบันทึกอย่างเหมาะสมโดยใช้คำสั่งต่อไปนี้แทนการตัดทอนข้อมูลเหล่านั้นและทำให้ข้อมูลสูญหายบ่อยครั้ง BACKUP LOG [TestDb] TO DISK = N'C:\Backup\TestDb.bak' GO ลบรหัสของการหดไฟล์ หากคุณทำการสำรองข้อมูลแฟ้มบันทึกที่เหมาะสมโดยปกติแล้วไฟล์บันทึกของคุณ (โดยปกติจะยกเว้นกรณีพิเศษ) จะไม่ใหญ่มาก

3
SQL Server - ระดับการแยกใดสำหรับคำสั่ง select ที่ไม่ได้บล็อก?
ฉันมีธุรกรรมที่ใช้เวลานาน (เรียกว่า, T1) ที่ดำเนินการลบปรับปรุงและแทรกบางอย่างในตารางใน SQL Server 2008 R2 ในเวลาเดียวกันกระบวนการอื่นเรียกใช้คำสั่งที่เลือกจากตารางนี้เป็นระยะ ภายใต้การตั้งค่าการแยกเริ่มต้น (READ COMMITTED ฉันคิดว่า?) T1 จะบล็อกคำสั่งที่เลือกไม่ให้ทำงานจนกว่าธุรกรรมจะทำหน้าที่หรือย้อนกลับ สิ่งที่ฉันต้องการเห็นคือคำสั่ง select เพื่อทำงานกับข้อมูลที่สอดคล้องกันแม้ในขณะที่ธุรกรรมกำลังดำเนินการอยู่ ฉันเชื่อว่าการแยก SNAPSHOT สามารถช่วยได้ แต่ไม่แน่ใจว่าฉันไปในทิศทางที่ถูกต้องหรือไม่ นี่จะเป็นระดับการแยกที่ดีที่สุดสำหรับแอปพลิเคชันนี้หรือไม่ ประการที่สองฉันไม่มีการควบคุมกระบวนการที่เรียกใช้คำสั่ง select แต่ฉันมีการควบคุมแอปพลิเคชัน. NET ที่เรียก T1 การเปลี่ยนแปลงระดับการแยกใด ๆ จะต้องการทั้งข้อความสั่งการเลือกและ T1 หรือว่าจะเพียงพอที่จะทำเครื่องหมายว่า T1 มีระดับการแยกต่างกันหรือไม่

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