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

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

1
ฉันจะค้นหาสแน็ปช็อตฐานข้อมูลที่มีอยู่ในเซิร์ฟเวอร์ SQL ได้อย่างไร
ฉันกำลังพยายามสร้างแบบสอบถาม t-sql ที่สามารถตรวจสอบว่าฐานข้อมูลที่กำหนดมีสแนปชอตฐานข้อมูลใด ๆ ที่สร้างขึ้นจากมันหรือไม่ ตัวอย่างเช่นถ้าฉันจะสร้างสแนปชอตแบบนี้: CREATE DATABASE [DatabaseA_Snapshot] ON (NAME=DatabaseA, FileName='<whatever>') AS SNAPSHOT OF [DatabaseA] มีวิธีที่ฉันสามารถสอบถามการมีอยู่ของภาพรวมนั้นอีกครั้งในภายหลังหรือไม่ ฉันเห็นว่ามันปรากฏใน sys.database แต่ไม่พบข้อมูลใด ๆ ที่จะช่วยฉันพิจารณาว่าเป็นสแนปชอตของฐานข้อมูลที่สร้างขึ้นจาก DatabaseA Object Explorer Studio ของ SQL Server Management วางไว้ใต้โฟลเดอร์ 'Snapshots ฐานข้อมูล' ดังนั้นจึงมีวิธีที่แตกต่างจากฐานข้อมูลปกติอย่างชัดเจน

8
SqlLocalDB ไม่สามารถเริ่มต้นด้วยบัญชี Windows ของฉัน
ฉันเป็นผู้ดูแลระบบและเพียงเรียกใช้คำสั่ง: sqllocaldb start v11.0 ผลลัพธ์: Start of LocalDB instance "v11.0" failed because of the following error: Error occurred during LocalDB instance startup: SQL Server process failed to sta rt. บันทึกตัวแสดงเหตุการณ์รหัสเหตุการณ์: 528 การเรียก Windows API WaitForMultipleObjects ส่งคืนรหัสข้อผิดพลาด: 575 ข้อความแสดงข้อผิดพลาดของระบบ Windows คือ: {ข้อผิดพลาดของแอปพลิเคชัน} แอปพลิเคชันไม่สามารถเริ่มการทำงานได้อย่างถูกต้อง (0x% lx) คลิกตกลงเพื่อปิดแอปพลิเคชัน รายงานที่บรรทัด: 3621 ฉันลองบัญชีอื่น (ผู้ใช้และผู้ดูแลระบบ) ไม่มีปัญหากับพวกเขา …

2
นำ OUTPUT ของคำสั่ง UPDATE ไปยังตัวแปรโลคัล
ฉันต้องการทำสิ่งนี้: DECLARE @Id INT; UPDATE Logins SET SomeField = 'some value' OUTPUT @Id = Id WHERE EmailAddress = @EmailAddress -- this is a parameter of the sproc เป็นไปได้ไหม ฉันรู้ว่าฉันสามารถประกาศตัวแปรตารางท้องถิ่นและส่งออกตรงนั้น แต่ฉันอยากจะข้ามมันถ้าเป็นไปได้

5
ประสิทธิภาพการทำงานที่โหดร้ายเข้าร่วมตาราง INSERTED และ DELETED ในทริกเกอร์
ฉันได้รับทริกเกอร์ UPDATE ในตารางที่เฝ้าดูคอลัมน์ที่เฉพาะเจาะจงเปลี่ยนจากค่าหนึ่งไปเป็นค่าอื่น ๆ เมื่อสิ่งนี้เกิดขึ้นมันจะอัพเดทข้อมูลที่เกี่ยวข้องในตารางอื่นผ่านคำสั่ง UPDATE เดียว สิ่งแรกที่ทริกเกอร์ทำการตรวจสอบเพื่อดูว่าแถวที่อัพเดตมีค่าของคอลัมน์นี้เปลี่ยนจากค่าที่เป็นปัญหาหรือไม่ มันจะรวมเข้ากับ INSERTED เพื่อลบและเปรียบเทียบค่าในคอลัมน์นั้น หากไม่มีสิ่งใดที่มีคุณสมบัติมันจะออกไปก่อนกำหนดดังนั้นคำสั่ง UPDATE จะไม่ทำงาน IF NOT EXISTS ( SELECT TOP 1 i.CUSTNMBR FROM INSERTED i INNER JOIN DELETED d ON i.CUSTNMBR = d.CUSTNMBR WHERE d.CUSTCLAS = 'Misc' AND i.CUSTCLAS != 'Misc' ) RETURN ในกรณีนี้ CUSTNMBR เป็นคีย์หลักของตารางต้นแบบ หากฉันอัปเดตจำนวนมากในตารางนี้ (พูด, 5,000+ แถว) …

