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

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

8
วัตถุ 'DF __ *' ขึ้นอยู่กับคอลัมน์ '*' - การเปลี่ยน int เป็นสองเท่า
โดยทั่วไปฉันได้รับตารางในฐานข้อมูล EF ที่มีคุณสมบัติดังต่อไปนี้: public int Id { get; set; } public string Title { get; set; } public string Description { get; set; } public string Image { get; set; } public string WatchUrl { get; set; } public int Year { get; set; } public string Source { get; …

7
ประโยค SQL OVER () - เมื่อใดและทำไมจึงมีประโยชน์?
USE AdventureWorks2008R2; GO SELECT SalesOrderID, ProductID, OrderQty ,SUM(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Total' ,AVG(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Avg' ,COUNT(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Count' ,MIN(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Min' ,MAX(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Max' FROM Sales.SalesOrderDetail WHERE SalesOrderID IN(43659,43664); ฉันอ่านเกี่ยวกับข้อนั้นและฉันไม่เข้าใจว่าทำไมฉันต้องการมัน ฟังก์ชั่นOverทำอะไร? อะไรPartitioning Byทำอย่างไร ทำไมฉันไม่สามารถทำแบบสอบถามที่มีการเขียนGroup By SalesOrderID?

5
OPTION (RECOMPILE) เร็วกว่าเสมอ ทำไม?
ฉันพบสถานการณ์แปลก ๆ ที่ผนวกOPTION (RECOMPILE)กับแบบสอบถามของฉันทำให้การทำงานในครึ่งวินาทีในขณะที่ละเว้นมันทำให้แบบสอบถามใช้เวลานานกว่าห้านาที นี่คือกรณีที่เมื่อแบบสอบถามจะถูกดำเนินการจากการวิเคราะห์คำถามหรือจากโปรแกรมของฉัน C # SqlCommand.ExecuteReader()ผ่าน โทร (หรือไม่โทร) DBCC FREEPROCCACHEหรือDBCC dropcleanbuffersสร้างความแตกต่าง; ผลลัพธ์การสืบค้นจะส่งคืนทันทีด้วยOPTION (RECOMPILE)และมากกว่าห้านาทีโดยไม่มี แบบสอบถามจะถูกเรียกด้วยพารามิเตอร์เดียวกันเสมอ [เพื่อประโยชน์ในการทดสอบนี้] ฉันใช้ SQL Server 2008 ฉันค่อนข้างสบายใจกับการเขียน SQL แต่ไม่เคยใช้OPTIONคำสั่งในแบบสอบถามมาก่อนและไม่คุ้นเคยกับแนวคิดทั้งหมดของแผนแคชจนกว่าจะสแกนโพสต์ในฟอรัมนี้ ความเข้าใจของฉันจากโพสต์OPTION (RECOMPILE)คือการดำเนินการที่มีราคาแพง ดูเหมือนจะสร้างกลยุทธ์การค้นหาใหม่สำหรับแบบสอบถาม แล้วเหตุใดจึงเป็นเช่นนั้นแบบสอบถามที่ตามมาที่ละเว้นOPTION (RECOMPILE)จึงช้ามาก? แบบสอบถามที่ตามมาไม่ควรใช้กลยุทธ์การค้นหาที่คำนวณจากการโทรก่อนหน้าซึ่งรวมถึงคำแนะนำการคอมไพล์ใหม่หรือไม่ มันผิดปกติหรือไม่ที่มีคิวรีที่ต้องการคำแนะนำการคอมไพล์ซ้ำในการโทรทุกครั้ง? ขออภัยสำหรับคำถามระดับเริ่มต้น แต่ฉันไม่สามารถสร้างหัวหรือก้อยของเรื่องนี้ได้ อัปเดต: ฉันถูกขอให้โพสต์ข้อความค้นหา ... select acctNo,min(date) earliestDate from( select acctNo,tradeDate as date from datafeed_trans where feedid=@feedID and feedDate=@feedDate …

4
ฟังก์ชัน IndexOf ใน T-SQL
เมื่อระบุคอลัมน์ที่อยู่อีเมลฉันจำเป็นต้องค้นหาตำแหน่งของเครื่องหมาย @ สำหรับการสตริงย่อย อะไรคือสิ่งที่indexofฟังก์ชั่นสำหรับสตริงใน T-SQL? ค้นหาสิ่งที่ส่งคืนตำแหน่งของสตริงย่อยภายในสตริง ใน C # var s = "abcde"; s.IndexOf('c'); // yields 2
168 sql  sql-server  tsql  string 

19
ข้อผิดพลาดการคืนค่า SQL Server - การเข้าถึงถูกปฏิเสธ
ฉันสร้างฐานข้อมูลบนเครื่องท้องถิ่นของฉันแล้วทำสำรองข้อมูลที่เรียกว่าของตารางtables.bakDataLabTables ฉันย้ายข้อมูลสำรองนั้นไปยังเครื่องระยะไกลที่ไม่มีตารางนั้นและพยายามทำการกู้คืน แต่ได้รับข้อผิดพลาดต่อไปนี้: System.Data.SqlClient.SqlError: ระบบปฏิบัติการคืนข้อผิดพลาด '5 (การเข้าถึงถูกปฏิเสธ)' ในขณะที่พยายาม 'RestoreContainer :: ValidateTargetForCreation' บน 'c: \ Program SQL Server \ MSSQL.1 DataLabTables .mdf' ฉันจะแก้ไขสิทธิ์ของฉันได้อย่างไรหากเป็นปัญหา

9
Visual Studio: ContextSwitchDeadlock
ฉันได้รับข้อความแสดงข้อผิดพลาดที่ไม่สามารถแก้ไขได้ มันมาจาก Visual Studio หรือดีบักเกอร์ ฉันไม่แน่ใจว่าเงื่อนไขข้อผิดพลาดขั้นสุดท้ายอยู่ใน VS, ดีบักเกอร์, โปรแกรมของฉันหรือฐานข้อมูล นี่คือแอพ Windows ไม่ใช่เว็บแอป ข้อความแรกจาก VS คือกล่องป๊อปอัพที่พูดว่า: "ไม่มีสัญลักษณ์ถูกโหลดสำหรับกรอบการโทรสแต็คใด ๆ รหัสแหล่งที่มาไม่สามารถแสดงได้" เมื่อคลิกแล้วฉันจะได้รับ: " ตรวจพบ ContextSwitchDeadlock " พร้อมกับข้อความยาวที่ทำซ้ำด้านล่าง ข้อผิดพลาดเกิดขึ้นในการวนรอบที่สแกน DataTable สำหรับแต่ละบรรทัดจะใช้ค่าคีย์ (HIC #) จากตารางเป็นพารามิเตอร์สำหรับ SqlCommand คำสั่งถูกใช้เพื่อสร้าง SqlDataReader ซึ่งส่งคืนหนึ่งบรรทัด เปรียบเทียบข้อมูล หากตรวจพบข้อผิดพลาดแถวจะถูกเพิ่มไปยัง DataTable ที่สอง ดูเหมือนว่าข้อผิดพลาดจะเกี่ยวข้องกับระยะเวลาที่โพรซีเดอร์ใช้ในการรัน (เช่นหลังจาก 60 วินาที) ไม่พบข้อผิดพลาดจำนวนเท่าใด ฉันไม่คิดว่ามันเป็นปัญหาหน่วยความจำ ไม่มีการประกาศตัวแปรภายในลูป วัตถุเท่านั้นที่สร้างขึ้นคือ SqlDataReaders และพวกเขาอยู่ในการใช้โครงสร้าง เพิ่ม System.GC.Collect …

10
เมื่อกู้คืนข้อมูลสำรองฉันจะยกเลิกการเชื่อมต่อที่ใช้งานอยู่ทั้งหมดได้อย่างไร
SQL Server 2005 ของฉันไม่คืนค่าการสำรองข้อมูลเนื่องจากการเชื่อมต่อที่ใช้งานอยู่ ฉันจะบังคับมันได้อย่างไร

13
อัปเดตหลายคอลัมน์ใน SQL
มีวิธีอัปเดตหลายคอลัมน์ในเซิร์ฟเวอร์ SQL เช่นเดียวกับที่ใช้คำสั่ง insert หรือไม่? สิ่งที่ต้องการ: Update table1 set (a,b,c,d,e,f,g,h,i,j,k)= (t2.a,t2.b,t2.c,t2.d,t2.e,t2.f,t2.g,t2.h,t2.i,t2.j,t2.k) from table2 t2 where table1.id=table2.id หรืออะไรทำนองนั้นแทนที่จะชอบ: update table set a=t2.a,b=t2.b etc ซึ่งน่าเบื่อที่จะเขียนถ้าคุณมี 100+ คอลัมน์

10
ฉันจะเปลี่ยนฐานข้อมูลเริ่มต้นใน SQL Server โดยไม่ต้องใช้ MS SQL Server Management Studio ได้อย่างไร
ฉันทิ้งฐานข้อมูลจาก SQL Server แต่ปรากฎว่าเข้าสู่ระบบของฉันถูกตั้งค่าให้ใช้ฐานข้อมูลที่ลดลงเป็นค่าเริ่มต้น ฉันสามารถเชื่อมต่อกับ SQL Server Management Studio โดยใช้ปุ่ม 'options' ในกล่องโต้ตอบการเชื่อมต่อและเลือก 'master' เป็นฐานข้อมูลเพื่อเชื่อมต่อ อย่างไรก็ตามเมื่อใดก็ตามที่ฉันพยายามทำสิ่งใด ๆ ใน object explorer จะพยายามเชื่อมต่อโดยใช้ฐานข้อมูลเริ่มต้นและล้มเหลว ไม่มีใครรู้วิธีการตั้งค่าฐานข้อมูลเริ่มต้นของฉันโดยไม่ต้องใช้วัตถุ Explorer ?

5
ความแตกต่างระหว่างฐานข้อมูลและสคีมา
อะไรคือความแตกต่างระหว่างฐานข้อมูลและสคีมาใน SQL Server ทั้งสองเป็นคอนเทนเนอร์ของตารางและข้อมูล หากมีการลบ Schema แล้วตารางทั้งหมดใน Schema นั้นจะถูกลบโดยอัตโนมัติหรือถูกลบเมื่อฐานข้อมูลถูกลบหรือไม่

8
อ้างถึงคอลัมน์ชื่อแทนใน WHERE Clause
SELECT logcount, logUserID, maxlogtm , DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff FROM statslogsummary WHERE daysdiff > 120 ฉันเข้าใจ "ชื่อคอลัมน์ไม่ถูกต้อง daysdiff" Maxlogtm เป็นฟิลด์ datetime มันเป็นสิ่งเล็กน้อยที่ทำให้ฉันบ้า

11
เข้าร่วมซ้ายซ้ายจะส่งกลับระเบียนมากกว่าที่มีอยู่ในตารางด้านซ้ายได้อย่างไร
ฉันมีการเข้าร่วมด้านซ้ายด้านนอกขั้นพื้นฐานมากเพื่อส่งคืนผลลัพธ์ทั้งหมดจากตารางด้านซ้ายและข้อมูลเพิ่มเติมจากตารางที่ใหญ่กว่ามาก ตารางด้านซ้ายมีระเบียน 4935 แต่เมื่อฉันออกไปด้านนอกเข้าร่วมกับตารางเพิ่มเติมการนับระเบียนนั้นใหญ่กว่ามาก เท่าที่ฉันทราบมันเป็นข่าวประเสริฐแน่นอนที่ซ้ายด้านนอกเข้าร่วมจะส่งกลับระเบียนทั้งหมดจากตารางด้านซ้ายด้วยระเบียนที่ตรงกันจากตารางด้านขวาและค่า null สำหรับแถวใด ๆ ที่ไม่สามารถจับคู่ได้ดังนั้นฉันเข้าใจว่าควร เป็นไปไม่ได้ที่จะส่งคืนแถวมากกว่าที่มีอยู่ในตารางด้านซ้าย แต่มันเกิดขึ้นเหมือนกันทั้งหมด! แบบสอบถาม SQL ดังนี้: SELECT SUSP.Susp_Visits.SuspReason, SUSP.Susp_Visits.SiteID FROM SUSP.Susp_Visits LEFT OUTER JOIN DATA.Dim_Member ON SUSP.Susp_Visits.MemID = DATA.Dim_Member.MembershipNum บางทีฉันได้ทำผิดพลาดในไวยากรณ์หรือความเข้าใจของฉันออกจากซ้ายเข้าร่วมไม่สมบูรณ์หวังว่าบางคนสามารถอธิบายว่าสิ่งนี้อาจเกิดขึ้นได้อย่างไร ป.ล. ขอบคุณสำหรับคำตอบที่ดีความเข้าใจของฉันในการเข้าร่วมด้านซ้ายด้านนอกตอนนี้ดีขึ้นมากใคร ๆ ก็สามารถแนะนำวิธีแก้ไขแบบสอบถามนี้เพื่อที่ฉันจะได้รับบันทึกกลับมาเท่าที่มีอยู่ในตารางด้านซ้าย แบบสอบถามนี้เป็นการสร้างรายงานอย่างหมดจดและการจับคู่ที่ซ้ำกันก็ทำให้เกิดความสับสน / Postscript

6
วิธีการสร้างตาราง Temp พร้อม SELECT * INTO tempTable จาก CTE Query
ฉันมีคิวรี่ MS SQL CTE ซึ่งฉันต้องการสร้างตารางชั่วคราว ฉันไม่แน่ใจว่าจะทำอย่างไรเพราะจะทำให้เกิดInvalid Object nameข้อผิดพลาด ด้านล่างนี้เป็นข้อความค้นหาทั้งหมดสำหรับการอ้างอิง SELECT * INTO TEMPBLOCKEDDATES FROM ;with Calendar as ( select EventID, EventTitle, EventStartDate, EventEndDate, EventEnumDays,EventStartTime,EventEndTime, EventRecurring, EventStartDate as PlannedDate ,EventType from EventCalender where EventActive = 1 AND LanguageID =1 AND EventBlockDate = 1 union all select EventID, EventTitle, EventStartDate, EventEndDate, EventEnumDays,EventStartTime,EventEndTime, …

5
วิธีตรวจสอบการมีอยู่ของชนิดตารางที่ผู้ใช้กำหนดใน SQL Server 2008
ฉันมีประเภทตารางที่ผู้ใช้กำหนด ฉันต้องการตรวจสอบว่ามีอยู่จริงก่อนทำการแก้ไขในแพทช์โดยใช้OBJECT_ID(name, type)ฟังก์ชั่น สิ่งtypeที่ควรจะส่งผ่านจากการแจงนับสำหรับประเภทตารางที่ผู้ใช้กำหนด? N'U' เช่นสำหรับตารางที่ผู้ใช้กำหนดไม่ทำงานเช่น IF OBJECT_ID(N'MyType', N'U') IS NOT NULL

23
ฉันจะคัดลอกฐานข้อมูล SQL Azure ไปยังเซิร์ฟเวอร์การพัฒนาในพื้นที่ได้อย่างไร
ไม่มีใครรู้ว่าฉันสามารถคัดลอกฐานข้อมูล SQL Azure ไปยังเครื่องพัฒนาของฉันได้อย่างไร ฉันต้องการหยุดจ่ายเพื่อให้มีฐานข้อมูลการพัฒนาในระบบคลาวด์ แต่เป็นวิธีที่ดีที่สุดในการรับข้อมูลการผลิต ฉันคัดลอกฐานข้อมูลการผลิตของฉันไปยังฐานข้อมูลการพัฒนาใหม่ แต่ฉันต้องการมีฐานข้อมูลเดียวกันนั้น ข้อเสนอแนะใด ๆ

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