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

Microsoft SQL Server เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) ใช้แท็กนี้สำหรับ SQL Server ทุกรุ่นรวมถึง Compact, Express, Azure, Fast-track, APS (เดิมคือ PDW) และ Azure SQL DW อย่าใช้แท็กนี้สำหรับ DBMS ประเภทอื่น (MySQL, PostgreSQL, Oracle, ฯลฯ ) อย่าใช้แท็กนี้สำหรับปัญหาเกี่ยวกับซอฟต์แวร์และการพัฒนาอุปกรณ์พกพาเว้นแต่จะเกี่ยวข้องโดยตรงกับฐานข้อมูล

7
วิธีที่เหมาะสมที่สุดในการเชื่อมต่อ / รวมสตริง
ฉันกำลังหาวิธีรวมสตริงจากแถวต่างๆให้เป็นแถวเดียว ฉันต้องการทำสิ่งนี้ในสถานที่ต่างๆดังนั้นการมีฟังก์ชันเพื่ออำนวยความสะดวกก็น่าจะดี ฉันได้ลองวิธีแก้ปัญหาโดยใช้COALESCEและFOR XMLแต่ก็ไม่ได้ตัดให้ฉัน การรวมสตริงจะทำสิ่งนี้: id | Name Result: id | Names -- - ---- -- - ----- 1 | Matt 1 | Matt, Rocks 1 | Rocks 2 | Stylus 2 | Stylus ฉันได้ดูฟังก์ชันการรวมที่กำหนดโดย CLRเพื่อทดแทนCOALESCEและFOR XMLแต่เห็นได้ชัดว่าSQL Azure ไม่รองรับสิ่งที่กำหนดโดย CLR ซึ่งเป็นความเจ็บปวดสำหรับฉันเพราะฉันรู้ว่าการใช้งานได้จะช่วยแก้ปัญหาได้มากมาย ปัญหาสำหรับฉัน มีวิธีแก้ปัญหาที่เป็นไปได้หรือวิธีการที่ดีที่สุดในทำนองเดียวกัน (ซึ่งอาจไม่เหมาะสมเท่า CLR แต่เดี๋ยวก่อนฉันจะเอาสิ่งที่ฉันได้รับ) ที่ฉันสามารถใช้เพื่อรวบรวมสิ่งของของฉันได้ไหม

4
สาเหตุของกระบวนการที่ตกเป็นเหยื่อการหยุดชะงัก
ฉันมีกระบวนการกับ Select ซึ่งใช้เวลานานในการดำเนินการตามลำดับ 5 ถึง 10 นาที ขณะนี้ฉันไม่ได้ใช้ NOLOCK เป็นคำแนะนำสำหรับเอ็นจินฐานข้อมูล MS SQL ในเวลาเดียวกันเรามีกระบวนการอื่นในการอัปเดตและแทรกลงในฐานข้อมูลเดียวกันและตารางเดียวกัน กระบวนการแรกได้เริ่มต้นเมื่อเร็ว ๆ นี้เพื่อสิ้นสุดก่อนเวลาอันควรด้วยข้อความ SQLEXCEPTION: ธุรกรรมหยุดชะงักในทรัพยากรที่ถูกล็อกด้วยกระบวนการอื่นและได้รับเลือกให้เป็นเหยื่อการชะงักงัน กระบวนการแรกนี้กำลังทำงานในไซต์อื่น ๆ ในเงื่อนไขที่เหมือนกัน แต่มีฐานข้อมูลที่เล็กกว่าดังนั้นคำสั่ง select ที่เป็นปัญหาจึงใช้เวลาสั้นกว่ามาก (ตามลำดับ 30 วินาทีหรือมากกว่านั้น) ในไซต์อื่น ๆ เหล่านี้ฉันไม่ได้รับข้อความหยุดชะงักในไซต์อื่น ๆ เหล่านี้ ฉันยังไม่ได้รับข้อความนี้ในไซต์ที่มีปัญหาในตอนแรก แต่ฉันคิดว่าเนื่องจากฐานข้อมูลเติบโตขึ้นฉันเชื่อว่าฉันต้องข้ามเกณฑ์บางอย่าง นี่คือคำถามของฉัน: เวลาที่ใช้ในการดำเนินการธุรกรรมอาจทำให้กระบวนการที่เกี่ยวข้องมีแนวโน้มที่จะถูกตั้งค่าสถานะเป็นเหยื่อการชะงักงัน หากฉันดำเนินการเลือกด้วยคำใบ้ NOLOCK สิ่งนี้จะลบปัญหาหรือไม่ ฉันสงสัยว่าฟิลด์วันที่และเวลาที่ถูกตรวจสอบเป็นส่วนหนึ่งของคำสั่ง WHERE ในคำสั่ง select ทำให้เวลาในการค้นหาช้า ฉันสามารถสร้างดัชนีตามฟิลด์นี้ได้หรือไม่ จะแนะนำหรือไม่?