4
แยกฟิลด์จาก RESTORE HEADERONLY
ฉันพยายามใช้ 'เรียกคืน HEADERONLY ' เพื่อรับวันที่ที่ฉันกำลังจะทำการสำรองข้อมูล คำสั่ง: RESTORE HEADERONLY FROM DISK = '<path to .bak file>' ทำงานได้ดีใน Query Analyzer และให้ชุดผลลัพธ์กับคอลัมน์ 50 คอลัมน์ ปัญหาคือการเข้าถึงนี้จากรหัส ฉันสามารถเอามันเข้าไปในตารางชั่วคราวได้โดยการประกาศทุก ๆ คอลัมน์ของคอลัมน์ 50: ish แทรกเข้าไปด้วยexecและรับค่าที่ฉันต้องการจากตรงนั้น ปัญหาคือฉันต้องการหลีกเลี่ยงการประกาศ resultset ทั้งหมดเป็นตารางชั่วคราวเนื่องจากดูเหมือนว่าจะเป็นวิธีการแก้ไขที่เปราะบางหากพวกเขาเพิ่มคอลัมน์ลงในรุ่นอนาคต มีวิธีใดที่จะเอาคอลัมน์เดียวออกจากชุดผลลัพธ์นี้โดยไม่ต้องประกาศคอลัมน์ทั้งหมดหรือไม่

3
ประสิทธิภาพการทำงานยอดเยี่ยมใช้ CAST ใน T-SQL
เรามีเครื่องกำเนิดไฟฟ้า SQL ที่ส่งเสียง SQL งบเงื่อนไขทั่วไปสำหรับเขตข้อมูลที่ระบุไว้ (ซึ่งเพื่อประโยชน์ของการอภิปราย: เราจะติดป้ายว่าเป็นmyField) ถ้าmyFieldเป็นประเภทที่เราสามารถทำได้เปรียบเทียบข้อมูลดังกล่าวกับสายเช่นเพื่อให้เป็น:NVARCHARmyField = 'foo' NTEXTแต่นี้ไม่ทำงานสำหรับเขตข้อมูลประเภท CAST(myField as NVARCHAR(MAX)) = 'foo'ดังนั้นเราจึงต้องทำเปรียบเทียบกับหล่อ: ประสงค์ในการทำงานความจริงเรื่องนี้ถ้าmyFieldเป็นประเภทหรือNVARCHARNTEXT อะไรคือผลงานยอดเยี่ยมของการทำนักแสดงดังกล่าวในสนามที่มีประเภทอยู่แล้วNVARCHAR ? ฉันหวังว่า SQL Server เป็นพอสมาร์ทที่จะรับรู้แบบไดนามิกที่myFieldมีอยู่แล้วจากประเภทNVARCHAR(ประสิทธิภาพการเปลี่ยนCASTเป็นไม่มี-op)

