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

SQL Server 2012 (รุ่นบิลด์หลัก 11.00.xxxx) โปรดติดแท็ก sql-server ด้วย

3
ฉันสามารถสร้างประเภทตารางที่ผู้ใช้กำหนดและใช้ในธุรกรรมเดียวกันได้หรือไม่?
เมื่อฉันดำเนินการต่อไปนี้ (ในสตูดิโอการจัดการ GO จะแยกคำสั่งออกเป็นแบทช์) use tempdb begin tran go CREATE TYPE dbo.IntIntSet AS TABLE( Value0 Int NOT NULL, Value1 Int NOT NULL ) go declare @myPK dbo.IntIntSet; go rollback ฉันได้รับข้อความแจ้งข้อผิดพลาดการหยุดชะงัก กระบวนการของฉันหยุดชะงักด้วยตัวเอง ฉันเคยเห็นพฤติกรรมนี้ในปี 2008, 2008R2 และ 2012 มีวิธีใช้ประเภทที่สร้างขึ้นใหม่ของฉันภายในธุรกรรมเดียวกันกับที่สร้างขึ้นหรือไม่

2
เกี่ยวข้อง ExecutionInstanceGUID กับ SSISDB
SSIS, SQL Server Integration Services 2012 ได้เปิดตัวแคตตาล็อก SSISDB ซึ่งติดตามการทำงานของแพ็คเกจ (เหนือสิ่งอื่นใด) การดำเนินการแพ็คเกจเริ่มต้นสำหรับโซลูชันที่ใช้โมเดลการปรับใช้โครงการจะเปิดใช้งานการบันทึกลงใน SSISDB เมื่อแพคเกจดำเนินการSystem::ExecutionInstanceGUIDบรรจุด้วยค่าที่หากมีการใช้การบันทึกอย่างชัดเจน (ถึงsys.sysdtslog90/ sys.sysssislog) จะบันทึกเหตุการณ์ทั้งหมดสำหรับการดำเนินการแพคเกจเฉพาะ สิ่งที่ฉันอยากรู้คือฉันจะผูก ExecutionInstanceGUID กับอะไรในแคตตาล็อก SSISDB ได้อย่างไร อีกวิธีหนึ่งคือแพคเกจ SSIS ที่ทำงานใน SSISDB privy ค่าของมันcatalog.executions.execution_id ท้ายที่สุดฉันพยายามใช้ตารางการตรวจสอบที่มีอยู่แล้วและเชื่อมโยงกลับไปที่ประวัติโดยละเอียดในแคตตาล็อก SSISDB แต่ดูเหมือนจะไม่พบลิงก์

1
เป็นไปได้หรือไม่ที่จะบันทึกค่าพารามิเตอร์ขาเข้าในการเรียกโพรซีเดอร์ขณะติดตามใน SQL Server Profiler?
ใช้ SQL Server Profiler (ฉันใช้ SQL Server 2012) ฉันพยายามสร้างการติดตามที่มีประโยชน์ที่แสดงค่าพารามิเตอร์ไม่ใช่เฉพาะ SQL ที่มีชื่อตัวแปร ขั้นตอนที่เก็บไว้จะนำข้อมูลคลังมารวมเพื่อสร้างผลลัพธ์ที่มีค่าอย่างยิ่งและฉันพยายามบันทึกพฤติกรรมที่มีอยู่แล้วดังนั้นฉันจึงสามารถทดสอบหน่วยกำหนดมันอย่างชัดเจนและกำหนดให้เป็นสิ่งที่มีสติ ฉันมีโพรซีเดอร์ที่เก็บไว้ซึ่งดำเนินการโพรซีเดอร์ย่อย 54 พารามิเตอร์ในลูปที่โพรซีเดอร์ที่เก็บสร้างเคอร์เซอร์จากนั้นก็ทำลูปสักครู่ นี่คือมุมมองที่เรียบง่าย: CREATE PROCEDURE [dbo].[OuterProcedure] ( @ProductCode varchar(8), -- 41 more parameters omitted ) AS SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SET NOCOUNT ON DECLARE @AboutFourHundredLocalvariables -- omit about 400 local variable declarations. -- OMIT ABOUT …