6
ฟังก์ชัน SQL เป็นค่าพารามิเตอร์เริ่มต้น?
ฉันลองเปลี่ยนค่าพารามิเตอร์เริ่มต้นด้วยสิ่งนี้: ALTER PROCEDURE [dbo].[my_sp] @currentDate datetime = GETDATE() และ SQL pre-compiler ทั้งหมดให้ฉันคือข้อผิดพลาดนี้: ข่าวสารเกี่ยวกับ 102, ระดับ 15, สถานะ 1, ขั้นตอน my_sp, บรรทัดที่ 8 ไวยากรณ์ไม่ถูกต้องใกล้ '('. ฉันได้สร้างขั้นตอนแล้ว (ฉันไม่แน่ใจว่าเกี่ยวข้องหรือไม่) ฉันใช้ค่าเริ่มต้นที่เป็นโมฆะและตรวจสอบในภายหลัง แต่ดูเหมือนจะไม่เหมาะสม ฉันสามารถทำสิ่งนี้ในบรรทัดเดียวได้หรือไม่? อัปเดต: ฉันกำลังจะออกจากคำอธิบายของ MSDN เกี่ยวกับพารามิเตอร์ขั้นตอนการจัดเก็บ : [= default] เป็นค่าเริ่มต้นสำหรับพารามิเตอร์ หากกำหนดค่าดีฟอลต์ฟังก์ชันสามารถดำเนินการได้โดยไม่ต้องระบุค่าสำหรับพารามิเตอร์นั้น หมายเหตุ: ค่าพารามิเตอร์ดีฟอลต์สามารถระบุได้สำหรับฟังก์ชัน CLR ยกเว้นชนิดข้อมูล varchar (max) และ varbinary (max) เมื่อพารามิเตอร์ของฟังก์ชันมีค่าดีฟอลต์คีย์เวิร์ด DEFAULT จะต้องถูกระบุเมื่อฟังก์ชันถูกเรียกเพื่อดึงค่าดีฟอลต์ …

9
แทรกอัปเดต proc ที่จัดเก็บไว้บน SQL Server
ฉันได้เขียน proc ที่เก็บไว้ซึ่งจะทำการอัปเดตหากมีบันทึกอยู่มิฉะนั้นจะทำการแทรก มีลักษณะดังนี้: update myTable set Col1=@col1, Col2=@col2 where ID=@ID if @@rowcount = 0 insert into myTable (Col1, Col2) values (@col1, @col2) ตรรกะของฉันที่อยู่เบื้องหลังการเขียนด้วยวิธีนี้คือการอัปเดตจะทำการเลือกโดยปริยายโดยใช้ where clause และถ้าสิ่งนั้นส่งกลับ 0 ดังนั้นการแทรกจะเกิดขึ้น ทางเลือกอื่นในการทำเช่นนี้คือทำการเลือกจากนั้นขึ้นอยู่กับจำนวนแถวที่ส่งคืนไม่ว่าจะอัปเดตหรือแทรก สิ่งนี้ฉันถือว่าไม่มีประสิทธิภาพเพราะถ้าคุณจะทำการอัปเดตมันจะทำให้เกิดการเลือก 2 ครั้ง (การเรียกเลือกอย่างชัดเจนครั้งแรกและครั้งที่สองโดยนัยในตำแหน่งของการอัปเดต) หาก proc ทำการแทรกก็จะไม่มีความแตกต่างในด้านประสิทธิภาพ ตรรกะของฉันอยู่ที่นี่หรือไม่? นี่เป็นวิธีที่คุณจะรวมส่วนแทรกและอัปเดตลงใน proc ที่จัดเก็บไว้หรือไม่?