4
วิธีรับกลุ่มที่การนับเป็นศูนย์ได้อย่างไร
ฉันจะพยายามสร้างกราฟจากข้อมูลจากฐานข้อมูลเซิร์ฟเวอร์ SQL ของฉัน ฉันจะมีถนนทุกเส้นที่มีจำนวนผู้ใช้ที่อาศัยอยู่บนถนนเส้นนี้แม้จำนวนนั้นจะเป็นศูนย์ สำหรับสิ่งนี้ฉันได้ลองใช้แบบสอบถามนี้: Create table Streets( ID int IDENTITY primary key, Name varchar(100) ); create table users( ID int IDENTITY primary key, Username varchar(100), StreetID int references Streets(id) ); insert into streets values ('1st street'), ('2nd street'), ('3rd street'), ('4th street'), ('5th street'); insert into users values ('Pol', …

1
ขนาดตัวอย่างเริ่มต้นของสถิติใน SQL Server คืออะไร
จากMSDN : เมื่อไม่มีการ(SAMPLE, FULLSCAN, RESAMPLE)ระบุตัวเลือกตัวอย่างเครื่องมือเพิ่มประสิทธิภาพการสืบค้นจะสุ่มตัวอย่างข้อมูลและคำนวณขนาดตัวอย่างเป็นค่าเริ่มต้น จะระบุขนาดตัวอย่างเริ่มต้นของสถิติได้อย่างไร ฉันผ่าน MSDN แต่ไม่พบสูตรหรือวิธีการใด ๆ ในการระบุขนาดตัวอย่างเริ่มต้น ทุกที่มีเพียงสูตรที่แสดงเพื่อทริกเกอร์การอัปเดตสถิติอัตโนมัติ ตัวชี้ใด ๆ จะเป็นประโยชน์

1
แทรกผลลัพธ์จากกระบวนงานที่เก็บไว้ในตัวแปรตาราง
ฉันมีขั้นตอนการจัดเก็บที่เก็บค่าในตัวแปรตาราง ฉันเลือกค่าเหล่านี้และส่งคืนเมื่อเรียกใช้โพรซีเดอร์ ฉันกำลังพยายามตั้งค่าส่งคืนเหล่านี้ในตัวแปรตารางอื่น แต่ฉันไม่สามารถหามันได้ ขั้นตอนการเก็บ ALTER PROCEDURE [dbo].[GetOrSetDomainId] @DomainName varchar(50), @DomainUrl varchar(50) AS BEGIN DECLARE @DomainId bigint; DECLARE @NumberOfRwos bigint; DECLARE @DomainHistory TABLE ( DomainId bigint, HasHistory bit, ServerOnline bit, DatabaseOnline bit, ServerPerformance bigint, DatabasePerformance bigint, SoldTickets bigint ) SELECT @NumberOfRwos = COUNT(Id) FROM DomainData WHERE DomainName = @DomainName OR …

3
เปลี่ยนค่าเริ่มต้นทั้งระบบสำหรับ maxrecursion
ฉันจะเปลี่ยนค่าเริ่มต้นของทั้งระบบได้MAXRECURSIONอย่างไร โดยค่าเริ่มต้นคือ 100 แต่ฉันต้องเพิ่มเป็น 1,000 เช่น ฉันไม่สามารถใช้คำแนะนำการสืบค้นได้เนื่องจากฉันกำลังใช้โปรแกรมที่ใช้การสืบค้นของฉันและดำเนินการให้ฉันและฉันไม่สามารถแก้ไขข้อ จำกัด นี้ได้ อย่างไรก็ตามฉันมีสิทธิ์ของผู้ดูแลระบบในอินสแตนซ์ของเซิร์ฟเวอร์ ฉันแหย่ไปรอบ ๆ ในแง่มุมของเซิร์ฟเวอร์ แต่ฉันไม่เห็นสิ่งใดที่เกี่ยวข้องกับตัวเลือกแบบสอบถามหรือการเรียกซ้ำ ผมถือว่ามีมีจะเป็นที่ใดที่หนึ่งสถานที่ที่ฉันสามารถอัปเดตเริ่มต้นทั้งระบบ ความคิดใด ๆ

2
ฉันจะแมปเข้าสู่ระบบฐานข้อมูลโดยใช้ T-SQL (ไม่ใช่ SSMS) ได้อย่างไร
ฉันกำลังเขียนโปรแกรมที่กำหนดให้ฉันต้องกำหนดสิทธิ์ทั้งหมดและทุกอย่างเป็นรหัส ฉันติดค้างอยู่ในส่วนนี้: ฉันแค่ต้องการทำเทียบเท่ากับการคลิกกล่องเล็ก ๆ ใต้ "แผนที่" สำหรับฐานข้อมูล msdb และกำหนดผู้ใช้นั้นให้กับบทบาท SqlAgentUser ฉันต้องการให้ผู้ใช้งานสามารถเพิ่ม / แก้ไขงาน SQL Server Agent ได้ ฉันสามารถตั้งค่าได้อย่างถูกต้องโดยใช้ SSMS แต่ฉันทำไม่ได้ตลอดชีวิตว่าจะทำอย่างไรใน SQL แบบดิบ ฉันค้นหาALTER LOGIN แล้วแต่ไม่เห็นสิ่งใดที่ต้องการ ฉันสงสัยว่าฉันไม่ทราบเงื่อนไขที่ถูกต้องสำหรับ Google ปกติฉันจะไม่ทำสิ่งนี้ ความช่วยเหลือใด ๆ ที่ชื่นชมมาก!

2
แบบสอบถาม SQL เข้าร่วมเพื่อแสดงแถวที่ไม่มีแถวในหนึ่งตาราง
ฉันกำลังพยายามทำให้การรายงานบางอย่างเสร็จสิ้นเพื่อบันทึกเวลาของพนักงาน เรามีสองตารางสำหรับคำถามนี้โดยเฉพาะ พนักงานมีการระบุไว้ในMembersตารางและในแต่ละวันพวกเขาป้อนรายการเวลาของงานที่พวกเขาทำและถูกเก็บไว้ในTime_Entryตาราง ตัวอย่างการตั้งค่าด้วย SQL Fiddle: http://sqlfiddle.com/#!3/e3806/7 ผลลัพธ์ที่ฉันจะให้เป็นตารางซึ่งแสดงให้เห็นทั้งหมดMembersในรายการคอลัมน์และจากนั้นจะแสดงชั่วโมงรวมของพวกเขาสำหรับวันที่สอบถามในคอลัมน์อื่น ๆ ปัญหาดูเหมือนว่าถ้าไม่มีแถวในTime_Entryตารางสำหรับสมาชิกเฉพาะตอนนี้มีแถวสำหรับสมาชิกนั้น ฉันได้ลองประเภทการเข้าร่วมหลายประเภท (ซ้าย, ขวา, ด้านใน, ด้านนอก, ด้านนอกเต็ม, ฯลฯ ) แต่ดูเหมือนว่าจะไม่มีสิ่งใดที่ฉันต้องการซึ่งจะเป็น (ตามตัวอย่างล่าสุดในซอฟแวร์ SQL Fiddle): /*** Desired End Result ***/ Member_ID | COUNTTime_Entry | TIMEENTRYDATE | SUMHOURS_ACTUAL | SUMHOURS_BILL ADavis | 0 | 11-10-2013 | 0 | 0 BTronton | 0 | 11-10-2013 …

2
คัดลอกและเปลี่ยนชื่อ db เพื่อให้ฉันสามารถแนบทั้งสองสำเนา
ฉันมี db ที่เรียกว่า 'mysite_db' บนเซิร์ฟเวอร์และฉันได้สร้างสำเนาบนเครื่องของฉันซึ่งก็คือ 'mysite_db' ฉันต้องการแนบ db (จากเครื่องของฉัน) ไปยังเซิร์ฟเวอร์ที่มีชื่อ db นี้อยู่แล้ว หมายความว่าฉันต้องเปลี่ยนชื่อฐานข้อมูลท้องถิ่น (ฉันเดาว่าฉันต้องเปลี่ยนไฟล์จริงด้วย) ฉันหลงทางไปแล้ว คุณช่วยแนะนำฉันได้ไหม เป้าหมายของฉันคือการโหลด 2 ฐานข้อมูลบนเซิร์ฟเวอร์เช่น: 'mysite_db' และ 'myNewSite_db'


4
ลำดับของคอลัมน์ในดัชนี columnstore สำคัญหรือไม่
ฉันมีตารางที่มี ~ 200 ล้านแถวและอีก 15 คอลัมน์ในนั้น ฉันวางแผนที่จะสร้างCOLUMNSTOREดัชนีบนโต๊ะของฉัน จะมีการเปลี่ยนแปลงใด ๆ เกี่ยวกับประสิทธิภาพขึ้นอยู่กับลำดับของคอลัมน์ที่ฉันใช้ในดัชนี columnstore หรือไม่ ถ้าใช่ตรรกะอะไรที่อยู่เบื้องหลัง

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