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

SQL Server 2008 (รุ่นบิลด์หลัก 10.00.xxxx) โปรดติดแท็กด้วย sql-server

1
คุณสั่งซื้อพารามิเตอร์อย่างไร
เพียงแค่สงสัยว่าฉันสามารถขอความคิดเห็นเกี่ยวกับขั้นตอนการจัดเก็บที่ฉันใช้อยู่หรือไม่และมีวิธีการจัดการสถานการณ์ที่มีประสิทธิภาพมากขึ้นหรือไม่ (ฉันค่อนข้างแน่ใจว่าจะมี!) โดยทั่วไปฉันมี SP เดียวที่ฉันเรียกเพื่อส่งกลับรายการของเรกคอร์ด (งาน) ที่อาจมีสถานะอย่างน้อยหนึ่งสถานะและเรียงลำดับ (ฉันใช้ RowNum สำหรับการเพจ) ในขณะที่ฉันกำลังใช้กับ RECOMPILE เพราะความหลากหลายของสถานะสามารถเปลี่ยนแปลงได้ตลอดเวลา (ขึ้นอยู่กับผู้ใช้ ฯลฯ ) นอกจากนี้ยังมีการกรองเกิดขึ้น ฉันใช้คำสั่ง IF เพื่อเรียกใช้บิตของรหัสเดียวกันโดยมีการเปลี่ยนแปลงเพียงอย่างเดียวคือการเรียงลำดับ ฉันเดาว่าคำถามของฉันคือ: มีวิธีที่ดีกว่าในการทำสิ่งนี้ (อาจเป็น SP ที่แตกต่างกันสำหรับสถานะที่แตกต่างกัน)? ฉันเข้าใจเรื่องนี้มากเกินไปเนื่องจากขาดความรู้ (น่าจะเป็น) SP จริงหรือไม่ แต่ต้องการปรับแต่งเล็กน้อยเพื่อลดจำนวนบรรทัด ฉันได้วางส่วนหนึ่งของ SP ด้านล่าง - ความแตกต่างเพียงอย่างเดียวกับรหัสเต็มคือคำสั่ง IF เพิ่มเติมสำหรับการเรียงลำดับที่แตกต่างกัน ... ฉันขอขอบคุณข้อเสนอแนะใด ๆ ขอบคุณล่วงหน้า! PROCEDURE [dbo].[sp_Jobs] @PageNumber int, @PageSize int, @FilterExpression varchar(500), @OrderBy …

7
การย้ายตารางไปยังฐานข้อมูล SQL2008 อื่น (รวมถึงดัชนีทริกเกอร์ ฯลฯ )
ฉันต้องการย้ายทั้งตาราง (100+) ของตารางขนาดใหญ่ (ล้านแถว) จากฐานข้อมูล SQL2008 หนึ่งไปยังอีก เดิมทีฉันเพิ่งใช้ตัวช่วยสร้างการนำเข้า / ส่งออก แต่ตารางปลายทางทั้งหมดไม่มีคีย์หลักและต่างประเทศดัชนีข้อ จำกัด ทริกเกอร์ ฯลฯ (คอลัมน์รหัสประจำตัวยังถูกแปลงเป็น INT ธรรมดาด้วย แต่ฉันคิดว่าฉันพลาดช่องทำเครื่องหมายใน วิซาร์ด.) วิธีที่ถูกต้องในการทำเช่นนี้คืออะไร? หากนี่เป็นเพียงสองสามตารางฉันจะกลับไปที่แหล่งที่มาออกคำจำกัดความของตาราง (ที่มีดัชนีทั้งหมด ฯลฯ ) จากนั้นเรียกใช้ส่วนการสร้างดัชนีของสคริปต์บนปลายทาง แต่ด้วยตารางจำนวนมากดูเหมือนว่าจะเป็นไปไม่ได้ หากมีข้อมูลไม่มากฉันสามารถใช้วิซาร์ด "สร้างสคริปต์ ... " เพื่อสคริปท์แหล่งที่มารวมถึงข้อมูล แต่สคริปต์แถวขนาด 72 ม. ดูเหมือนจะไม่เป็นความคิดที่ดีเลย!