4
ส่งออกสคีมาฐานข้อมูลเป็นไฟล์ SQL
เป็นไปได้ไหมในMS SQL Server 2008การส่งออกโครงสร้างฐานข้อมูลไปยังT-SQLไฟล์ ฉันต้องการส่งออกไม่เพียง แต่สคีมาตารางเท่านั้น แต่ยังรวมถึงคีย์หลักคีย์ต่างประเทศข้อ จำกัด ดัชนีโพรซีเดอร์ที่เก็บไว้ประเภท / ฟังก์ชันที่ผู้ใช้กำหนด นอกจากนี้ฉันไม่ต้องการให้มีข้อมูลอยู่ในT-SQLไฟล์นี้ มีวิธีใดบ้างที่จะบรรลุสิ่งนั้น?

10
SQL Server -“ sys.functions” อยู่ที่ไหน
SQL Server 2005 มีsys.XXXมุมมองที่ยอดเยี่ยมเกี่ยวกับแค็ตตาล็อกระบบที่ฉันใช้บ่อย สิ่งที่ทำให้ฉันสะดุดคือเหตุใดจึงมีsys.proceduresมุมมองเพื่อดูข้อมูลเกี่ยวกับขั้นตอนการจัดเก็บของคุณ แต่ไม่มีsys.functionsมุมมองที่จะเห็นเหมือนกันสำหรับฟังก์ชันที่จัดเก็บของคุณ ไม่มีใครใช้ฟังก์ชั่นที่เก็บไว้? ฉันคิดว่ามันมีประโยชน์มากสำหรับเช่นคอลัมน์จากการคำนวณและอื่น ๆ ! มีเหตุผลที่เฉพาะเจาะจงsys.functionsขาดหายไปหรือเป็นเพียงสิ่งที่ถือว่าไม่สำคัญพอที่จะใส่ลงในsysมุมมองแค็ตตาล็อก? มีใน SQL Server 2008 หรือไม่ ไชโยมาร์ค

19
ฉันควรทำดัชนีฟิลด์บิตใน SQL Server หรือไม่
ฉันจำได้ว่าอ่านถึงจุดหนึ่งว่าการสร้างดัชนีเขตข้อมูลที่มีคาร์ดินาลลิตี้ต่ำ (จำนวนค่าที่แตกต่างกันต่ำ) ไม่คุ้มค่าที่จะทำ ฉันยอมรับว่าฉันไม่รู้เพียงพอเกี่ยวกับการทำงานของดัชนีเพื่อทำความเข้าใจว่าเหตุใดจึงเป็นเช่นนั้น แล้วจะเกิดอะไรขึ้นถ้าฉันมีตารางที่มี 100 ล้านแถวและฉันกำลังเลือกระเบียนที่เขตข้อมูลบิตเป็น 1? สมมติว่า ณ เวลาใดเวลาหนึ่งมีเร็กคอร์ดเพียงไม่กี่รายการที่ฟิลด์บิตเป็น 1 (ตรงข้ามกับ 0) ควรจัดทำดัชนีฟิลด์บิตนั้นหรือไม่? ทำไม? แน่นอนฉันสามารถทดสอบและตรวจสอบแผนการดำเนินการได้และฉันจะทำเช่นนั้น แต่ฉันก็อยากรู้เกี่ยวกับทฤษฎีที่อยู่เบื้องหลัง Cardinality มีความสำคัญเมื่อใดและเมื่อใดไม่?

10
สร้างค่า int แบบสุ่มจาก 3 ถึง 6
เป็นไปได้ไหมใน Microsoft SQL Server สร้างค่า int แบบสุ่มจากต่ำสุดถึงสูงสุด (ตัวอย่าง 3-9, 15-99 เป็นต้น) ฉันรู้ว่าฉันสามารถสร้างจาก 0 ถึง Max แต่จะเพิ่ม Min border ได้อย่างไร? คำค้นหานี้สร้างค่าสุ่มจาก 1 ถึง 6 จำเป็นต้องเปลี่ยนจาก 3 เป็น 6 SELECT table_name, 1.0 + floor(6 * RAND(convert(varbinary, newid()))) magic_number FROM information_schema.tables เพิ่ม 5 วินาทีต่อมา : คำถามโง่ ๆ ขอโทษ ... SELECT table_name, 3.0 + …


