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

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

5
เพจจิ้งทำงานกับ ROW_NUMBER ใน SQL Server ได้อย่างไร
ฉันมีEmployeeตารางที่มีหนึ่งล้านบันทึก ฉันได้ติดตาม SQL สำหรับข้อมูลการเพจในเว็บแอปพลิเคชัน มันทำงานได้ดี อย่างไรก็ตามสิ่งที่ฉันเห็นว่าเป็นปัญหาคือ - ตารางที่ได้รับtblEmployeeจะเลือกระเบียนทั้งหมดในEmployeeตาราง (เพื่อสร้าง MyRowNumberค่า) ฉันคิดว่านี่เป็นสาเหตุของการเลือกระเบียนทั้งหมดในEmployeeตาราง มันใช้งานได้จริงเหรอ? หรือ SQL Server นั้นได้รับการปรับแต่งให้เลือกเฉพาะ 5 ระเบียนจากEmployeeตารางต้นฉบับด้วยหรือไม่ DECLARE @Index INT; DECLARE @PageSize INT; SET @Index = 3; SET @PageSize = 5; SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY EmpID asc) as MyRowNumber,* FROM Employee) tblEmployee WHERE MyRowNumber BETWEEN …


1
เป็นไปได้หรือไม่ที่จะบันทึกค่าพารามิเตอร์ขาเข้าในการเรียกโพรซีเดอร์ขณะติดตามใน SQL Server Profiler?
ใช้ SQL Server Profiler (ฉันใช้ SQL Server 2012) ฉันพยายามสร้างการติดตามที่มีประโยชน์ที่แสดงค่าพารามิเตอร์ไม่ใช่เฉพาะ SQL ที่มีชื่อตัวแปร ขั้นตอนที่เก็บไว้จะนำข้อมูลคลังมารวมเพื่อสร้างผลลัพธ์ที่มีค่าอย่างยิ่งและฉันพยายามบันทึกพฤติกรรมที่มีอยู่แล้วดังนั้นฉันจึงสามารถทดสอบหน่วยกำหนดมันอย่างชัดเจนและกำหนดให้เป็นสิ่งที่มีสติ ฉันมีโพรซีเดอร์ที่เก็บไว้ซึ่งดำเนินการโพรซีเดอร์ย่อย 54 พารามิเตอร์ในลูปที่โพรซีเดอร์ที่เก็บสร้างเคอร์เซอร์จากนั้นก็ทำลูปสักครู่ นี่คือมุมมองที่เรียบง่าย: CREATE PROCEDURE [dbo].[OuterProcedure] ( @ProductCode varchar(8), -- 41 more parameters omitted ) AS SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SET NOCOUNT ON DECLARE @AboutFourHundredLocalvariables -- omit about 400 local variable declarations. -- OMIT ABOUT …

2
ทำความเข้าใจกับการเข้ารหัสและสำรองข้อมูล MS SQL Server
ดังนั้นฉันจึงถามในการแชทเกี่ยวกับความปลอดภัยของไฟล์สำรองของ SQL Server ฉันบอกว่าหากผู้โจมตีสามารถเข้าถึงไฟล์. bak ที่ไม่ได้เข้ารหัสซึ่งพวกเขาสามารถเข้าถึงข้อมูลได้ ดังนั้นให้ดูที่สถานการณ์นี้: OPEN SYMMETRIC KEY MySymetricKey DECRYPTION BY CERTIFICATE MyCertificate สังเกตุ - ไม่มีรหัสผ่านที่นี่ แล้วเราเข้ารหัสตารางของเราโดย: UPDATE tbl1 SET namePAss = ENCRYPTBYKEY(KEY_GUID('MySymetricKey'),name) GO ตอนนี้สมมติว่าแฮ็กเกอร์ได้รับbakไฟล์ของฉัน สิ่งที่เขาต้องทำเพื่อดูข้อมูล (ในคอมพิวเตอร์ & เซิร์ฟเวอร์ของเขาเอง) คือ: SELECT convert( NVARCHAR(max), decryptbykey(namePAss)) FROM tbl1 เขาจะยังสามารถเข้าถึงข้อมูลได้หรือไม่