1
การตั้งค่าการอนุญาตของผู้ใช้สำหรับสคีมา SQL Server ต่างๆ
ฉันจำเป็นต้อง จำกัด การเข้าถึงผู้ใช้เฉพาะ แต่พวกเขายังต้องสามารถดูข้อมูลในตารางที่ dbo เป็นเจ้าของได้ ฉันกำลังพยายามทำสิ่งต่อไปนี้: ฟังก์ชั่น dbo schema ตามปกติจะสามารถเข้าถึงทุกสิ่ง schema1 schema มีการเข้าถึงวัตถุ schema1 เท่านั้น ถ้ามุมมอง schema1 หรือกระบวนงานที่เก็บไว้เข้าถึงข้อมูลในตารางที่ dbo เป็นเจ้าของห่วงโซ่การอนุญาตอย่างเหมาะสม user1 มีสิทธิ์เข้าถึง schema1 และไม่มีอะไรอื่นอีก ยกเว้นในกรณีของ # 3 นี่คือสิ่งที่ฉันได้ลอง: สร้างผู้ใช้ user1 ที่แมปกับการเข้าสู่ระบบทดสอบด้วยรหัสผ่านแบบสุ่ม สร้างตารางคู่ใน dbo schema ด้วยข้อมูลการทดสอบบางอย่าง สร้างสคีมา 1 สร้าง schema1.get_profiles ที่เลือกจากมุมมองที่เรียกว่า schema1.profiles ซึ่งเข้าถึงข้อมูลใน dbo.people, dbo.taglinks และ dbo.tags อย่างไรก็ตามการใช้คำสั่งต่อไปนี้ในขณะที่เข้าสู่ระบบในฐานะผู้ใช้ 1: EXEC …

7
ขั้นตอนการจัดเก็บภายใต้การควบคุมแหล่งที่มาแนวปฏิบัติที่ดีที่สุด
ฉันกำลังใช้ Tortoise SVN เพื่อควบคุมแหล่งโปรแกรมประยุกต์บนเว็บ NET อะไรจะเป็นวิธีที่ดีที่สุดในการนำ SQL Server ของเรามาใช้ในการควบคุมกระบวนการ ขณะนี้ฉันใช้ VS 2010 เป็นสภาพแวดล้อมการพัฒนาของฉันและเชื่อมต่อกับฐานข้อมูล SQL Server 2008 R2 นอกสถานที่โดยใช้ SQL Server Data Tools (SSDT) สิ่งที่ฉันทำในอดีตคือการบันทึก procs เป็นไฟล์. sql และทำให้ไฟล์นี้อยู่ภายใต้การควบคุมของแหล่งที่มา ฉันแน่ใจว่าต้องมีวิธีที่มีประสิทธิภาพมากกว่านี้หรือไม่ มีส่วนขยายที่ฉันสามารถติดตั้งบน VS2010, SSDT หรือแม้แต่ SQL Server บนเครื่องที่ใช้งานจริงได้หรือไม่?

3
ฉันสามารถดึงวัตถุฐานข้อมูลทั้งหมดที่ผู้ใช้นั้นเป็นเจ้าของได้หรือไม่
เรามีผู้ใช้ที่กำลังออกจากและฉันจำเป็นต้องรู้ทุกวัตถุฐานข้อมูลที่เขาเป็นเจ้าของ มีแบบสอบถามที่จะให้ข้อมูลนี้หรือไม่?

1
กระชับวัตถุขนาดใหญ่ในงานจัดระเบียบดัชนีใหม่
ฉันตั้งค่าแผนการบำรุงรักษาใน SQL Server 2008 R2 ในการจัดระเบียบดัชนีใหม่มีตัวเลือกสำหรับ "วัตถุขนาดใหญ่ที่มีขนาดกะทัดรัด" หมายความว่าอะไรและฉันต้องการเปิดใช้งานหรือไม่

3
เป็นไปได้หรือไม่ที่จะได้รับ call call สำหรับการเรียกใช้งานในทริกเกอร์?
ฉันมี 10 โพรซีเดอร์ที่เก็บไว้และแต่ละอันจะแทรกลงในหนึ่ง tableX เป็นไปได้หรือไม่ที่ทริกเกอร์เนื้อความของ tableX จะได้รับวัตถุใดที่ทำให้เกิดการดัดแปลง tableX (เก็บไว้ proc1 หรือ sp2 หรือ .... )? ขอขอบคุณ.