14
BACKUP LOG ไม่สามารถดำเนินการได้เนื่องจากไม่มีการสำรองฐานข้อมูลปัจจุบัน
ฉันพยายามกู้คืนฐานข้อมูล แต่ข้อความนี้ปรากฏขึ้น ฉันจะกู้คืนฐานข้อมูลนี้ได้อย่างไร การกู้คืนฐานข้อมูล 'farhangi_db' ล้มเหลว (Microsoft.SqlServer.Management.RelationalEngineTasks) ------------------------------ ข้อมูลเพิ่มเติม: System.Data.SqlClient.SqlError: BACKUP LOG ไม่สามารถดำเนินการได้เนื่องจาก ไม่มีการสำรองฐานข้อมูลปัจจุบัน (Microsoft.SqlServer.SmoExtended)
103 sql-server 

11
วิธีใดที่ดีที่สุดในการจัดเก็บพิกัด (ลองจิจูด / ละติจูดจาก Google Maps) ใน SQL Server
ฉันกำลังออกแบบตารางใน SQL Server 2008 ที่จะจัดเก็บรายชื่อผู้ใช้และ Google Maps Co-ordinate (ลองจิจูดและละติจูด) ฉันต้องการสองช่องหรือสามารถทำได้ด้วย 1? ชนิดข้อมูลที่ดีที่สุด (หรือที่พบบ่อยที่สุด) ที่จะใช้ในการจัดเก็บข้อมูลประเภทนี้คืออะไร

9
หลักเซิร์ฟเวอร์ไม่สามารถเข้าถึงฐานข้อมูลภายใต้บริบทความปลอดภัยปัจจุบันใน SQL Server MS 2012
ฉันพยายามเข้าถึงฐานข้อมูลเซิร์ฟเวอร์โฮสติ้งของฉันผ่าน SQL Server Management Studio ทุกอย่างจนกว่าจะเข้าสู่ระบบได้ดี แต่เมื่อฉันใช้คำสั่งuse myDatabaseมันทำให้ฉันเกิดข้อผิดพลาดนี้: The server principal "****" is not able to access the database "****" under the current security context. ฉันค้นหาและผู้ให้บริการโฮสติ้งได้ระบุการแก้ไขปัญหานี้ แต่สิ่งนี้ไม่ได้ผลสำหรับฉันอาจเป็นเพราะสำหรับ SQL Server Management Studio 2008 อย่างไรก็ตามฉันใช้ SQL Server Management Studio 2012 อาจเป็นปัญหาได้หรือไม่? และถ้ามีใครสามารถบอกทางเลือกใน SSMS 2012 ได้มากกว่านี้?

10
ไม่มีสิ่งประดิษฐ์ com.microsoft.sqlserver: sqljdbc4: jar: 4.0
ฉันกำลังพยายามเพิ่มการพึ่งพาโปรแกรมควบคุม MS SQL ในไฟล์ POM.xml ของฉันและสิ่งต่อไปนี้คือการอ้างอิง <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>sqljdbc4</artifactId> <version>4.0</version> </dependency> แต่ฉันได้รับข้อยกเว้นนี้ ไม่มีสิ่งประดิษฐ์ com.microsoft.sqlserver: sqljdbc4: jar: 4.0 ฉันไม่เข้าใจปัญหาจริงๆ

2
ฉันจะแทรก DATETIME ภายในสตูดิโอ mgmt ของเซิร์ฟเวอร์ SQL ได้อย่างไร
ฉันมีเว็บไซต์ที่แทรกลงในตารางด้านล่างนี้ ฉันจำเป็นต้องทำการแทรกด้วยตนเอง แต่ฉันไม่แน่ใจว่าจะส่งผ่านได้อย่างไรให้เทียบเท่า DateTime ตอนนี้อยู่ใน C # ฉันกำลังเรียกใช้สิ่งนี้ด้านล่างจากตัวแก้ไขแบบสอบถามในสตูดิโอ mgmt ของเซิร์ฟเวอร์ SQL มีวิธีใดบ้างที่จะส่งผ่านวันเวลาปัจจุบันในแบบสอบถามด้านล่างนี้ INSERT INTO [Business] ([IsDeleted] ,[FirstName] ,[LastName] ,[LastUpdated] ,[LastUpdatedBy]) VALUES (0, 'Joe', 'Thomas', ,<LastUpdated, datetime,> ,<LastUpdatedBy, nvarchar(50),>)

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