1
Workspace หน่วยความจำภายใน
ตามหนังสือการอ่านของฉันเกี่ยวกับ SQL Server 2008 Internals และการแก้ไขปัญหา (ยืมมาจากห้องสมุดท้องถิ่นในรัฐอิลลินอยส์) โดย Christian Bolton, Brent Ozar เป็นต้นฉันกำลังพยายามทำความเข้าใจและยืนยันบนเซิร์ฟเวอร์ SQL และการค้นหาบนเว็บฉันจะขอบคุณถ้ามีคน สามารถยืนยันหรือแก้ไขความเข้าใจของฉัน ทุกแบบสอบถามหรือการดำเนินการที่ต้องการให้หน่วยความจำแบบสอบถามจะต้องมีหน่วยความจำพื้นที่ทำงาน ในข้อความค้นหาทั่วไปที่ใช้การเรียงลำดับการจับคู่การแฮชการขนาน (ไม่แน่ใจเกี่ยวกับเรื่องนี้) การแทรกจำนวนมาก (ไม่แน่ใจ) การสร้างดัชนีใหม่เป็นต้นจะต้องใช้หน่วยความจำของพื้นที่ทำงานแบบสอบถาม หน่วยความจำพื้นที่ทำงานเป็นส่วนหนึ่งของพูลบัฟเฟอร์ของ SQL Server (ถูกจัดสรรเป็นส่วนหนึ่งของบัฟเฟอร์พูล) และหน่วยความจำสูงสุดของพื้นที่ทำงานคือ 75% ของหน่วยความจำที่จัดสรรให้กับบัฟเฟอร์พูล โดยค่าเริ่มต้นแบบสอบถามเดียวไม่สามารถรับหน่วยความจำเวิร์กสเปซเกินกว่า 25% (ใน SQL 2008 / SQL 2012 - ควบคุมโดยกลุ่มภาระงานเริ่มต้นของผู้ว่าการทรัพยากรออกจากกล่อง) ค้นหาการยืนยันความเข้าใจของฉัน 1) ระบบการพิจารณาที่มี 48 GB RAM และหน่วยความจำเซิร์ฟเวอร์สูงสุดที่กำหนดค่าเป็น 40 GB หมายความว่าหน่วยความจำสูงสุดของพื้นที่ทำงานถูก จำกัด …

3
เป็นไปได้หรือไม่ที่จะสร้างการเชื่อมต่อผู้ดูแลระบบเฉพาะ (DAC) โดยใช้ SSMS
เป็นไปได้หรือไม่ที่จะเชื่อมต่อกับ DAC โดยใช้ SSMS? หากฉันเข้าใจถูกต้องควรใช้คำนำหน้า "admin:" หน้าชื่อเซิร์ฟเวอร์ แต่ฉันได้รับข้อความต่อไปนี้: การเชื่อมต่อผู้ดูแลระบบเฉพาะไม่ได้รับการสนับสนุนผ่าน SSMS เนื่องจากจะสร้างการเชื่อมต่อที่หลากหลายโดยการออกแบบ (Microsoft.SqlServer.Management.SqlStudio.Explorer)