5
วิธีเพิ่ม 1 มิลลิวินาทีในสตริงวันที่และเวลา
จากการเลือกฉันสามารถส่งคืนแถว x แบบนี้: 1 2019-07-23 10:14:04.000 1 2019-07-23 10:14:11.000 2 2019-07-23 10:45:32.000 1 2019-07-23 10:45:33.000 เรามีมิลลิวินาทีทั้งหมดที่มี 0 มีวิธีเพิ่ม 1 ต่อ 1 มิลลิวินาทีหรือไม่ดังนั้นการเลือกจะเป็นดังนี้: 1 2019-07-23 10:14:04.001 1 2019-07-23 10:14:11.002 2 2019-07-23 10:45:32.003 1 2019-07-23 10:45:33.004 ฉันกำลังพยายามสร้างเคอร์เซอร์หรือแม้แต่การอัปเดตที่ไม่สำเร็จ นี่คือแบบสอบถามเพื่อให้ได้ผลลัพธ์ที่ฉันต้องการ: select top 10 ModifiedOn from [SCHEMA].[dbo].[TABLE] where FIELD between '2019-07-23 00:00' and '2019-07-23 23:59' …

5
การสำรองและคืนค่าฐานข้อมูลเซิร์ฟเวอร์ SQL 10-20 สู่สถานะ ~ แบบซิงโครนัส
ฉันต้องการสำรองฐานข้อมูล 10-20 SQL Server 2008 R2 ที่มีขนาดระหว่าง 10-50 GB ในขณะที่พวกเขาออนไลน์และใช้พร้อมกันโดยแอปองค์กรเดียว ฉันต้องการกู้คืนพวกเขากลับสู่สถานะที่ถูกซิงโครไนซ์กับฐานข้อมูลทั้งหมดเป็นส่วนใหญ่ วัตถุประสงค์คือเพื่อรวบรวมข้อมูลการผลิตสำหรับสภาพแวดล้อม QA / DEV ฉันต้องการอย่างยิ่งที่จะไม่เรียกใช้ฐานข้อมูลในการกู้คืนเต็มรูปแบบและมาพร้อมกับวิธีการสำรองข้อมูลที่ทุ่มเทให้กับการเก็บข้อมูลสำหรับสภาพแวดล้อม QA และยังคงเป็นอิสระจากกระบวนการสำรองข้อมูลหลักซึ่งไม่ได้อยู่ในการควบคุมของฉัน สำหรับลูกค้าของฉันจะใช้เวลา 1-2 ชั่วโมงในการเก็บสำรองข้อมูลทั้งหมด 20 ครั้งที่ ~ 30 GB ต่อครั้ง สิ่งนี้ทำให้การสำรองข้อมูลเต็มรูปแบบไม่สามารถยอมรับได้เนื่องจากฐานข้อมูลจะถูกซิงโครไนซ์มากเกินไปเมื่อทำงานในการกู้คืนอย่างง่าย ฉันกำลังมองหาความคิดที่ดีกว่าสิ่งเหล่านี้: IDEA 1: snapshot ระดับ SAN ของดิสก์ VM xcopy MDFs / LDF จากภาพรวม เมื่อไฟล์ที่คัดลอกถูกแนบไปกับอินสแตนซ์ของเซิร์ฟเวอร์ที่แตกต่างกันกระบวนการกู้คืนของมันควรจะสร้างฐานข้อมูลที่สอดคล้องกัน Googling เชื่อฉันว่านี่เป็นความคิดที่ดีอย่างน้อยเพราะฉันอาจได้รับ desync เทียบกับ master / msdb / …

