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

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

3
ข้อ จำกัด อย่างหนักสำหรับการรวมบทความการจำลองแบบนับรวมกันไหม
พื้นหลังเล็กน้อย เราพัฒนาแอพที่ใช้การจำลองแบบผสาน ขณะนี้เรากำลังเผยแพร่บทความประมาณ 212 บทความและทุกอย่างเรียบร้อยดีเนื่องจากดูเหมือนว่าจะอยู่ในขอบเขตการ จำกัด จำนวนบทความที่ 256 (การใช้ SQL Standard 2005 ที่เซิร์ฟเวอร์และ 2005 Express ที่ระดับสมาชิก) เราอยู่ในขั้นตอนการพัฒนาเวอร์ชั่นใหม่โดยมีฐานข้อมูลใหม่ที่สร้างขึ้นจากพื้นฐานซึ่งจะมีความต้องการระบบขั้นต่ำของฝั่งเซิร์ฟเวอร์ SQL 2008 R2 Standard และ Express 2008 R2 ที่ปลายไคลเอนต์ซึ่งดูเหมือนว่าจะมี จำกัด การนับ 256 เดียวกันสำหรับบทความที่เผยแพร่ (ใช่เราจะสนับสนุนปี 2012 ด้วยเช่นกัน) คำถามมาในที่เราได้ทดสอบเผยแพร่บทความมากกว่า 400 รายการในเวอร์ชันใหม่และการทดสอบทุกอย่างใช้งานได้ (การสร้างผับการสร้างสแนปชอตและการสมัครสมาชิกและการจำลองแบบเอง) มีใครเกินขีด จำกัด การนับก่อนหน้านี้หรือไม่และนี่เป็นเพียงข้อ จำกัด ที่แนะนำอย่างนุ่มนวลหรือไม่ เราไม่เห็นข้อผิดพลาดใด ๆ ทั้งในระหว่างการสร้างสิ่งพิมพ์หรือการสร้างสมาชิก ตามบทความนี้: http://msdn.microsoft.com/en-us/library/ms143432%28v=sql.105%29 ฉันรอการโทรกลับจาก Microsoft แต่ฉันต้องการทราบว่ามีใครเห็นสิ่งนี้มาก่อนใน …

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

