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

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


9
วิธีง่ายๆในการเปลี่ยนคอลัมน์และแถวใน SQL?
ฉันจะสลับคอลัมน์ด้วยแถวใน SQL ได้อย่างไร มีคำสั่งง่ายๆในการเปลี่ยนหรือไม่? เช่นเปิดผลลัพธ์นี้: Paul | John | Tim | Eric Red 1 5 1 3 Green 8 4 3 5 Blue 2 2 9 1 ในสิ่งนี้: Red | Green | Blue Paul 1 8 2 John 5 4 2 Tim 1 3 9 Eric 3 5 1 PIVOT …
110 sql  sql-server  tsql  pivot 

13
บันทึกธุรกรรมสำหรับฐานข้อมูลเต็ม
ฉันมีขั้นตอนการดำเนินการที่ยาวนานซึ่งเก็บธุรกรรมที่เปิดไว้ตลอดระยะเวลาเต็ม ฉันไม่สามารถควบคุมวิธีดำเนินการนี้ได้ เนื่องจากธุรกรรมถูกเปิดไว้ตลอดระยะเวลาเต็มเมื่อบันทึกธุรกรรมกรอก SQL Server ไม่สามารถเพิ่มขนาดของล็อกไฟล์ได้ "The transaction log for database 'xxx' is full"ดังนั้นกระบวนการล้มเหลวด้วยข้อผิดพลาด ฉันพยายามป้องกันปัญหานี้โดยการเพิ่มขนาดของไฟล์บันทึกธุรกรรมในคุณสมบัติฐานข้อมูล แต่ฉันได้รับข้อผิดพลาดเดียวกัน ไม่แน่ใจว่าควรลองอะไรต่อไป กระบวนการนี้ใช้เวลาหลายชั่วโมงดังนั้นจึงไม่ใช่เรื่องง่ายที่จะเล่นแบบลองผิดลองถูก ความคิดใด ๆ ? หากใครสนใจกระบวนการนี้เป็นการนำเข้าองค์กร Microsoft Dynamics CRM 4.0. มีพื้นที่ดิสก์มากมายเรามีการเข้าสู่ระบบในโหมดการบันทึกอย่างง่ายและได้สำรองข้อมูลบันทึกไว้ก่อนที่จะเริ่มกระบวนการ - = - = - = - = - อัปเดต - = - = - = - = - ขอบคุณสำหรับความคิดเห็นจนถึงตอนนี้ ต่อไปนี้เป็นสิ่งที่ทำให้ฉันเชื่อว่าบันทึกจะไม่เติบโตเนื่องจากธุรกรรมที่เปิดอยู่: ฉันได้รับข้อผิดพลาดต่อไปนี้ ... …

7
ฟังก์ชัน COALESCE ใน TSQL
ใครช่วยอธิบายว่าฟังก์ชัน COALESCE ใน TSQL ทำงานอย่างไร ไวยากรณ์มีดังนี้ COALESCE (x, y) เอกสาร MSDN ในฟังก์ชันนี้ค่อนข้างคลุมเครือ


21
การหลีกเลี่ยงการฉีด SQL โดยไม่มีพารามิเตอร์
เรากำลังมีการอภิปรายอีกครั้งในที่ทำงานเกี่ยวกับการใช้การสืบค้น sql ที่เป็นพารามิเตอร์ในโค้ดของเรา เรามีสองด้านในการสนทนา: ฉันและคนอื่น ๆ บางคนที่บอกว่าเราควรใช้พารามิเตอร์เพื่อป้องกันการฉีด sql และคนอื่น ๆ ที่ไม่คิดว่าจำเป็น แต่พวกเขาต้องการแทนที่เครื่องหมายวรรคตอนเดี่ยวด้วยเครื่องหมายอะพอสทรอฟีสองตัวในทุกสตริงเพื่อหลีกเลี่ยงการฉีด sql ฐานข้อมูลของเรากำลังรัน Sql Server 2005 หรือ 2008 และฐานรหัสของเราทำงานบน. NET framework 2.0 ขอยกตัวอย่างง่ายๆใน C #: ฉันต้องการให้เราใช้สิ่งนี้: string sql = "SELECT * FROM Users WHERE Name=@name"; SqlCommand getUser = new SqlCommand(sql, connection); getUser.Parameters.AddWithValue("@name", userName); //... blabla - do something here, …