1
จำเป็นต้องรวมคอลัมน์ดัชนีคลัสเตอร์ในดัชนีที่ไม่ใช่คลัสเตอร์หรือไม่
เมื่อพิจารณาว่าดัชนีที่ไม่ได้ทำคลัสเตอร์นั้นเป็นไปตามดัชนีคลัสเตอร์ที่จำเป็นสำหรับดัชนีที่ไม่ทำคลัสเตอร์เพื่อแสดงรายการคอลัมน์ใด ๆ ที่มีอยู่ในดัชนีคลัสเตอร์หรือไม่ กล่าวอีกนัยหนึ่งถ้าตารางผลิตภัณฑ์มีดัชนีคลัสเตอร์บน ProductID เมื่อสร้างดัชนีที่ไม่ใช่คลัสเตอร์ซึ่งจะแนะนำให้รวมคอลัมน์ ProductID จำเป็นต้องเพิ่มอย่างไรก็ตามเป็นคอลัมน์หรือไม่? ถ้าไม่มีมีสถานการณ์ที่จะเป็นการดีที่จะเพิ่มชื่อคอลัมน์ไปยังดัชนีที่ไม่ใช่คลัสเตอร์หรือไม่

2
วิธีเพิ่มประสิทธิภาพการสืบค้น T-SQL โดยใช้ Execution Plan
ฉันมีแบบสอบถาม SQL ที่ฉันใช้เวลาสองวันที่ผ่านมาพยายามเพิ่มประสิทธิภาพโดยใช้การทดลองและข้อผิดพลาดและแผนการดำเนินการ แต่ไม่มีประโยชน์ โปรดยกโทษให้ฉันที่ทำเช่นนี้ แต่ฉันจะโพสต์แผนการดำเนินการทั้งหมดที่นี่ ฉันได้ใช้ความพยายามในการสร้างชื่อตารางและคอลัมน์ในแบบสอบถามและแผนปฏิบัติการทั่วไปทั้งเพื่อความกระชับและเพื่อปกป้อง IP ของ บริษัท ของฉัน แผนปฏิบัติการสามารถเปิดได้กับSQL ยามแผน Explorer ที่ ฉันทำ T-SQL ในปริมาณที่พอใช้ แต่การใช้แผนการดำเนินการเพื่อเพิ่มประสิทธิภาพการสืบค้นของฉันเป็นพื้นที่ใหม่สำหรับฉันและฉันได้พยายามเข้าใจวิธีการทำ ดังนั้นหากใครสามารถช่วยฉันด้วยและอธิบายว่าแผนปฏิบัติการนี้สามารถถอดรหัสเพื่อค้นหาวิธีในการค้นหาเพื่อเพิ่มประสิทธิภาพได้ฉันจะขอบคุณตลอดไป ฉันมีคำถามเพิ่มเติมเพื่อเพิ่มประสิทธิภาพ - ฉันต้องการกระดานกระโดดน้ำเพื่อช่วยฉันในเรื่องนี้เป็นครั้งแรก นี่คือแบบสอบถาม: DECLARE @Param0 DATETIME = '2013-07-29'; DECLARE @Param1 INT = CONVERT(INT, CONVERT(VARCHAR, @Param0, 112)) DECLARE @Param2 VARCHAR(50) = 'ABC'; DECLARE @Param3 VARCHAR(100) = 'DEF'; DECLARE @Param4 VARCHAR(50) …

3
ส่งคืนคอลัมน์ต่อวันในช่วง
สมมติว่าฉันมีตาราง A: BookingsPerPerson Person_Id ArrivalDate DepartureDate 123456 2012-01-01 2012-01-04 213415 2012-01-02 2012-01-07 สิ่งที่ฉันต้องทำให้สำเร็จด้วยมุมมองคือ: Person_Id ArrivalDate DepartureDate Jan-01 Jan-02 Jan-03 Jan-04 Jan-05 Jan-06 Jan-07 123456 2012-01-01 2012-01-04 1 1 1 1 213415 2012-01-02 2012-01-07 1 1 1 1 1 1 ระบบนี้ใช้สำหรับกิจกรรมดังนั้นการจองโรงแรมแต่ละครั้งอาจใช้เวลาระหว่าง 1 ถึง 15 วัน แต่ไม่มากไปกว่านั้น ความคิดใด ๆ ที่จะได้รับการชื่นชมอย่างมาก