4
แบบสอบถามเพื่อเลือกค่าสูงสุดเมื่อเข้าร่วม
ฉันมีตารางผู้ใช้: |Username|UserType|Points| |John |A |250 | |Mary |A |150 | |Anna |B |600 | และระดับ |UserType|MinPoints|Level | |A |100 |Bronze | |A |200 |Silver | |A |300 |Gold | |B |500 |Bronze | และฉันกำลังมองหาข้อความค้นหาเพื่อให้ได้ระดับสำหรับผู้ใช้แต่ละคน บางสิ่งบางอย่างตาม: SELECT * FROM Users U INNER JOIN ( SELECT TOP 1 Level, U.UserName FROM Levels …

1
ทำไมเราถึงใช้ FILE = 1 ในสคริปต์เพื่อกู้คืนฐานข้อมูล
เมื่อเร็ว ๆ นี้เมื่อฉันเจอสคริปต์เพื่อกู้คืนฐานข้อมูลฉันสงสัยว่าทำไมเราต้องใช้ " FILE = 1 "? เราไม่สามารถกู้คืนฐานข้อมูลโดยไม่มีคำสั่งนั้นได้หรือไม่! โดยพื้นฐานแล้วมันใช้ทำอะไร?

1
ทำไมดัชนีการเลือกรองไม่ได้ใช้เมื่อตัวกรองส่วนคำสั่ง where บน value () `?
ติดตั้ง: create table dbo.T ( ID int identity primary key, XMLDoc xml not null ); insert into dbo.T(XMLDoc) select ( select N.Number for xml path(''), type ) from ( select top(10000) row_number() over(order by (select null)) as Number from sys.columns as c1, sys.columns as c2 ) as N; ตัวอย่าง XML …

1
เครื่องมือเพิ่มประสิทธิภาพของ SQL Server ประมาณจำนวนแถวในตารางที่เข้าร่วมอย่างไร
ฉันใช้คำค้นหานี้ในฐานข้อมูลAdventureWorks2012 : SELECT s.SalesOrderID, d.CarrierTrackingNumber, d.ProductID, d.OrderQty FROM Sales.SalesOrderHeader s JOIN Sales.SalesOrderDetail d ON s.SalesOrderID = d.SalesOrderID WHERE s.CustomerID = 11077 ถ้าฉันดูแผนการดำเนินการโดยประมาณฉันจะเห็นสิ่งต่อไปนี้: การค้นหาดัชนีเริ่มต้น (ด้านบนขวา) ใช้ดัชนี IX_SalesOrderHeader_CustomerID และค้นหาตามตัวอักษร 11077 โดยมีค่าประมาณ 2.6192 แถว ถ้าฉันใช้DBCC SHOW_STATISTICS ('Sales.SalesOrderHeader', 'IX_SalesOrderHeader_CustomerID') WITH HISTOGRAMมันแสดงว่าค่า 11077 อยู่ระหว่างสองคีย์ตัวอย่าง 11019 และ 11091 จำนวนเฉลี่ยของแถวที่แตกต่างระหว่าง 11019 และ 11091 คือ 2.619718 หรือปัดเศษเป็น 2.61972 …

3
sqlpackage.exe ไม่สนใจ BlockOnPossibleDataLoss
ฉันมี dacpac ที่ตั้งค่า BlockOnPossibleDataLoss ตั้งค่าเป็นเท็จอย่างไรก็ตามการปรับใช้ถูกบล็อกเมื่อฉันเรียกใช้ sqlpackage.exe โดยบอกฉันว่า "คอลัมน์ [a] กำลังถูกทิ้งข้อมูลอาจสูญหายได้" อย่างไรก็ตามเมื่อฉันใช้โพรไฟล์การปรับใช้เดียวกันที่แน่นอนและเผยแพร่จาก Visual Studio 2012 มันจะผ่าน

2
การรีเซ็ตลำดับของ SQL Server 2012
ฉันกำลังอยู่ระหว่างการทดสอบและสร้างตารางเฉพาะที่ใช้ประโยชน์จากSEQUENCEวัตถุ ในกระบวนการนี้ฉันกำลังทดสอบการเติมตารางด้วยจำนวนบรรทัดการแทรกนับหมื่น (เนื่องจากฉันไม่คุ้นเคยกับวิธีการตั้งโปรแกรมนี้) ปัญหาที่ฉันเห็นด้วยตารางนี้คือเมื่อฉันเริ่มการทดสอบประชากรอื่นการSEQUENCEตั้งค่าไม่ได้กลับไปเป็นหมายเลขแรกที่ฉันต้องการ (ซึ่งคือ 1) เมื่อฉันต้องการเรียกใช้การทดสอบใหม่อีกครั้งฉันจะลบตารางที่เป็นปัญหาแล้วจึงเรียกใช้สิ่งต่อไปนี้: DROP SEQUENCE foo.fee; GO DROP SCHEMA foo; GO เมื่อฉันต้องการเรียกใช้การทดสอบอีกครั้งฉันใช้คำสั่งSCHEMA& SEQUENCEคำสั่งต่อไปนี้ซึ่งเรียกใช้ตามลำดับด้านล่าง: CREATE SCHEMA foo; GO CREATE SEQUENCE foo.fee START WITH 1 INCREMENT BY 1 NO CYCLE NO CACHE; GO ฉันสร้างตารางแล้ว: CREATE TABLE foo.sample_table_with_data (order_number bigint PRIMARY KEY NOT NULL, sample_column_one nvarchar(max) NULL, sample_column_two nvarchar(max) …

4
การเข้าสู่ระบบไม่ได้ซิงค์กับกลุ่มความพร้อมใช้งาน
เรามี 2 เซิร์ฟเวอร์ในกลุ่ม AlwaysOn ในขณะที่บัญชีผู้ใช้ภายในแต่ละฐานข้อมูลที่ซิงโครไนซ์มีอยู่บนทั้งสองเซิร์ฟเวอร์ แต่อินสแตนซ์ระดับฐานข้อมูลจะมีอยู่ในหนึ่งในเซิร์ฟเวอร์เท่านั้น เช่น DBINSTANCE-> Security-> การเข้าสู่ระบบจะหายไปในเซิร์ฟเวอร์เดียว ดังนั้นเมื่อมีความล้มเหลวฉันได้รับความล้มเหลวในการเข้าสู่ระบบบนเซิร์ฟเวอร์ที่สอง (ซึ่งไม่มีการเข้าสู่ระบบในระดับอินสแตนซ์ที่เกี่ยวข้อง) ฉันจะเอาชนะปัญหานี้ได้อย่างไร ฉันควรจะตั้งค่าบัญชีผู้ใช้ด้วยวิธีพิเศษหรือไม่?

4
สร้างไฟล์พบข้อผิดพลาดของระบบปฏิบัติการ 5 (ปฏิเสธการเข้าถึง)
ฉันพยายามรันสคริปต์ต่อไปนี้ใน SQL Server Management Studio: USE [master] GO CREATE DATABASE [test1] ON PRIMARY ( NAME = N'test1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\test1.mdf', SIZE = 70656KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB) LOG ON ( NAME = N'test1_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\test1_log.ldf', SIZE = 164672KB , MAXSIZE …

1
นี่เป็นอาการของเซิร์ฟเวอร์ที่โอเวอร์โหลดหรือไม่
ฉันพยายามวินิจฉัยช้าลงในแอปพลิเคชัน สำหรับสิ่งนี้ฉันได้บันทึกกิจกรรมเพิ่มเติมของ SQL Server แล้ว สำหรับคำถามนี้ฉันกำลังดูขั้นตอนการจัดเก็บเฉพาะอย่างใดอย่างหนึ่ง แต่มีชุดหลักของขั้นตอนการจัดเก็บโหลที่เท่ากันสามารถใช้เป็นการสอบสวนแอปเปิ้ลแอปเปิ้ล และเมื่อใดก็ตามที่ฉันเรียกใช้หนึ่งในกระบวนงานที่เก็บไว้ด้วยตนเองมันจะทำงานได้อย่างรวดเร็วเสมอ และหากผู้ใช้ลองอีกครั้งมันจะทำงานเร็ว เวลาดำเนินการของโพรซีเดอร์ที่เก็บแตกต่างกันไป การประมวลผลของโพรซีเดอร์ที่เก็บไว้นี้ส่งคืนเป็นจำนวนมากใน <1s: และสำหรับถัง"เร็ว"นั้นมันน้อยกว่า 1 วินาทีมาก จริง ๆ แล้วประมาณ 90 ms: แต่มีหางยาวของผู้ใช้ที่ต้องรอ 2 วินาที, 3 วินาที, 4s วินาที บางคนต้องรอ 12 วินาที, 13 วินาที, 14 วินาที จากนั้นก็มีวิญญาณที่น่าสงสารจริงๆที่ต้องรอ 22s, 23s, 24s และหลังจาก 30s, โปรแกรมไคลเอนต์ให้ขึ้นยกเลิกแบบสอบถามและผู้ใช้ต้องรอ30 วินาที สหสัมพันธ์เพื่อค้นหาสาเหตุ ดังนั้นฉันจึงพยายามที่จะมีความสัมพันธ์: ระยะเวลาและตรรกะอ่าน ระยะเวลาเทียบกับการอ่านทางกายภาพ ระยะเวลาเทียบกับเวลา cpu และดูเหมือนจะไม่มีความสัมพันธ์ใด ๆ …

3
ทำไมตัวดำเนินการแบบขนาน (Repartition Streams) จะลดการประมาณแถวเป็น 1
ฉันใช้ SQL Server 2012 Enterprise ฉันเจอแผน SQL ที่แสดงพฤติกรรมบางอย่างที่ฉันไม่พบว่าใช้งานง่าย หลังจากการดำเนินการสแกนดัชนีแบบขนานขนาดใหญ่การดำเนินการแบบขนาน (Repartition Streams) เกิดขึ้น แต่กำลังฆ่าการประมาณแถวที่ถูกส่งคืนโดยดัชนีการสแกน (Object10.Index2) ลดการประมาณการเป็น 1 ฉันได้ทำการค้นหาบางอย่างแล้ว แต่ ยังไม่เจออะไรที่อธิบายพฤติกรรมนี้ แบบสอบถามค่อนข้างง่ายแม้ว่าแต่ละตารางจะมีระเบียนเป็นล้าน ๆ นี่เป็นส่วนหนึ่งของกระบวนการโหลด DWH และชุดข้อมูลระดับกลางนี้มีการแตะสองสามครั้งตลอด แต่คำถามที่ฉันมีเกี่ยวข้องกับการประมาณแถวโดยเฉพาะ บางคนสามารถอธิบายได้หรือไม่ว่าเหตุใดการประมาณแถวที่ถูกต้องจึงไปที่ 1 ในตัวดำเนินการขนาน (Repartition Strems) นอกจากนี้ ฉันได้ส่งแผนเต็มรูปแบบเพื่อวางแผน นี่คือการดำเนินการที่เป็นปัญหา: รวมแผนผังต้นไม้ในกรณีที่เพิ่มบริบทเพิ่มเติม: ฉันสามารถใช้รูปแบบบางอย่างของรายการเชื่อมต่อที่ยื่นโดย Paul White ได้หรือไม่ (อธิบายเพิ่มเติมในเชิงลึกบนบล็อกของเขาที่นี่ ) อย่างน้อยมันก็เป็นสิ่งเดียวที่ฉันพบว่าดูเหมือนจะอยู่ใกล้กับสิ่งที่ฉันกำลังวิ่งเข้าไปในระยะไกลถึงแม้ว่าจะไม่มีโอเปอร์เรเตอร์ที่เล่น

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