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

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

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

3
การจัดทำดัชนี PK GUID ใน SQL Server 2012
นักพัฒนาของฉันได้ติดตั้งแอปพลิเคชันของพวกเขาเพื่อใช้ GUID เป็น PK สำหรับตารางทั้งหมดของพวกเขาและโดยค่าเริ่มต้น SQL Server ได้ตั้งค่าดัชนีคลัสเตอร์บน PK เหล่านี้ ระบบนี้ค่อนข้างใหม่และตารางที่ใหญ่ที่สุดของเรามีมากกว่าหนึ่งล้านแถว แต่เรากำลังดูการจัดทำดัชนีของเราและต้องการให้สามารถปรับขนาดได้อย่างรวดเร็วเนื่องจากอาจมีความจำเป็นในอนาคตอันใกล้ ดังนั้นความโน้มเอียงแรกของฉันคือการย้ายดัชนีคลัสเตอร์ไปยังเขตข้อมูลที่สร้างขึ้นซึ่งเป็นตัวแทนขนาดใหญ่ของ DateTime อย่างไรก็ตามวิธีเดียวที่ฉันสามารถสร้าง CX ที่ไม่เหมือนใครคือการรวมคอลัมน์ GUID ใน CX นี้ แต่เรียงลำดับโดยสร้างขึ้นก่อน นี่จะทำให้คีย์การทำคลัสเตอร์กว้างเกินไปและจะเพิ่มประสิทธิภาพสำหรับการเขียนหรือไม่ การอ่านมีความสำคัญเช่นกัน แต่การเขียนอาจเป็นปัญหาที่ใหญ่กว่าในตอนนี้

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

3
วิธีดูสิ่งที่แคชในหน่วยความจำใน SQL Server 2008
มีวิธีหาแคชใน SQL Server 2008 R2 หรือไม่? ฉันได้พบบทความที่ดีต่อไปนี้: http://blog.sqlauthority.com/2010/06/17/sql-server-data-pages-in-buffer-pool-data-stored-in-memory-cache อย่างไรก็ตามฉันต้องการทราบจำนวนข้อมูล (เช่นเป็นเปอร์เซ็นต์และ KB) ของแต่ละตารางและดัชนี มีวิธีง่ายๆในการรับข้อมูลดังกล่าวหรือไม่?

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
วิธีที่รวดเร็วในการตรวจสอบสองตารางกับแต่ละอื่น ๆ
เรากำลังทำกระบวนการ ETL เมื่อทุกคนพูดและทำมีกลุ่มของตารางที่ควรจะเหมือนกัน เป็นวิธีที่เร็วที่สุดในการตรวจสอบว่าตารางเหล่านั้น (บนเซิร์ฟเวอร์ที่แตกต่างกันสอง) เป็นจริงเหมือนกัน ฉันกำลังพูดถึงสคีมาและข้อมูล ฉันสามารถแฮชบนโต๊ะเป็นตัวของตัวเองเหมือนที่ฉันจะสามารถใช้กับไฟล์แต่ละไฟล์หรือกลุ่มไฟล์ - เพื่อเปรียบเทียบไฟล์หนึ่งกับอีกไฟล์หนึ่ง เรามีการเปรียบเทียบข้อมูล Red-Gate แต่เนื่องจากตารางที่เป็นปัญหานั้นมีแถวนับล้านแถวฉันจึงต้องการบางสิ่งที่มีประสิทธิภาพมากกว่า วิธีการหนึ่งที่ชั่วช้าฉันนี้ใช้ความคิดสร้างสรรค์ของคำสั่งสหภาพ แต่ฉันต้องการสำรวจแนวคิดแฮชอีกเล็กน้อยหากเป็นไปได้ โพสต์คำตอบปรับปรุง สำหรับผู้เล่นในอนาคต ... นี่คือแนวทางที่แน่นอนที่ฉันได้รับ มันทำงานได้ดีเรากำลังทำทุกตารางในแต่ละฐานข้อมูล ขอบคุณคำตอบด้านล่างสำหรับชี้ฉันในทิศทางที่ถูกต้อง CREATE PROCEDURE [dbo].[usp_DatabaseValidation] @TableName varchar(50) AS BEGIN SET NOCOUNT ON; -- parameter = if no table name was passed do them all, otherwise just check the one -- create …

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