2
ดูอย่างรวดเร็วว่ามีการจัดสรร RAM ไปยัง SQL Server เท่าใด
ด้วย SQL Server 2005 คุณสามารถดูที่ Task Manager และอย่างน้อยให้ดูคร่าวๆว่าหน่วยความจำจัดสรรให้กับ SQL Server เท่าใด ด้วย SQL Server 2008 ชุดการทำงานหรือขนาดการส่งมอบจะไม่สูงเกินกว่า 500 MB แม้ว่า SQLServer: ตัวนับหน่วยความจำ / เซิร์ฟเวอร์รวมหน่วยความจำเซิร์ฟเวอร์ (KB) จะแสดงสถานะ 16,732,760 มีการตั้งค่าที่จะแสดงหน่วยความจำเซิร์ฟเวอร์จริง ๆ ใน Task Manager หรือไม่? หรือเป็นผลมาจากพวกเขาเปลี่ยนวิธีการใช้หน่วยความจำใน SQL Server

2
ชนิดข้อมูลสำหรับเก็บอาร์เรย์ของแฟล็ก (อาเรย์บิตแมป / บิต)
ฉันต้องการจัดเก็บบิตอาร์เรย์สำหรับแต่ละระเบียนของตารางสนับสนุนการดำเนินการต่อไปนี้: ทดสอบว่าตั้งบิตไว้หรือไม่และตั้งค่าบิต (โดยใช้ SQL) การสืบค้นและการตั้งค่าโดยใช้ ADO 2.8 (ไม่ใช่ ADO.NET) การจัดทำดัชนี (เพื่อรับประโยชน์จากคุณสมบัติ "ครอบคลุมดัชนี") จำนวนสูงสุดของบิตจะถูกเก็บไว้ในอาร์เรย์นี้ได้รับการแก้ไขแต่อาจเกิน 32 นั่นคือคอลัมน์intแบบง่าย ๆไม่ได้ผลเสมอไป จากสิ่งที่ฉันเห็นมาจนถึงตอนนี้ตัวเลือกของฉันคือ: ใช้คอลัมน์intหลายรายการ ใช้bigint (ทำงานตราบเท่าที่จำนวนบิตคือ <= 64) ใช้เลขฐานสอง ? ตัวเลือกแรกจะใช้งานได้ แต่ต้องการการรีแฟคเตอร์เล็กน้อยในรหัสที่เข้าถึงข้อมูล ตัวเลือกที่สองเป็นการผ่อนปรนชั่วคราวเท่านั้นและจากการค้นหาของฉันจนถึงตอนนี้ฉันไม่แน่ใจว่า ADO ทำงานได้ดีกับbigintหรือไม่ ฉันไม่มีประสบการณ์กับไบนารีและฉันไม่ได้ตระหนักถึงตัวเลือกอื่น ๆ คุณต้องการเลือกชนิดข้อมูลแบบใดตามข้อกำหนด

4
ฟิลด์ INCLUDE ดัชนีขนาดใหญ่จะมีผลต่อประสิทธิภาพของระบบอย่างไร
คำถามนี้เป็นคำถามเกี่ยวกับประสิทธิภาพของดัชนี SQL Server กับvarchar(2000)เป็นINCLUDEในดัชนีที่ครอบคลุม ฉันพยายามปรับปรุงประสิทธิภาพในแอปพลิเคชันฐานข้อมูลที่ช้าและไม่เสถียร ในบางกรณีข้อมูลที่มีการเข้าถึงผ่านสตริง varchar ขนาดใหญ่ที่มีการค้นหารวมทั้งการดำเนินสตริง multple เหมือนSUBSTRING(), และSPACE() DATALENGTH()นี่คือตัวอย่างที่ง่ายของการเข้าถึง update fattable set col3 = SUBSTRING(col3,1,10) + '*' + SUBSTRING(col3,12,DATALENGTH(col3)-12) from fattable where substring(col3,10,1) = 'A' and col2 = 2 สคีมามีลักษณะดังนี้: CREATE TABLE [dbo].[FatTable]( [id] [bigint] IDENTITY(1,1) NOT NULL, [col1] [nchar](12) NOT NULL, [col2] [int] NOT NULL, [col3] …

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