4
SQL Server CTE และตัวอย่างการเรียกซ้ำ
ฉันไม่เคยใช้ CTE กับการเรียกซ้ำ ฉันเพิ่งอ่านบทความเกี่ยวกับเรื่องนี้ บทความนี้แสดงข้อมูลพนักงานด้วยความช่วยเหลือของ Sql server CTE และการเรียกซ้ำ โดยทั่วไปจะแสดงข้อมูลพนักงานและข้อมูลผู้จัดการของพวกเขา ฉันไม่เข้าใจวิธีการทำงานของคำค้นหานี้ นี่คือคำถาม: WITH cteReports (EmpID, FirstName, LastName, MgrID, EmpLevel) AS ( SELECT EmployeeID, FirstName, LastName, ManagerID, 1 FROM Employees WHERE ManagerID IS NULL UNION ALL SELECT e.EmployeeID, e.FirstName, e.LastName, e.ManagerID, r.EmpLevel + 1 FROM Employees e INNER JOIN cteReports r …

11
SQL Server: เลือกเฉพาะแถวที่มี MAX (DATE)
ฉันมีตารางข้อมูล (ฐานข้อมูลคือ MSSQL): ID OrderNO PartCode Quantity DateEntered 417 2144 44917 100 18-08-11 418 7235 11762 5 18-08-11 419 9999 60657 100 18-08-11 420 9999 60657 90 19-08-11 ฉันต้องการสร้างแบบสอบถามที่ส่งคืน OrderNO, PartCode และ Quantity แต่สำหรับคำสั่งซื้อที่ลงทะเบียนล่าสุดเท่านั้น จากตารางตัวอย่างฉันต้องการกลับข้อมูลต่อไปนี้: OrderNO PartCode Quantity 2144 44917 100 7235 11762 5 9999 60657 90 สังเกตว่ามีการส่งคืนคำสั่ง 9999 เพียงบรรทัดเดียว …
109 sql-server 

8
หลีกเลี่ยงรายการที่ซ้ำกันใน INSERT INTO SELECT query ใน SQL Server
ฉันมีสองตารางต่อไปนี้: Table1 ---------- ID Name 1 A 2 B 3 C Table2 ---------- ID Name 1 Z ฉันต้องใส่ข้อมูลจากการTable1 Table2ฉันสามารถใช้ไวยากรณ์ต่อไปนี้: INSERT INTO Table2(Id, Name) SELECT Id, Name FROM Table1 อย่างไรก็ตามในกรณีของฉัน ID ที่ซ้ำกันอาจมีอยู่ในTable2(ในกรณีของฉันมันเป็นแค่ " 1") และฉันไม่ต้องการคัดลอกอีกครั้งเพราะจะทำให้เกิดข้อผิดพลาด ฉันสามารถเขียนสิ่งนี้: IF NOT EXISTS(SELECT 1 FROM Table2 WHERE Id=1) INSERT INTO Table2 (Id, name) SELECT Id, …

6
ฉันสามารถสร้างฟังก์ชันแบบใช้ครั้งเดียวในสคริปต์หรือขั้นตอนที่จัดเก็บได้หรือไม่?
ใน SQL Server 2005 มีแนวคิดเกี่ยวกับการใช้งานครั้งเดียวหรือฟังก์ชันโลคัลที่ประกาศภายในสคริปต์ SQL หรือ Stored Procedure หรือไม่ ฉันต้องการลบล้างความซับซ้อนบางอย่างในสคริปต์ที่ฉันกำลังเขียน แต่จำเป็นต้องสามารถประกาศฟังก์ชันได้ แค่สงสัย.

10
ฟังก์ชัน LEN ไม่รวมช่องว่างต่อท้ายใน SQL Server
ฉันมีตารางทดสอบต่อไปนี้ใน SQL Server 2005: CREATE TABLE [dbo].[TestTable] ( [ID] [int] NOT NULL, [TestField] [varchar](100) NOT NULL ) เติมด้วย: INSERT INTO TestTable (ID, TestField) VALUES (1, 'A value'); -- Len = 7 INSERT INTO TestTable (ID, TestField) VALUES (2, 'Another value '); -- Len = 13 + 6 spaces เมื่อฉันพยายามค้นหาความยาวของ TestField …
109 sql-server 

8
ผู้ให้บริการ 'Microsoft.ACE.OLEDB.16.0' ไม่ได้ลงทะเบียนบนเครื่องท้องถิ่น (System.Data)
ฉันได้รับข้อผิดพลาดนี้เมื่อพยายามเชื่อมต่อกับ excel ใด ๆ ผ่าน MSSQL Server Data Import เช่นแพ็คเกจ SSIS Microsoft.ACE.OLEDB.16.0ผู้ให้บริการไม่ได้ลงทะเบียนในเครื่องภายใน ( System.Data) ไม่ใช่เวอร์ชันเดียวกันฉันคิดว่าจำเป็นต้องมีการแก้ไขอื่น ๆ

4
วิธีเพิ่มกลุ่มผู้ใช้ Active Directory เมื่อเข้าสู่ระบบใน SQL Server
ฉันมีแอปพลิเคชัน. net ซึ่งเชื่อมต่อกับ SQL Server โดยใช้การตรวจสอบสิทธิ์ของ windows เราไม่สามารถใช้การรับรองความถูกต้องของ SQL Server ในแอปพลิเคชัน เรามีผู้ใช้ Active Directory จำนวนมากสำหรับโครงการของเรา ดังนั้นเราจึงต้องสร้างบัญชีล็อกอินแยกกันสำหรับผู้ใช้ Active Directory แต่ละรายใน SQL Server แทนที่จะสร้างบัญชีล็อกอินแยกต่างหากสำหรับผู้ใช้ AD แต่ละรายมีวิธีใดบ้างในการใช้กลุ่มผู้ใช้ Active Directory ใน SQL Server

17
จะพิมพ์ VARCHAR (MAX) โดยใช้ Print Statement ได้อย่างไร?
ฉันมีรหัสซึ่งคือ: DECLARE @Script VARCHAR(MAX) SELECT @Script = definition FROM manged.sys.all_sql_modules sq where sq.object_id = (SELECT object_id from managed.sys.objects Where type = 'P' and Name = 'usp_gen_data') Declare @Pos int SELECT @pos=CHARINDEX(CHAR(13)+CHAR(10),@script,7500) PRINT SUBSTRING(@Script,1,@Pos) PRINT SUBSTRING(@script,@pos,8000) ความยาวของสคริปต์อยู่ที่ประมาณ 10,000 ตัวอักษรและเนื่องจากฉันใช้คำชี้แจงการพิมพ์ซึ่งสามารถรองรับได้สูงสุด 8000 เท่านั้นดังนั้นฉันจึงใช้คำสั่งพิมพ์สองชุด ปัญหาคือเมื่อฉันมีสคริปต์ซึ่งมีความยาว 18000 อักขระแล้วฉันเคยใช้คำสั่งพิมพ์ 3 ชุด มีวิธีที่ฉันสามารถตั้งค่าจำนวนคำสั่งพิมพ์ขึ้นอยู่กับความยาวของสคริปต์ได้หรือไม่?

6
จะลบแถวบนสุด 1,000 แถวจากตารางโดยใช้ Sql Server 2008 ได้อย่างไร
ฉันมีตารางใน SQL Server ฉันต้องการลบ 1,000 แถวแรกออกจากมัน อย่างไรก็ตามฉันลองแล้ว แต่แทนที่จะลบแถวบนสุด 1,000 แถวมันจะลบแถวทั้งหมดในตาราง นี่คือรหัส: delete from [mytab] select top 1000 a1,a2,a3 from [mytab]

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