2
วิธีที่ง่ายที่สุดในการย้ายข้อมูลจาก Oracle ไปยัง SQL Server คืออะไร
หนึ่งในผลิตภัณฑ์ของเรารองรับทั้ง Oracle และ SQL Server เป็นแบ็กเอนด์ฐานข้อมูล เรามีลูกค้าที่ต้องการเปลี่ยนจากแบ็กเอนด์ Oracle เป็น Microsoft SQL Server ซึ่งไม่ใช่การเปลี่ยนแปลงตามปกติสำหรับเรา วิธีที่ง่ายที่สุดในการรับข้อมูลทั้งหมดจาก Oracle Schema ทั้งหมดไปยังฐานข้อมูล SQL Server คืออะไร สคีมามีเพียงตารางเก่าธรรมดาและไม่มีอะไรแฟนซี อาจมีหนึ่งหรือสองกระบวนงานที่เก็บไว้ซึ่งเราจะไม่มีปัญหาในการโยกย้ายด้วยมือ ฉันสามารถใช้ SQLDeveloper ของ Oracle เพื่อส่งออกข้อมูลตารางCREATEและINSERTคำสั่ง แต่สิ่งเหล่านี้จะไม่ตรงกับไวยากรณ์ที่ใช้บน SQL Server และฉันไม่ได้รอที่จะแก้ไขข้อผิดพลาดทางไวยากรณ์ด้วยตนเอง

3
ปฏิเสธการเข้าถึง schema ของข้อมูลใน SQL Server
ฉันกำลังมองหาวิธีที่ดีที่สุดในการปิดการเข้าถึงsys.tables/ Information Schemaสำหรับผู้ใช้ / กลุ่มใน SQL Server ฉันพบกระทู้นี้ตั้งแต่ปี 2008 มันแสดงวิธีการปฏิเสธการเข้าถึงโดย[sys].[something]ชอบ: DENY SELECT ON [sys].[columns] TO DenySystemTableSelectRole GO DENY SELECT ON [sys].[tables] TO DenySystemTableSelectRole GO DENY SELECT ON [sys].[syscolumns] TO DenySystemTableSelectRole GO DENY SELECT ON [sys].[sysobjects] TO DenySystemTableSelectRole GO แต่ไม่มีวิธีการปิดการเข้าถึงบนInformation Schema: DENY SELECT ON INFORMATION_SCHEMA.TABLES To DenySystemTableSelectRole ดูเหมือนว่าจะไม่ทำงาน ฉันจะปิดการใช้งานการเข้าถึง information_schema ได้อย่างไร …

4
กำลังสร้างดัชนีใหม่ฐานข้อมูลขนาด 10 เท่า
ฉันมีฐานข้อมูล SQL Server (2008 R2 SP1) ประมาณ 15 กิ๊ก ปรากฎว่าการบำรุงรักษาไม่ได้ทำงานมาระยะหนึ่งดังนั้นฉันจึงสร้างแผนการบำรุงรักษาเพื่อสร้างดัชนีทั้งหมดขึ้นใหม่พวกเขามีการแยกส่วนมาก งานเสร็จสิ้นและการแตกแฟรกเมนต์หายไป แต่ตอนนี้ฐานข้อมูลมีมากกว่า 120 กิ๊ก! ฉันเข้าใจว่าจะใช้พื้นที่เพิ่มเติมเพื่อสร้างใหม่ทั้งหมด แต่ตอนนี้งานเสร็จแล้วฉันคิดว่าพื้นที่ทั้งหมดนั้นจะเป็นพื้นที่ว่าง แต่พื้นที่ว่างแสดงเพียง 3 กิ๊กดังนั้นจึงมีการใช้ 117 gigs แม้ว่างานสร้างดัชนีใหม่จะเสร็จสิ้น ฉันสับสนมากและสามารถใช้คำแนะนำบางอย่างฉันได้รับ db กลับไปเป็นขนาดที่เหมาะสมเราไม่มีพื้นที่ดิสก์สำหรับสิ่งนี้ ขอบคุณล่วงหน้า! นี่คือผลลัพธ์ของข้อความค้นหาทั้งสองที่โพสต์: log_reuse_wait_desc ไม่มีอะไร name TotalSpaceInMB UsedSpaceInMB FreeSpaceInMB LIVE_Data 152 123 28 LIVE_Log 18939 89 18849 LIVE_1_Data 114977 111289 3688 ไฟล์ที่สามเป็นไฟล์. ndf ซึ่งเป็นไฟล์ที่แสดงเพียง 3688 ในพื้นที่ที่ไม่ได้ใช้ …

6
การสำรองฐานข้อมูลทั้งหมดใน SQL Server
ฉันมีเซิร์ฟเวอร์ฐานข้อมูล Microsoft SQL Server 2005 ในเซิร์ฟเวอร์ DB ฉันมีฐานข้อมูลผู้ใช้ประมาณ 250 คน ฉันต้องสำรองฐานข้อมูลเหล่านี้ทั้งหมด เนื่องจากการสำรองข้อมูลด้วยตนเองใช้เวลานานฉันกำลังมองหาสคริปต์ชุดงานหรือสคริปต์ฐานข้อมูลซึ่งจะสำรองข้อมูลของฐานข้อมูล 250 ทั้งหมดโดยอัตโนมัติ มีใครช่วยได้บ้างไหม?