2
ตัวแทน SQL จะอัพเดตค่า next_run_date / next_run_time อย่างไรและเมื่อไร?
ฉันทำงานกับโค้ดใน T-SQL เพื่อเพิ่มกำหนดการใหม่ให้กับงาน SQL Agent โดยใช้ sp_add_jobschedule proc ในฐานข้อมูล msdb เมื่อฉันเพิ่มกำหนดการใหม่ (โดยปกติแล้วจะเรียกใช้ครั้งเดียวในวันที่ / เวลาที่ระบุ) และดูค่าใน sysjobschedules และ sysschedules ทันทีฉันจะเห็นว่ามีการเพิ่มกำหนดการใหม่และเชื่อมโยงกับ job_id สำหรับตัวแทน SQL ของฉัน งาน. อย่างไรก็ตามค่าสำหรับ next_run_date และ next_run_time มี 0 ค่า เมื่อฉันกลับมาและดูพวกเขาอีกครั้งใน 2 หรือ 3 นาทีพวกเขายังคงแสดง 0 ในพวกเขา อย่างไรก็ตามเมื่อฉันกลับมาอีก 5 หรือ 10 นาทีต่อมาตอนนี้มันก็แสดงค่าวันที่และเวลาที่สอดคล้องกับการวิ่งตามกำหนดครั้งต่อไปได้อย่างถูกต้อง ดังนั้นคำถามของฉันคือ: ค่าเหล่านี้มีการอัปเดตบ่อยเพียงใด กระบวนการใดที่ปรับปรุงค่าเหล่านี้ ถ้าฉันจะเพิ่มตารางเวลาที่เคยพูดว่า 1 นาทีในอนาคตนั่นหมายความว่างานจะไม่ทำงานเนื่องจาก next_run_date …

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 …


3
การเก็บรักษาการจำลองแบบ Snapshot
ฉันได้ตั้งค่าการจำลองแบบ Snapshot บนเซิร์ฟเวอร์การผลิต SQL Server 2008 ของฉันและฉันเพิ่งสังเกตเห็นว่ามีสแนปชอตอยู่หลายปีก่อนในโฟลเดอร์สแน็ปช็อต ฉันจะเปลี่ยนการเก็บรักษาสำหรับสแนปชอตเหล่านี้ได้อย่างไร โดยเฉพาะฉันต้องการเก็บสแนปชอตเป็นเวลา 5 วัน นี่คือภาพหน้าจอของโฟลเดอร์ที่ฉันกำลังดู:

5
บันทึกผลลัพธ์เป็น CSV * ด้วย * ส่วนหัวใน SSMS
ด้วย SQL Server 2008 R2 เมื่อฉันบันทึกผลลัพธ์เป็น CSV ไม่มีส่วนหัว ฉันสามารถแก้ไขได้โดยการคัดลอกและวางกับ "คัดลอกด้วยส่วนหัว" หรือเพียงแค่คว้าส่วนหัวแล้ววางลงใน CSV ฯลฯ แต่มีวิธีที่ดีกว่าในการทำเช่นนี้หรือไม่

