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

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

4
มีฟังก์ชั่นในตัว (ซ่อนไว้) บน MS-SQL เพื่อยกเลิกการอ้างชื่อวัตถุหรือไม่?
บางครั้งฉันเก็บชื่อวัตถุ (ตัวระบุ) ในฐานข้อมูลของเราเช่นในตารางพารามิเตอร์บางตัว เพราะผมเลือกระเบียนจากตารางเหล่านี้โดยใช้ '=' หรือ 'LIKE' ดำเนินการเปรียบเทียบผมจะต้องดูแลเพื่อเก็บชื่อเหล่านี้มักจะมีหรือไม่มีวงเล็บ IF EXISTS (SELECT 1 FROM MYTABLE WHERE OBJ_NAME = '[TABLE_NAME]'; หรือ IF EXISTS (SELECT 1 FROM MYTABLE WHERE OBJ_NAME = 'TABLE_NAME'; อย่างไรก็ตาม MS-SQL มีฟังก์ชั่นบางอย่างที่คุณสามารถใช้ชื่อวัตถุที่มีหรือไม่มีวงเล็บตัวอย่างเช่นฟังก์ชัน OBJECT_ID () ฉันได้ตั้งค่าตัวอย่างน้อยที่สุดในdbfiddle.uk CREATE TABLE TEST ( ID INT IDENTITY(1,1) PRIMARY KEY, OBJECT sysname NOT NULL ); GO …
12 sql-server  t-sql 

1
ฟีเจอร์ Plan Query Store Force ไม่ทำงาน
คุณลักษณะแผนของ Query Store Force ไม่ได้บังคับใช้แผน ฉันรู้ร้านแบบสอบถาม - บังคับไม่ได้หมายความว่าบังคับ ; อย่างไรก็ตามแผนของฉันอาจไม่เปลี่ยนแปลงอย่างมีนัยสำคัญ แต่เครื่องมือเพิ่มประสิทธิภาพการสืบค้นอาจเลือกดัชนีที่ไม่ถูกต้องตัวเลือกการวนซ้ำเป็นต้น โดยพื้นฐาน: มันไม่เป็นไปตามแผนบังคับของฉัน ผมเคยบังคับแผนจำนวนมากและมันก็ไม่ได้ทำงาน มีอยู่ 0 sys.query_store_plan force_failure_countข้อหาล้มเหลวหรือเหตุผลคือเมื่อฉันมองไปที่ เหตุการณ์ที่ขยายquery_store_plan_forcing_failedไม่ได้ให้ผลใด ๆ 0 เหตุการณ์ ตัวอย่างเช่นแผนซึ่งบังคับใช้เมื่อ 20.09 มีเพียงการรวบรวม 1 ครั้งเท่านั้นที่ใช้แผนการบังคับ แผนแตกต่างกันอย่างมากแผนการหนึ่งที่ใช้การจับคู่แฮชเข้าร่วมกับ INDEX 1 และอีกแผนการใช้การเข้าร่วมแบบวนรอบกับ INDEX 2 รุ่น: Microsoft SQL Server 2016 (SP1-GDR) (KB3210089) - 13.0.4202.2 (X64) ฉันหายไปนี่อะไร

1
ฉันจะลบ SQL Server 2017 ทั้งหมดบน Ubuntu ได้อย่างไร
เอกสารมีคำแนะนำเกี่ยวกับวิธีการลบ SQL Server อย่างไรก็ตามสิ่งนี้ทำให้บางแพ็กเกจอยู่ด้านหลัง ฉันจะลบการติดตามทั้งหมดและถอนการติดตั้ง SQL Server 2017 ได้อย่างไร

1
ตัวเลือก SSMS คือ "ดำเนินการทางลัดกระบวนงานที่เก็บไว้โดยไม่มีตัวเลือกการดำเนินการเพิ่มเติม"
นี่คือตัวเลือกที่พูดมาก ไม่มีเอกสารประกอบและการค้นเว็บไม่มีความช่วยเหลือ เมื่อฉันเรียกใช้คิวรีฉันไม่พบความแตกต่างกับตัวเลือกที่เลือกหรือไม่ได้ตรวจสอบ การตั้งค่านี้ควบคุมอะไร

3
มีวิธีการตรวจสอบว่างในตัวแปรในส่วนคำสั่ง WHERE ที่เกิดขึ้นเพียงครั้งเดียวหรือไม่?
ฉันมีแบบสอบถามในตารางขนาดใหญ่ที่มีลักษณะเช่นนี้: declare @myIdParam int = 1 select * from myTable where (@myIdParam is null or myTable.Id = @myIdParam) มีเงื่อนไขที่คล้ายกันหลายประการเช่นนี้ในส่วนคำสั่งและยังมีการรวมจำนวนมาก แต่นี่เป็นบทสรุป อย่างมีประสิทธิภาพหาก @myIdParam เป็นโมฆะเราไม่ต้องการ จำกัด ผลลัพธ์โดยใช้พารามิเตอร์นี้ ฉันไม่ใช่มืออาชีพ DB แต่จากการทดสอบของฉันดูเหมือนว่าการตรวจสอบ NULL นี้ทำสำหรับทุกเร็กคอร์ดและไม่ได้ปรับให้เหมาะสม แต่อย่างใด ถ้าฉันลบการตรวจสอบโมฆะและสมมติว่าพารามิเตอร์นั้นไม่เป็นโมฆะแบบสอบถามจะส่งคืนทันที มิฉะนั้นจะใช้เวลาสูงสุดสิบวินาที มีวิธีการเพิ่มประสิทธิภาพนี้เพื่อตรวจสอบจะทำเพียงครั้งเดียวที่รันไทม์?
12 sql-server  null 

2
การทำธุรกรรมในขั้นตอนการจัดเก็บ
ฉันต้องการดำเนินการ UPDATE และ INSERT ในธุรกรรมเดียว รหัสนั้นทำงานได้ดีในตัวของมันเอง แต่ฉันต้องการที่จะสามารถเรียกมันได้อย่างง่ายดายและผ่านพารามิเตอร์ที่ต้องการ เมื่อฉันพยายามทำธุรกรรมนี้ในขั้นตอนการจัดเก็บฉันพบข้อผิดพลาดทางไวยากรณ์มากมาย ฉันจะแค็ปซูลโค้ดต่อไปนี้เพื่อให้สามารถเรียกได้อย่างง่ายดาย? BEGIN TRANSACTION AssignUserToTicket GO DECLARE @updateAuthor varchar(100) DECLARE @assignedUser varchar(100) DECLARE @ticketID bigint SET @updateAuthor = 'user1' SET @assignedUser = 'user2' SET @ticketID = 123456 UPDATE tblTicket SET ticketAssignedUserSamAccountName = @assignedUser WHERE (ticketID = @ticketID); INSERT INTO [dbo].[tblTicketUpdate] ([ticketID] ,[updateDetail] ,[updateDateTime] …

3
ฐานข้อมูลกลุ่มความพร้อมใช้งานติดอยู่ในโหมดไม่ซิงโครไนซ์ / กู้คืนค้างอยู่
ในขณะที่อัปเกรดที่เก็บข้อมูลในอินสแตนซ์ของ SQL Server 2014 SP1 (12.0.4422.0) เราพบปัญหาที่ฐานข้อมูลสองแห่งจะไม่เริ่มทำงานบนฐานรองหลังจากรีสตาร์ท SQL Server เซิร์ฟเวอร์ออฟไลน์ไม่กี่ชั่วโมงในขณะที่เราติดตั้ง SSD ใหม่ (ใหญ่กว่า) และคัดลอกไฟล์ข้อมูลไปยังโวลุ่มใหม่ เมื่อเรารีสตาร์ท SQL Server ทั้งหมด แต่สองฐานข้อมูลเริ่มซิงโครไนซ์อีกครั้ง อีกสองคนที่ถูกแสดงใน SSMS เป็นไม่ตรงกัน / กู้คืนรอดำเนินการ ไม่พบปัญหาการซิงโครไนซ์ / การกู้คืนที่คล้ายกันมาก่อนฉันตรวจสอบสถานะภายใต้กลุ่มความพร้อมใช้งาน -> ฐานข้อมูลความพร้อมใช้งาน แต่พวกเขาแสดง X สีแดง: และแม้แต่พยายามระงับการเคลื่อนย้ายข้อมูลสร้างข้อความแสดงข้อผิดพลาด: ไม่สามารถระงับการเคลื่อนย้ายข้อมูลในฐานข้อมูล 'StackExchange.Bycycles.Meta' ซึ่งอยู่ในแบบจำลองความพร้อมใช้งาน 'ny-sql03' ในกลุ่มความพร้อมใช้งาน 'SENetwork_AG' (Microsoft.SqlServer.Smo) ข้อมูลเพิ่มเติม: เกิดข้อยกเว้นขณะดำเนินการคำสั่งหรือชุดงาน transact-SQL (Microsoft.SqlServer.ConnectionInfo) ฐานข้อมูล 'StackExchange.Bycycles.Meta' ไม่สามารถเปิดได้เนื่องจากไฟล์ที่ไม่สามารถเข้าถึงหรือหน่วยความจำไม่เพียงพอหรือพื้นที่ดิสก์ไม่เพียงพอ ดูบันทึกข้อผิดพลาด SQL Server …

4
หลีกเลี่ยงวิธีการดึงข้อมูล "แถวต่อแถว" เมื่อจัดการกับคอลัมน์ LOB ต้นทาง
ฉันมีแหล่งฐานข้อมูล PostgreSQL ดั้งเดิม (ODBC) ที่ฉันพยายามโยกย้ายไปยัง SQL Server schema ใหม่โดยใช้ SSIS ฉันได้รับคำเตือนว่า: มีการบังคับใช้วิธีการดึงข้อมูล 'Row by Row' เนื่องจากตารางมีคอลัมน์ LOB เนื้อหาคอลัมน์คือ LOB ไม่มีคอลัมน์ใดต้องเป็น LOB มีบางประเภทที่เป็นข้อความ แต่สามารถใส่ได้อย่างง่ายดายภายใน varchar (สูงสุด) แม้จะเป็นคนแปลกหน้า แต่ส่วนใหญ่แล้วเป็น varchars แต่ดูเหมือนว่ามีอะไรมากกว่า varchar (128) ที่กำลังได้รับการปฏิบัติเสมือนว่าเป็น LOB (เป็นคุณสมบัติล่วงหน้าประเภทของข้อมูลคือ DT_NTEXT) เหตุการณ์ฉันพยายามทำคำสั่ง SQL ด้วยตนเองซึ่งฉันได้ casted สตริงทุกประเภทให้เป็น varchar ที่มีความยาวที่เหมาะสมในคำสั่ง select และพวกเขายังคงถูกตั้งค่าเป็น DT_NTEXT ในแหล่ง ODBC ฉันไม่ใช่ DBA ดังนั้นจึงเป็นไปได้ทั้งหมดที่ฉันจะทำอะไรที่โง่จริงๆ …

5
ปรับปรุงความเร็วในการลบสำหรับ SQL Server
เรามีฐานข้อมูลการผลิตขนาดใหญ่มีขนาดประมาณ 300GB มีวิธีการใดในการปรับปรุงประสิทธิภาพของคิวรีการลบหรือไม่ ตอนนี้ความเร็วในการลบอยู่ระหว่าง 1-10k ต่อนาทีมันช้ามากสำหรับเรา

3
ข้อมูลการตรวจสอบการจำลองแบบโดยใช้ T-SQL
รูปภาพด้านล่างแสดงปัญหาการจำลองแบบธุรกรรมที่ฉันกำลังตรวจสอบอยู่ รูปภาพมาจากการตรวจสอบการจำลองแบบ ฉันจะรับข้อมูลนี้โดยใช้ T-SQL ได้อย่างไร

2
เหตุใดมุมมองที่จัดทำดัชนีจึงไม่อนุญาตดัชนีที่ไม่ซ้ำกันแบบคลัสเตอร์
ฉันได้พิจารณาใช้การจัดทำดัชนีการดูเพื่อเพิ่มประสิทธิภาพในการดูที่ใช้บ่อยที่สุดของเรา อย่างไรก็ตามมุมมองที่จัดทำดัชนีไม่สนับสนุนดัชนีคลัสเตอร์ที่ไม่ซ้ำกันซึ่งไปเล็กน้อยกับความสำคัญที่กำหนดโดยส่วนที่เหลือของโครงสร้างฐานข้อมูล ตัวอย่างเช่นที่นี่เป็นเวอร์ชันที่เรียบง่ายของตารางของเราสองสามตัว -Groups- Group ID GroupName -Users- UserKey UserName FullName GroupID ดัชนีอยู่ใน Groups.GroupID (ไม่ทำคลัสเตอร์) และ Users.GroupID (ทำคลัสเตอร์) คีย์คลัสเตอร์ที่อยู่ใน GroupID ในตารางผู้ใช้เป็นช่วงที่ผู้ใช้จากกลุ่มที่เฉพาะเจาะจงมากที่สุดจะถูกดึง เห็นได้ชัดว่าคุณจะมีผู้ใช้หลายคนต่อกลุ่มดังนั้นดัชนีคลัสเตอร์นี้จะไม่ซ้ำกัน สิ่งนี้ทำให้ฉันมีความไม่แน่นอนเล็กน้อยเกี่ยวกับวิธีทำตามความสำคัญนี้เมื่อจัดทำดัชนีมุมมองของฉันเช่นตัวอย่างนี้เนื่องจากฉันไม่สามารถมีดัชนีคลัสเตอร์ที่ไม่ซ้ำกันได้ ConsumableID ConsumableVariantID AllowThresholdOverwrite FullPath GroupID ManufacturerID Type ModelID 101 29 1 0.1.2.4. 4 3 3 2 ในความเป็นจริงแล้วมีเพียงค่าเดียวในมุมมองนี้ซึ่งจะเป็นค่าที่ไม่ซ้ำกันคือคอลัมน์ ConsumableID ดังนั้นฉันจึงเหลือตัวเลือกเพียงเล็กน้อยว่าจะวางดัชนีของฉันไว้ที่ใด เหตุใด Views จึงไม่อนุญาตให้มีดัชนีที่ไม่ซ้ำกันในกลุ่มเมื่อตารางปกติทำ

3
ข้อผิดพลาด“ ฐานข้อมูลกำลังอยู่ในช่วงเปลี่ยนผ่าน”
วันนี้ฉันพยายามกู้คืนฐานข้อมูลผ่านฐานข้อมูลที่มีอยู่แล้วฉันเพียงคลิกขวาที่ฐานข้อมูลใน SSMS -> ภารกิจ -> ใช้ออฟไลน์เพื่อที่ฉันจะคืนค่าฐานข้อมูล หน้าต่างป๊อปอัปขนาดเล็กปรากฏขึ้นและปรากฏขึ้นQuery Executing.....เป็นครั้งคราวแล้วเกิดข้อผิดพลาดDatabase is in use cannot take it offlineขึ้น จากที่ฉันรวบรวมมีการเชื่อมต่อที่ใช้งานกับฐานข้อมูลนั้นดังนั้นฉันพยายามที่จะดำเนินการค้นหาต่อไปนี้ USE master GO ALTER DATABASE My_DatabaseName SET OFFLINE WITH ROLLBACK IMMEDIATE GO อีกครั้งที่จุดนี้ SSMS พบQuery Executing.....บางครั้งแล้วโยนข้อผิดพลาดต่อไปนี้: Msg 5061, Level 16, State 1, Line 1 ALTER DATABASE failed because a lock could not be placed …

1
ใน PowerShell การดึงข้อความที่พิมพ์จาก SSMS
ทีม DBA ของเราไม่ตรวจสอบการสำรองข้อมูลโดยใช้ด้านล่างTSQL(ซึ่งสามารถทำการสำรองข้อมูลได้อย่างง่ายดายและใช้เวลาไม่นานดังนั้นฉันจึงไม่เข้าใจสาเหตุ) RESTORE VERIFYONLY FROM DISK = 'D:\Backups\LOCATION' พวกเขามีปัญหาในอดีตดังนั้นแม้ว่าเราจะคิดว่าพวกเขาต้องการเรียนรู้จากมันพวกเขาก็ยังไม่ได้ ฉันสร้างสคริปต์ Powershell เพื่อทำเช่นนี้เพราะเรามีเซิร์ฟเวอร์มากกว่า 100 แห่งและฉันต้องการเรียกใช้สคริปต์นี้กับการสำรองข้อมูลทั้งหมดเพียงเพื่อให้มั่นใจว่าถูกต้อง สคริปต์ด้านล่างทำงานอย่างถูกต้อง (ในกรณีที่มันไม่ผิดพลาดหรือผิดพลาด) ฉันอยากรู้ว่ามีวิธีที่จะได้รับข้อความที่พิมพ์กลับมาใน Powershell ซึ่งปกติแล้วเราจะได้รับใน SSMS ซึ่งระบุว่าชุดสำรองในไฟล์ 1 คือ ถูกต้องเป็นการตรวจสอบ $SqlCon = New-Object System.Data.SqlClient.SqlConnection $SqlCon.ConnectionString = "SERVER=SERV\INST;Integrated Security=true;DATABASE=master" $baks = Get-ChildItem "D:\Backups\" -Filter *.BAK foreach ($bak in $baks) { $SqlCon.Open() $cd = New-Object System.Data.SqlClient.SqlCommand $cd.Connection …

1
ฉันควรปิดการใช้งาน "สถิติการอัพเดทอัตโนมัติ" ในสถานการณ์จำลองคลังข้อมูลหรือไม่
ฉันมีคลังข้อมูล 200 GB ใน SQL Server ฉันประสบกับการดำเนินการช้ามากสำหรับบางข้อความค้นหา ตัวอย่างเช่น 12 ชั่วโมงเพื่อให้ง่ายแบบสอบถามกับdeleteinner join หลังจากทำการวิจัยด้วยแผนการดำเนินการฉันได้อัปเดตสถิติของตาราง 2 ตารางที่เกี่ยวข้องในแบบสอบถามโดยใช้WITH FULLSCANตัวเลือก ตอนนี้แบบสอบถามดำเนินการในเวลาน้อยกว่าหนึ่งวินาทีดังนั้นจึงปรากฏว่าสถิติไม่ทันสมัย ฉันกำลังพิจารณาปิดใช้งานauto update statisticsฐานข้อมูลและทำงานUPDATE STATISTICSด้วยตนเองหลังจากโหลดคลังข้อมูลแล้ว คลังข้อมูลจะถูกโหลดเพิ่มขึ้นจากระบบ ERP ต้นทางทุกวันในเวลากลางคืน ฉันถูกต้องในการสมมติว่าauto update statisticsในสถานการณ์คลังข้อมูลไม่ได้มีประโยชน์จริง ๆ ? จะเป็นการดีกว่าหรือที่จะอัปเดตสถิติด้วยตนเองหลังจากโหลดข้อมูลแล้ว

2
ไม่สามารถแปลงค่าได้เนื่องจากอาจสูญเสียข้อมูล [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ผมขอเริ่มด้วยการชี้แจงว่านี่ไม่ใช่คำถามซ้ำซ้อนหรืออาจเป็นซ้ำได้สำหรับเรื่องนั้น ฉันได้ลองใช้ทุกคำตอบกับทุกตัวแปรที่มีอยู่ของปัญหานี้แล้วใน StackOverflow และ DBA Stack Exchange โดยไม่มีโชค ฉันดิ้นรนกับปัญหานี้ในช่วงสองวันที่ผ่านมา (ทำงานกับมันประมาณ 7 ชั่วโมงต่อวัน) และแม้หลังจาก Googling ปัญหาก็ปรากฏว่าไม่มีใครมีปัญหาที่แตกต่างกันของปัญหาของฉัน ฉันพยายามทำอะไร ใน SSIS ฉันพยายามอ่านจากไฟล์ CSV และแทรกแถวจากแถวนั้นลงในฐานข้อมูล OLE DB สำหรับสิ่งนั้นฉันได้ทำการตั้งค่าที่ง่ายที่สุดเท่าที่เคยเห็นด้านล่าง Flat File Source - อ่านแถว CSV Derived Column - ขณะนี้ไม่ได้ทำอะไรเลย (เป็นเพียงการทดลอง) Data Conversion - ขณะนี้ไม่ได้ทำอะไรเลย (เป็นเพียงการทดลอง) OLE DB Destination …

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