4
การแบ่งพาร์ติชันตารางสำหรับเก็บข้อมูล
สถานการณ์: สองฐานข้อมูล: DB_A และ DB_Archive กับหนึ่งตารางใหญ่มากที่เรียกว่า tableA ทุกวันบันทึกที่เก่ากว่า 60 วันจะถูกลบออกจาก DB_A และย้ายไปที่ DB_Archive เป็นหลักเพื่อแยกสิ่ง "แยก" ออกเนื่องจาก tableA ถูกสอบถามอย่างหนักใน DB_A สำหรับบันทึกของ 2 เดือนที่ผ่านมา ฉันต้องการกำจัดกระบวนการนี้เพราะมันช้าและสิ้นเปลืองทรัพยากรจำนวนมาก ฉันกำลังคิดที่จะนำตารางพาร์ติชั่นไปใช้บน DB_A ด้วยฟังก์ชั่นพาร์ติชั่นในคอลัมน์วันที่และเก็บบันทึกทั้งหมด <2 เดือนในหนึ่งพาร์ติชั่นและทุกเรคคอร์ด> 2 เดือนในอีกพาร์ติชันหนึ่ง คำถามของฉัน: สถานการณ์นี้จะทำงานเป็นอย่างไรถ้าฉันมีฐานข้อมูล 2 แบบ ถ้าฉันค้นหา tableA สำหรับบันทึก> getdate () - 30 จะอ่านพาร์ติชันเก็บถาวรหรือไม่ ฉันคิดว่าฉันต้องแบ่งดัชนีด้วยใช่มั้ย ฉันจะจัดการกับความจริงที่ว่าในวันพรุ่งนี้ฟังก์ชั่นพาร์ทิชันของฉันจะ "เปลี่ยน" ฉันหมายความว่าถ้าฉันสร้างฟังก์ชั่นวันนี้ (วันที่ 2 กรกฎาคมช่วงของมันจะเป็นวันที่ 2 …

5
อัพเดตแถวที่มีอยู่ด้วยหมายเลข / ถ่านหรือข้อมูลที่ไม่ซ้ำ
ฉันเพิ่มคอลัมน์ใหม่ในตาราง X คอลัมน์ "cn" นี้จะต้องไม่ซ้ำกันและจำเป็น แต่ข้อมูลเก่าไม่มีค่าใด ๆ จะอัปเดตระเบียนที่มีอยู่ด้วยข้อมูลเฉพาะที่เป็นลำดับหรือสุ่มได้อย่างไร ขอขอบคุณ.
13 sql-server 

3
เป็นไปได้หรือไม่ที่จะสร้างการเชื่อมต่อผู้ดูแลระบบเฉพาะ (DAC) โดยใช้ SSMS
เป็นไปได้หรือไม่ที่จะเชื่อมต่อกับ DAC โดยใช้ SSMS? หากฉันเข้าใจถูกต้องควรใช้คำนำหน้า "admin:" หน้าชื่อเซิร์ฟเวอร์ แต่ฉันได้รับข้อความต่อไปนี้: การเชื่อมต่อผู้ดูแลระบบเฉพาะไม่ได้รับการสนับสนุนผ่าน SSMS เนื่องจากจะสร้างการเชื่อมต่อที่หลากหลายโดยการออกแบบ (Microsoft.SqlServer.Management.SqlStudio.Explorer)

1
จะควบคุมการใช้ ram มากเกินไปโดย SQL Server ได้อย่างไร?
เซิร์ฟเวอร์ฐานข้อมูลที่ฉันใช้กำลังเรียกใช้อินสแตนซ์ของ SQL Server 6 อินสแตนซ์ที่ต่างกัน มี RAM 48 GB และหนึ่งในนั้นใช้ RAM มากกว่า 10 GB การบริโภคทั้งหมดคือ 20 GB สำหรับตอนนี้ ปริมาณการใช้ RAM เติบโตอย่างต่อเนื่อง สองสามวันก่อนที่จะใช้ RAM มากกว่า 40 GB และเซิร์ฟเวอร์ตอบสนองช้ามาก แอปพลิเคชันแสดงปัญหาการขัดข้องเมื่อบันทึกข้อมูล ดังนั้นฉันเริ่มบริการ SQL Server ใหม่ ทันทีที่เริ่มบริการใหม่การใช้งานก็ลดลงเหลือ 4 GB แต่ตอนนี้กำลังเพิ่มขึ้น และฉันกังวลว่าจะเพิ่มขึ้นถึง 40 GB ใน 4 หรือ 5 วันและทำให้เซิร์ฟเวอร์ทำงานช้า การรีสตาร์ทบริการไม่ใช่ตัวเลือกที่ดีที่ฉันเดา ฉันพบจากแหล่งต่าง ๆ ที่เราสามารถกำหนดขนาดการใช้หน่วยความจำสูงสุดสำหรับ SQL Server …
13 sql-server 

1
DBCC CHECKDB ยิงทุก 20 - 60 วินาที
ฉันมีสภาพแวดล้อมแบบ dev ที่กำลังนำไปใช้งานอย่างรวดเร็วในการผลิตและสังเกตเห็นในบันทึกที่ประมาณทุกๆ 20 วินาทีที่ฉันเห็นข้อความ: Starting up database 'dbname' CHECKDB for database 'dbname' finished without errors ฉันสังเกตเห็นสิ่งนี้เพราะผู้ใช้ปลายทางที่ทำการทดสอบนี้มีปัญหาซึ่งฉันแยกเป็นข้อผิดพลาดที่ฉันสังเกตเห็นในบันทึกเหตุการณ์ Windows (แอปพลิเคชันบันทึก): The log for database 'dbname' is not available. Check event log for related messages. บังเอิญฉันไม่พบข้อความที่เกี่ยวข้อง แต่แก้ไขด้วยรอบออฟไลน์ / ออนไลน์ สิ่งเดียวที่ฉันคิดได้ก็คือแอปพลิเคชันนี้รวบรวมข้อมูลทุก ๆ 1 มิลลิวินาที แต่ข้อมูลทั้งหมดนี้ไม่ได้ถูกแทรกลงในฐานข้อมูล เป็นเซิร์ฟเวอร์ dev มันถูกกำหนดค่าเพื่อให้บันทึกและข้อมูลอยู่ในไดรฟ์เดียวกัน ด้วยข้อมูลสองส่วนนี้ฉันจึงเชื่อว่านี่เป็นปัญหา IO และเซิร์ฟเวอร์พยายามกู้คืนจากการขาดการเชื่อมต่อกับที่เก็บข้อมูล (SAN) แต่ถึงอย่างนี้ก็ไม่สมเหตุสมผลสำหรับฉันเพราะมันไม่ได้สูญเสีย …

3
มันจะถือว่าเป็นแนวปฏิบัติที่ไม่ดีที่จะมี FK แบบ nullable หลายรายการบนตารางใน SQL Server หรือไม่
ในโครงสร้างฐานข้อมูลของฉันใน SQL Server ฉันมีผลิตภัณฑ์ 3 ประเภทที่ต้องการข้อมูลที่แตกต่างกันเกี่ยวกับการสั่งซื้อ ดังนั้นฉันสร้างหนึ่งของตารางและสามตารางการสั่งซื้อที่แตกต่างกัน:Customers , , ตารางคำสั่งซื้อทั้งหมดมีความสัมพันธ์แบบหนึ่งต่อหลายบนโต๊ะOrdersForProductAsOrdersForProductBsOrdersForProductCsCustomers ฉันยังมีตารางอื่นที่Paymentsจะเก็บรายละเอียดการชำระเงินไว้ข้างใน แต่ฉันมีข้อสงสัยเกี่ยวกับวิธีการจัดโครงสร้างที่นี่ เนื่องจากฉันมีผลิตภัณฑ์หลายประเภทและลูกค้าอาจมีคำสั่งซื้อหลายผลิตภัณฑ์ในเวลาเดียวกันฉันจึงต้องเชื่อมโยงตารางคำสั่งซื้อทั้งสามนั้นเข้ากับPaymentsตาราง ปัญหาอื่นคือลูกค้าอาจมีคำสั่งซื้อผลิตภัณฑ์เพียงประเภทเดียว ดังนั้นคอลัมน์ FK ในตารางจะต้องมีการPaymentsnullable คำถามของฉันคือว่าnullableคอลัมน์ FK เหล่านั้นจะปวดหัวสำหรับฉันในระยะยาวหรือไม่? โดยทั่วไปแล้วจะถือว่าเป็นการปฏิบัติที่ไม่ดีที่จะมีคอลัมน์ FK ที่ไม่มีค่าว่างบนตารางหรือไม่

3
แทรกถ้าไม่มีอยู่พร้อมกัน
ฉันกำลังมีปัญหาการใช้งานพร้อมกันกับส่วนแทรกในขั้นตอนการจัดเก็บ ส่วนที่เกี่ยวข้องของขั้นตอนนี้คือ: select @_id = Id from table1 where othervalue = @_othervalue IF( @_id IS NULL) BEGIN insert into table1 (othervalue) values (@_othervalue) select @_id = Id from table1 where othervalue = @_othervalue END เมื่อเรารัน proc ที่เก็บไว้ 3 หรือ 4 ของพร้อมกันนี้เราได้รับการแทรกหลายครั้ง ฉันกำลังวางแผนในการแก้ไขเช่นนี้: insert into table1 (othervalue) select TOP(1) @_othervalue as …

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