2
การอ้างอิงบริบทของเอเจนต์ SQL PowerShell
ที่งานใหม่ของฉันเรามีอินสแตนซ์ที่มีชื่อหลายรายการในแต่ละเซิร์ฟเวอร์ เช่น Server1 \ Dev Server1 \ DevIntegrated Server1 \ QA ฉันมีสคริปต์ SQL PowerShell ในงานที่เรียกไปยังระบบปฏิบัติการเรียกใช้Foo.exeแต่ต้องผ่านพารามิเตอร์บรรทัดคำสั่ง (สตริงการเชื่อมต่อ) งาน SQL Agent จะมีอยู่ในแต่ละอินสแตนซ์ด้วยขั้นตอนการพิมพ์ PowerShell ที่จำเป็นต้องรู้ว่าบริบทปัจจุบันคืออะไร ieการดำเนินการนี้เริ่มต้นบน DevIntegrated ฉันไม่ต้องการให้สคริปต์เริ่มต้นด้วย ... $thisInstance = "Dev" ... โดยเฉพาะอย่างยิ่งเมื่อฉันต้องแก้ไขว่าเมื่อเราย้ายไปยังสภาพแวดล้อม (เซิร์ฟเวอร์ใหม่และอินสแตนซ์ที่มีชื่อ) ในอีกไม่กี่เดือนข้างหน้า ถ้าฉันเริ่ม SQLPS ฉันสามารถกำหนดอินสแตนซ์ของฉันโดยการแบ่งส่วนและทำให้ผลลัพธ์ของ Get-Location หรือทำงาน (Invoke-Sqlcmd -Query "SELECT @@servername AS ServerName" -SuppressProviderContextWarning).ServerName เมื่อตัวแทนของ SQL เริ่มงานประเภท PowerShell จะเริ่มใน …

1
SQL Server / T-SQL รองรับความต่อเนื่องของบรรทัดเพื่อแยกสตริงที่ยาวหรือไม่?
บางครั้งฉันมีสคริปต์ SQL ที่มีอย่างน้อยหนึ่งสตริงที่ยาวเป็นพิเศษ (บางครั้งก็ยิ่งยาว) โดยทั่วไปสิ่งเหล่านี้เป็นVARBINARYตัวอักษร / ค่าคงที่ที่เป็นตัวแทนของไฟล์ / แอสเซมบลี แต่บางครั้งพวกเขาก็เป็นข้อความ ปัญหาหลักของสายอักขระที่ยาวมาก ๆ คือตัวแก้ไขข้อความบางตัวไม่สามารถจัดการได้ทั้งหมด ตัวอย่างเช่นฉันมีVARBINARYตัวอักษรที่ฉันใช้ในCREATE ASSEMBLY [AssemblyName] FROM 0x....คำสั่งและแอสเซมบลีตัวเองมีขนาดเพียง 1 MB ซึ่งเท่ากับเพียง 2 ล้านอักขระในไฟล์ข้อความเนื่องจากแต่ละไบต์ต้องการอักขระสองตัวที่จะแสดงในรูปแบบเลขฐานสิบหก (เช่น0x1F= a 1และ an F) SQL Server Management Studio (SSMS) จัดการได้ไม่ดีและค้างนานหลายวินาทีในขณะที่ฉันพยายามเลื่อนข้ามบรรทัดนั้น และในความเป็นจริงแล้วบางเวอร์ชั่น (ไม่แน่ใจว่ายังคงเกิดขึ้น) จะแสดงคำเตือนเกี่ยวกับบรรทัดยาวเมื่อเปิดสคริปต์ที่มีอย่างน้อยหนึ่งบรรทัดในระยะเวลาที่กำหนด ปัญหาที่สองคือมันซับซ้อนการจัดรูปแบบเมื่อใช้ในการแก้ไขโดยไม่ต้องเปิดใช้งานการตัดคำหรือโพสต์ออนไลน์ ปัญหาที่นี่คือตัวเลื่อนสำหรับแถบเลื่อนแนวนอนแคบมากและเคลื่อนย้ายได้แม้เพียงเล็กน้อยก็จะเลื่อนข้อความที่ไม่ยาวมากออกไปให้พ้น ตอนนี้ T-SQL จะไม่ยกเลิกคำสั่งด้วยบรรทัดใหม่หรือแม้แต่เซมิโคลอน (แม้ว่าเซมิโคลอนนั้นจะเป็นที่ต้องการ / แนะนำโดยเริ่มจาก SQL Server 2005) ดังนั้นเนื่องจาก SQL …


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