2
ข้อผิดพลาดในการสำรองข้อมูล Microsoft SQL Server 2008 R2
ฉันพยายามสำรองข้อมูลอย่างง่ายไปยังดิสก์ภายนอกและรับข้อผิดพลาดนี้: การสำรองข้อมูลล้มเหลวสำหรับเซิร์ฟเวอร์ 'ชื่อเซิร์ฟเวอร์' ข้อมูลเพิ่มเติม: System.Data.SqlClient.SqlError: สื่อที่โหลดบน "C: \ Program Files \ Microsoft SQL .. " ได้รับการจัดรูปแบบเพื่อรองรับ 1 ครอบครัวสื่อ แต่คาดว่าจะมี 2 ครอบครัวสื่อตามข้อมูลจำเพาะของอุปกรณ์สำรอง (Microsoft.SqlServer.Smo) ` ประเภทการสำรองข้อมูล: เต็ม เหตุใดฉันจึงได้รับข้อผิดพลาดนี้และเหตุใดจึงมีข้อความชี้ไปที่C:\Program Files..ว่าไฟล์ปลายทางเป็นอุปกรณ์ภายนอกหรือไม่

3
มีวิธีทดสอบว่า DELETE จะล้มเหลวเนื่องจากข้อ จำกัด หรือไม่
ฉันต้องการที่จะคาดการณ์ว่าจะมีการลบ DELETE หรือไม่โดยไม่ทำการลบ ตัวเลือกของฉันสำหรับการทำสิ่งนี้มีอะไรบ้าง มีวิธีง่ายๆในการทำ "dry run" ของ DELETE หรือไม่?

2
ฉันจะตัดอักขระที่ไม่ใช่ตัวเลขออกจากสตริงได้อย่างไร
ผู้ใช้ป้อนคำค้นหาในกล่องและค่านั้นจะถูกส่งผ่านไปยังขั้นตอนการจัดเก็บและตรวจสอบกับเขตข้อมูลที่แตกต่างกันไม่กี่ในฐานข้อมูล ฟิลด์เหล่านี้ไม่ได้เป็นชนิดข้อมูลเดียวกันเสมอไป หนึ่งฟิลด์ (หมายเลขโทรศัพท์) ประกอบด้วยตัวเลขทั้งหมดดังนั้นเมื่อตรวจสอบจะตัดอักขระที่ไม่ใช่ตัวเลขทั้งหมดออกจากสตริงโดยใช้ฟังก์ชัน. Net CLR SELECT dbo.RegexReplace('(123)123-4567', '[^0-9]', '') ปัญหาคือฟังก์ชั่นนี้หยุดทำงานทันทีที่มีข้อผิดพลาดดังต่อไปนี้: ข่าวสารเกี่ยวกับ 6533, ระดับ 16, สถานะ 49, บรรทัด 2 AppDomain MyDBName.dbo [runtime] .1575 ถูกยกเลิกการโหลดโดยนโยบายการเลื่อนระดับเพื่อให้แน่ใจว่า ความสอดคล้องของใบสมัครของคุณ หน่วยความจำไม่เพียงพอเกิดขึ้นขณะเข้าถึงทรัพยากรที่สำคัญ System.Threading.ThreadAbortException: ข้อยกเว้นชนิด 'System.Threading.ThreadAbortException' ถูกส่งไป System.Threading.ThreadAbortException: ฉันลองคำแนะนำที่โพสต์บนMSDNสำหรับข้อผิดพลาดนี้ แต่ฉันยังคงพบปัญหา ในขณะนี้การสลับไปใช้เซิร์ฟเวอร์ 64 บิตไม่ใช่ตัวเลือกสำหรับเรา ฉันรู้ว่าการรีสตาร์ทเซิร์ฟเวอร์จะปล่อยหน่วยความจำใด ๆ ก็ตาม แต่นั่นไม่ใช่วิธีแก้ปัญหาที่ใช้งานได้ในสภาพแวดล้อมการใช้งานจริง มีวิธีการแยกอักขระที่ไม่ใช่ตัวเลขออกจากสตริงใน SQL Server 2005 โดยใช้ T-SQL เท่านั้นหรือไม่

3
หน่วยความจำที่ใช้ไม่ได้เพิ่มขึ้นหลังจาก SQL BULK Insert / BCP Export
ฉันได้สร้างตาราง SQL พื้นฐานมากดังต่อไปนี้ CREATE TABLE [dbo].[TickData]( [Date] [varchar](12) NULL, [Time] [varchar](12) NOT NULL, [Symbol] [varchar](12) NOT NULL, [Side] [varchar](2) NOT NULL, [Depth] [varchar](2) NOT NULL, [Quote] [varchar](12) NOT NULL, [Size] [varchar](18) NOT NULL ) ON [PRIMARY] จากนั้นฉันก็ทำการแทรก 3 Gig Bulk BULK INSERT TickData FROM 'C:\SUMO.csv' GO จากนั้นการใช้ RAM สำหรับเซิร์ฟเวอร์ SQL …

1
กระบวนงานที่เก็บไว้เพื่อส่งคืนข้อมูลตารางที่สร้างขึ้นแบบไดนามิก
เรื่องราวย้อนกลับอย่างรวดเร็วเรากำลังทำงานกับผู้ขายภายนอกที่มีระบบสำรวจ ระบบไม่ได้ถูกออกแบบมาอย่างดีที่สุดเมื่อคุณสร้างแบบสำรวจใหม่และระบบจะสร้างตารางใหม่เช่น: Tables ____ Library_1 -- table for Survey 1 SurveyId int InstanceId int Q_1 varchar(50) Library_2 -- table for Survey 2 SurveyId int InstanceId int Q_2 int Q_3 int Q_4 varchar(255) ตารางจะถูกสร้างขึ้นด้วยการSurveyIdที่ส่วนท้ายของชื่อ ( Library_) และคอลัมน์คำถามจะถูกสร้างขึ้นด้วยการQuestionIdที่ส่วนท้ายของมัน ( Q_) ในการชี้แจงคำถามจะถูกเก็บไว้ในตารางแยกต่างหากดังนั้นในขณะที่รหัสคำถามนั้นเรียงตามลำดับโดยไม่เริ่มต้นที่ 1 สำหรับแต่ละแบบสำรวจ คอลัมน์คำถามจะขึ้นอยู่กับรหัสที่กำหนดให้กับพวกเขาในตาราง ดูเหมือนง่ายพอที่จะสืบค้นยกเว้นเราจำเป็นต้องดึงข้อมูลจากตารางสำรวจทั้งหมดที่จะส่งไปยังระบบอื่นและนี่คือที่มาของปัญหาเนื่องจากตารางจะถูกสร้างขึ้นโดยอัตโนมัติเมื่อมีการเพิ่มแบบสำรวจใหม่โดยหน้า แอปพลิเคชันสิ้นสุดระบบอื่นไม่สามารถจัดการกับโครงสร้างประเภทนี้ได้ พวกเขาต้องการข้อมูลที่สอดคล้องกันเพื่อให้สามารถบริโภคได้ ดังนั้นฉันจึงมอบหมายให้เขียนโพรซีเดอร์ที่เก็บไว้ซึ่งจะดึงข้อมูลจากตารางสำรวจทั้งหมดและวางไว้ในรูปแบบต่อไปนี้: SurveyId InstanceId QNumber Response …

5
ฟังก์ชัน SQL ตารางที่มีค่าเพื่อแยกคอลัมน์บนเครื่องหมายจุลภาค
ฉันเขียน Table Valued Function ใน Microsoft SQL Server 2008 เพื่อใช้คอลัมน์คั่นด้วยเครื่องหมายจุลภาคในฐานข้อมูลเพื่อแยกแถวที่แยกออกสำหรับแต่ละค่า เช่น: "หนึ่งสองสามสี่" จะส่งคืนตารางใหม่โดยมีเพียงหนึ่งคอลัมน์ที่มีค่าต่อไปนี้: one two three four รหัสนี้มีข้อผิดพลาดเกิดขึ้นกับคุณหรือเปล่า? เมื่อฉันทดสอบด้วย SELECT * FROM utvf_Split('one,two,three,four',',') มันวิ่งไปตลอดกาลและจะไม่ส่งคืนสิ่งใดเลย นี่เป็นสิ่งที่ทำให้ท้อใจโดยเฉพาะอย่างยิ่งเนื่องจากไม่มีฟังก์ชั่นแยกในเซิร์ฟเวอร์ MSSQL (ทำไมเพราะอะไร?!) และฟังก์ชั่นที่คล้ายกันทั้งหมดที่ฉันพบบนเว็บเป็นถังขยะแน่นอนหรือไม่เกี่ยวข้องกับสิ่งที่ฉันพยายามทำ . นี่คือฟังก์ชั่น: USE *myDBname* GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER FUNCTION [dbo].[utvf_SPlit] (@String VARCHAR(MAX), @delimiter CHAR) RETURNS @SplitValues …

2
ดัชนีใช้หน่วยความจำหรือไม่
ฉันเพิ่งเริ่มเรียนรู้เกี่ยวกับการใช้หน่วยความจำบน SQL Server เมื่อใช้แบบสอบถามในคำตอบของคำถามSQL Server 2008 R2 "Ghost Memory" ฉันค้นพบว่าฐานข้อมูลเดียวใช้พื้นที่แบ่งส่วนของสิงโตในบัฟเฟอร์พูล ดูเพิ่มเติมการใช้sys.allocation_unitsและsys.indexesฉันยืนยันว่าน่าจะเกิดจากการใช้ดัชนีจำนวนมากในฐานข้อมูล ดัชนีส่วนใหญ่เป็นกลุ่ม นักพัฒนาฐานข้อมูลรายอื่นเชื่อว่าเรากำลังประสบปัญหาหน่วยความจำบนเซิร์ฟเวอร์ - ข้อความค้นหาเริ่มต้นทำงานได้นานเนื่องจากไม่มีหน่วยความจำที่พร้อมใช้งาน คำถามของฉันคือ - การใช้ดัชนีเหล่านี้และการมีอยู่ของพวกเขาในบัฟเฟอร์พูลทำให้มีหน่วยความจำว่างสำหรับกระบวนการอื่นหรือไม่?

3
วิธีบันทึกรายละเอียดข้อผิดพลาดเมื่อใช้ลอง / จับสำหรับคำสั่งสำรอง SQL แบบไดนามิก
เมื่อออกคำสั่งสำรองข้อมูลภายในโพรซีเดอร์ที่เก็บไว้ซึ่งใช้ try catch และ dynamic sql ข้อความแสดงข้อผิดพลาดทั่วไปมากเมื่อเปรียบเทียบกับการรันคำสั่ง backup โดยตรง ลอง / จับภายใน SP: begin try execute sp_executesql @sql; -- a backup command end try begin catch print ERROR_MESSAGE(); -- save to log, etc. end catch ผลลัพธ์ใน 50000: usp_Backup: 117: BACKUP DATABASE สิ้นสุดลงอย่างผิดปกติ ในขณะที่การออกคำสั่ง raw: backup DATABASE someDb to disk... ผลลัพธ์โดยละเอียดยิ่งขึ้น: …

3
วิธีเพิ่มประสิทธิภาพของ Virgin Query ใน MS SQL Server
ฉันมีเว็บไซต์ ASP.NET ที่เป็นเจ้าของแคชข้อมูลและข้อมูลไม่เปลี่ยนแปลงเป็นเวลานานดังนั้นจึงไม่จำเป็นต้องสืบค้น SQL Server ครั้งที่สองด้วยแบบสอบถามเดียวกัน ฉันต้องปรับปรุงประสิทธิภาพของแบบสอบถามครั้งแรก (บริสุทธิ์) ที่ไปยัง SQL Server นั้น แบบสอบถามบางแห่งประมวลผลข้อมูลมากจนอาจทำให้ SQL Server ใช้งานtempdbได้ ฉันไม่ใช้ตัวแปร temp table หรือ temp tables ดังนั้น SQL Server ตัดสินใจที่จะใช้tempdbด้วยตนเองทุกครั้งที่ต้องการ ขนาดฐานข้อมูลของฉันคือ 16Gb ฉันมี RAM จริง 32Gb อยู่ในเครื่องเซิร์ฟเวอร์ ฉันเข้าใจว่ากลยุทธ์การแคช MS SQL Server พยายามเก็บข้อมูลใน RAM เพื่อเพิ่มความเร็วของการค้นหาที่คล้ายกันหากต้องการโหลดข้อมูลเดียวกันอีกครั้ง นอกจากนั้นมันจะพยายามใช้ RAM ที่มีอยู่แทน tempdb เพื่อเพิ่มความเร็วในการทำงานโดยไม่ทำให้เกิดการเข้าถึงดิสก์ ฉันคิดว่าเมื่อแบบสอบถามที่ต้องการเก็บบางสิ่งใน tempdb SQL Server มาและมี …

2
การแตกแฟรกเมนต์ดัชนีขณะประมวลผลอย่างต่อเนื่อง
SQL Server 2005 ฉันต้องสามารถประมวลผลระเบียน 350M อย่างต่อเนื่องในตารางบันทึก 900M แบบสอบถามที่ฉันใช้เพื่อเลือกระเบียนที่จะดำเนินการจะแยกส่วนอย่างไม่ดีตามที่ฉันดำเนินการและฉันจำเป็นต้องหยุดการประมวลผลเพื่อสร้างดัชนีใหม่ จำลองข้อมูล & คิวรีแบบหลอก ... /**************************************/ CREATE TABLE [Table] ( [PrimaryKeyId] [INT] IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, [ForeignKeyId] [INT] NOT NULL, /* more columns ... */ [DataType] [CHAR](1) NOT NULL, [DataStatus] [DATETIME] NULL, [ProcessDate] [DATETIME] NOT NULL, [ProcessThreadId] VARCHAR (100) NULL ); …

3
ทำไม Full Outer Join นี้ไม่ทำงาน?
ฉันเคยใช้ Full Outer Joins มาก่อนเพื่อให้ได้ผลลัพธ์ที่ต้องการ แต่บางทีฉันอาจไม่เข้าใจแนวคิดอย่างเต็มที่เพราะฉันไม่สามารถบรรลุสิ่งที่ควรเข้าร่วมอย่างง่าย ฉันมี 2 ตาราง (ซึ่งฉันจะเรียก t1 และ t2) โดยมี 2 ฟิลด์แต่ละฟิลด์: t1 Policy_Number Premium 101 15 102 7 103 10 108 25 111 3 T2 Policy_Number Loss 101 5 103 9 107 20 สิ่งที่ฉันพยายามทำคือรับผลรวมของพรีเมี่ยมและผลรวมของการสูญเสียจากทั้งสองตารางและ Policy_Number รหัสที่ฉันใช้คือ: select sum(premium) Prem_Sum, sum(Loss) Loss_Sum, t1.policynumber from t1 full …

3
ฉันจะรักษาค่าศูนย์นำหน้าได้อย่างไรเมื่อฉันใส่ตัวเลขลงในตารางนี้ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับผู้ดูแลฐานข้อมูล Exchange Exchange ปิดให้บริการใน8 ปีที่ผ่านมา ฉันได้แทรกสองระเบียนลงในตาราง create table num(id int) insert into num values(0023) insert into num values(23) select * from num 23เมื่อผมสอบถามพวกเขาพวกเขาทั้งหมดเป็นจอแสดงผล หมายความว่า SQL Server ละเว้น 0s ชั้นนำ กลไกเบื้องหลังคืออะไร ฉันจะให้ SQL Server คืนค่าตามที่ฉันแทรก (เช่น0023และ23) ได้อย่างไร

2
การแทรกดัชนีแบบไม่รวมกลุ่ม
สมมติว่าฉันมีโต๊ะแบบนี้: create table SomeTable ( id int identity(1, 1) not null primary key clustered, SomeString1 varchar(50) not null, SomeString2 varchar(50) not null ) go create nonclustered index IX_SomeString1 on SomeTable(SomeString1) go ถ้าฉันจะทำสิ่งนี้: insert into SomeTable(SomeString1, SomeString2) values('foo', 'bar') go และดูแผนการดำเนินการจริงฉันเห็นเฉพาะการแทรกดัชนีแบบกลุ่ม เหตุใดฉันจึงไม่เห็นการแทรกดัชนีที่ไม่ได้เป็นคลัสเตอร์ในแผนการดำเนินการ
10 sql-server 

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