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

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

2
การล่ม CLR บน SQL Server 2014 (windows 2012R2)
ฉันมี CLR ขนาดเล็กนี้ที่ทำหน้าที่ RegEX ในสตริงในคอลัมน์ เมื่อทำงานบน SQL Server 2014 (12.0.2000) บน Windows Server 2012R2 กระบวนการขัดข้อง ข่าวสารเกี่ยวกับ 0, ระดับ 11, สถานะ 0, บรรทัด 0 มีข้อผิดพลาดร้ายแรงเกิดขึ้นกับคำสั่งปัจจุบัน ควรยกเลิกผลลัพธ์หากมี และให้กองการถ่ายโอนข้อมูลถ้าฉันทำ select count (*) from table where (CLRREGEX,'Regex') แต่เมื่อฉันทำ select * from table where (CLRREGEX,'Regex') มันจะส่งคืนแถว ทำงานได้อย่างสมบูรณ์บน SQL Server รุ่นเดียวกับที่ทำงานบน Windows 8.1 ความคิดใด ๆ - …

1
บัญชีบริการ SQL Server สิทธิ์ Windows และสิทธิพิเศษ
คำถามของฉันคือถ้าคุณสร้างบัญชีผู้ใช้โดเมนใหม่สำหรับกระบวนการ SQL Server แต่ละกระบวนการควรตั้งค่าการอนุญาตใดสำหรับแต่ละบัญชี หรือผู้จัดการการกำหนดค่า SQL ดูแลเรื่องนี้จริง ๆ และฉันเพิ่งมีปัญหาที่ไม่คาดคิด? ฉันค่อนข้างบ่อยต้องติดตั้ง Microsoft SQL Server และสงสัยว่าใครสามารถให้คำแนะนำในการกำหนดค่าบัญชีที่ควรใช้บริการ IMO สิ่งนี้ได้รับการรับรองโดย Microsoft อย่างชัดเจนในขณะที่พวกเขาชี้คุณไปในทิศทางที่ถูกต้องฉันไม่สามารถหาตัวอย่างที่เป็นรูปธรรมได้ เพื่อสรุปสิ่งที่ฉันเห็น: สำหรับสภาพแวดล้อมการปรับใช้ \ development อย่างง่ายคุณสามารถใช้บัญชีเสมือนที่เป็นค่าเริ่มต้นที่โปรแกรมติดตั้งใช้: เช่น NT SERVICE\MSSQLSERVER หลีกเลี่ยงการใช้SYSTEMบัญชีนี้ไม่ปลอดภัย สำหรับการผลิตและในสภาพแวดล้อมของโดเมนขอแนะนำให้ใช้บัญชีบริการที่มีการจัดการหรือสร้างบัญชีผู้ใช้โดเมน (ไม่ใช่ผู้ดูแลระบบ) สำหรับแต่ละบริการ ถูกกล่าวหาว่าถ้าคุณใช้บัญชีโดเมนในเวลาติดตั้งโปรแกรมติดตั้งจะกำหนดสิทธิ์ที่จำเป็นสำหรับคุณ หากเปลี่ยนบัญชีบริการในการติดตั้งที่มีอยู่จากบัญชีเสมือนเป็นบัญชีโดเมนคำแนะนำคือการใช้ตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL เพื่อตั้งค่าบัญชีบริการใหม่ ที่ถูกกล่าวหาว่าจะตั้งค่าสิทธิ์ที่จำเป็นสำหรับคุณ ฉันเพิ่งลองเปลี่ยนบัญชีบริการในการติดตั้งที่มีอยู่เป็นบัญชีโดเมนและมันจะทำให้ฉันล้มเหลวในการเข้าสู่ระบบจนกว่าฉันจะได้รับอนุญาตบัญชีlog on as serviceซึ่งขัดแย้งกับส่วนที่ผู้จัดการการกำหนดค่า SQL Server จะกำหนดสิทธิ์ที่จำเป็น (แม้ว่าฉันไม่แน่ใจว่า GPO อาจรบกวนการตั้งค่านโยบายความปลอดภัยในพื้นที่นี้หรือไม่) Microsoft จัดทำรายการสิทธิ์ที่การตั้งค่าเซิร์ฟเวอร์ SQL มอบให้ในหน้านี้ แต่มันก็ไม่ชัดเจนสำหรับฉันถ้านั่นเป็นสิ่งที่ฉันควรทำด้วยตนเองสำหรับผู้ใช้ที่ฉันสร้างเพื่อเรียกใช้บริการหรือว่าการใช้ตัวจัดการการกำหนดค่า …

1
การสลับข้อมูลล้มเหลวด้วย“ อนุญาตค่าที่ไม่ได้รับอนุญาตจากการตรวจสอบข้อ จำกัด หรือฟังก์ชั่นพาร์ติชันบนตารางเป้าหมาย”
รับดังต่อไปนี้ -- table ddl create table dbo.f_word( sentence_id int NULL, sentence_word_id int NULL, word_id int NULL, lemma_id int NULL, source_id int NULL, part_of_speech_id int NULL, person_id int NULL, gender_id int NULL, number_id int NULL, tense_id int NULL, voice_id int NULL, mood_id int NULL, case_id int NULL, degree_id int NULL, citation …

4
ฉันจะถ่ายโอนข้อมูลเข้าสู่ระบบจาก 2008R2 เป็น 2014 ด้วยรหัสผ่านได้อย่างไร
ฉันได้ลองTasks> Generate Scripts...และตั้งค่า 'การเข้าสู่ระบบสคริปต์' ในตัวเลือกการเขียนสคริปต์ขั้นสูง แต่ฉันได้รับสิ่งนี้ในผลลัพธ์: /* For security reasons the login is created disabled and with a random password. */ มีวิธีง่ายๆในการเขียนสคริปต์การเข้าสู่ระบบเหล่านี้ด้วยรหัสผ่านหรือวิธีอื่นในการถ่ายโอนการเข้าสู่ระบบจากอินสแตนซ์ 2008R2 เป็นอินสแตนซ์ 2014 หรือไม่?

1
ความแตกต่างระหว่างการค้นหาคำกริยาและคำกริยา
ฉันพยายามปรับแต่งคำถามที่เรามีใน SQL Server 2014 Enterprise ฉันได้เปิดแผนแบบสอบถามจริงใน SQL Sentry Plan Explorer และฉันสามารถดูบนโหนดเดียวว่ามีSeek PredicateและPredicate ข้อแตกต่างระหว่างSeek PredicateและPredicateคืออะไร หมายเหตุ: ฉันสามารถเห็นได้ว่ามีปัญหามากมายกับโหนดนี้ (เช่นแถวโดยประมาณ vs จริง, IO ที่เหลือ) แต่คำถามไม่เกี่ยวข้องกับสิ่งใด ๆ

4
ทางเลือกในการสำรองข้อมูลเครือข่าย
ในสภาพแวดล้อมของเราเรามีเซิร์ฟเวอร์บางตัวที่อยู่ในกลุ่ม Always On Availability และบางเซิร์ฟเวอร์เป็นแบบสแตนด์อโลน ปกติแล้วเราจะสำรองข้อมูลไปยังเครือข่ายที่ใช้ร่วมกัน แต่เมื่อไม่นานมานี้เราได้สังเกตเห็นว่าเมื่อฐานข้อมูลมีขนาดใหญ่ขึ้นเรื่อย ๆ เวลาที่ใช้ก็นานขึ้นซึ่งจะทำให้เครือข่ายทั้งหมดช้าลง สคริปต์ของ Ola hallengren กำลังถูกใช้กับการบีบอัดและยังแยกไฟล์สำรองข้อมูล ฉันกำลังทำการสำรองข้อมูล "เต็มรูปแบบ" ทุกวันเท่านั้น การสำรองข้อมูลจะไปที่ไดรฟ์เครือข่ายแบ่งปัน EMC isilon ฉันไม่เคยพอใจกับ EMC DD Boost ทางเลือกเดียวคือทำการสำรองข้อมูลในเครื่องแล้วคัดลอกไปยังเครือข่ายเดียวกัน มีวิธีที่มีประสิทธิภาพนอกเหนือจากข้างต้นหรือไม่

1
N'Șc 'พิจารณาคีย์ที่ซ้ำกันของ N'C' โดยใช้การเปรียบเทียบ Latin1_General_CI_AS
ฉันมีตารางที่มีคีย์เฉพาะที่มีNVARCHAR(50)คอลัมน์ (ถูกต้องหรือไม่ แต่มีอยู่) ดังนั้นเมื่อพยายามที่จะแทรกȘcหรือC(ไม่สำคัญกับคำสั่งของเม็ดมีด) มันจะแตกบนเม็ดที่สองเนื่องจากปัญหาการเรียง นี่คือข้อผิดพลาด: (รับผลกระทบ 1 แถว) ข่าวสารเกี่ยวกับ 2601, ระดับ 14, สถานะ 1, บรรทัดที่ 16 ไม่สามารถแทรกแถวคีย์ซ้ำในวัตถุ 'dbo.testT' ด้วยดัชนีเฉพาะ 'IX_TestT' ค่าคีย์ที่ซ้ำกันคือ (C) เลือกผลตอบแทน: Latin1_General_CI_ASเปรียบเทียบค่าเริ่มต้นฐานข้อมูลเป็น ใช้เวลาดูวิธีการแก้ปัญหาโดยไม่ต้องเปลี่ยนโครงสร้างที่มีอยู่แล้ว แต่ไม่สามารถหาวิธีทำงานได้ พยายามเรียงความและรวมที่แตกต่างกันทุกอย่างล้มเหลว อ่าน ( ที่นี่และที่นี่ ) เกี่ยวกับการขยายตัวอักขระและอื่น ๆ ยังคงติดอยู่ นี่คือตัวอย่างรหัสที่ฉันใช้เพื่อทำซ้ำปัญหารู้สึกฟรีเพื่อแก้ไขและแนะนำสิ่งที่สามารถช่วยแก้ปัญหานี้ได้ CREATE TABLE testT ( [Default_Collation] [NVARCHAR] (50) COLLATE DATABASE_DEFAULT, [Latin1_General_CI_AS] [NVARCHAR] (50) COLLATE Latin1_General_CI_AS, …

1
SQLServer Upgrade Advisor 2014 หยุดทำงาน
ฉันพยายามเรียกใช้ SQL Server Upgrade Advisor 2014 กับเซิร์ฟเวอร์ SQL Server 2008 ทุกอย่างดูดีเมื่อเชื่อมต่อกับเซิร์ฟเวอร์ 2008 และฉันสามารถเลือกฐานข้อมูลที่ฉันต้องการวิเคราะห์ แต่เมื่อเปิดตัวมันจะทำงานตลอดไปโดยไม่ทำอะไรเลย (อยู่ที่ขั้นตอนการวิเคราะห์กฎ: 0/112 ) เกิดอะไรขึ้นและฉันจะแก้ไขได้อย่างไร ทั้ง SQL Server 2008 และ 2014 เป็นรุ่น Express และติดตั้งบนแล็ปท็อปของฉัน น่าเสียดายนี่เป็นวิธีเดียวที่ฉันพบว่าเรียกใช้ Upgrade Advisor (มีข้อ จำกัด มากเกินไปที่จะเรียกใช้บนฐานข้อมูล prod / dev จริง) อินสแตนซ์ SQL 2008 อยู่กับ SP3 เป็นสิ่งจำเป็น Microsoft SQL Server 2008 (SP3) - 10.0.5500.0 …

3
เป็นไปได้หรือไม่ที่จะเลือก RAISERROR หรือ THROW ขึ้นอยู่กับรุ่นของ SQL Server
นี่คือรหัสของฉันตอนนี้: BEGIN TRY INSERT INTO TABLE (F1,F2,F3) VALUES ('1','2','3') END TRY BEGIN CATCH ;THROW END CATCH ใช้งานได้ดีเว้นแต่ว่ามันจะทำงานบนเครื่องที่มี SQL 2008 ฉันต้องการให้ CATCH block ทำการตรวจสอบกับเวอร์ชันของ SQL และเรียกใช้ THROW ถ้ามันเท่ากับหรือสูงกว่าถึง 2012 และ RAISERROR ถ้าเป็น 2008 ฉันจะทำงานต่อไป ข้อผิดพลาดทางไวยากรณ์และฉันสงสัยว่ามันเป็นไปได้ แม้แต่สิ่งที่เรียบง่ายเช่นนี้ก็ไม่ได้ผลสำหรับฉัน BEGIN CATCH IF ((SELECT SERVERPROPERTY('productversion')) >= 11) ;THROW END CATCH คำแนะนำใด ๆ ที่ชื่นชม

1
ดัชนีใดที่จะใช้ในสถานการณ์นี้
SQL Server 2014 Standard Edition ฉันต้องการค้นหาจำนวนเที่ยวบินที่ไปและกลับจากบางเมืองในบางเดือน เช่น select count(*) from flights where flightTo_AirportCode = 'aaaa' and flightFrom_Airportcode = 'bbbb' and flightdate < '2016-04-01' and flightdate > '2016-02-28' ; ตารางสคีมาอยู่ด้านล่าง ฉันพยายามที่จะประเมินว่าดัชนี modelA หรือ index modelB (ด้านล่าง) เป็นที่นิยมหรือไม่ (ใช้เวลาหลายชั่วโมงในการสร้างดัชนีและพื้นที่ดิสก์อนุญาตให้มีอยู่ครั้งละหนึ่งรายการเท่านั้นดังนั้นฉันจึงพยายามมองก่อนที่จะกระโดด) จากประสบการณ์ของฉันทั้งดัชนีจะทำ ฉันถูกไหม? create index [modelA] on flights (flightTo_AirportCode, flightFrom_AirportCode, flightDate) create index [modelB] …

2
จัดทำดัชนีมุมมองใน SQL Server
ฉันมีตารางและมุมมองที่จัดทำดัชนีไว้เหมือนกัน Create table mytable1 (ID int identity(1,1), Name nvarchar(100)) Create table mytable2 (ID int identity(1,1), Name nvarchar(100)) Create view myview with schemabinding as select a.name, b.name from mytable1 a join mytable2 b on a.Id = b.Id ตอนนี้ถ้าฉันเรียกใช้แบบสอบถามต่อไปนี้ select a.name, b.name from mytable1 a join mytable2 b on a.Id = b.Id …

1
การทำธุรกรรมที่ชัดเจนจำเป็นต้องใช้ในขณะนี้ในวง?
SQL Server 2014: เรามีตารางที่มีขนาดใหญ่มาก (100 ล้านแถว) และเราจำเป็นต้องอัปเดตเขตข้อมูลสองสามแห่ง สำหรับบันทึกการจัดส่ง ฯลฯ เรายังต้องการเก็บไว้ในธุรกรรมที่มีขนาดพอดี หากเราปล่อยให้บิตรันด้านล่างแล้วยกเลิก / ยุติการค้นหางานที่ทำไปทั้งหมดจะถูกส่งไปหรือเราจำเป็นต้องเพิ่มคำสั่ง BEGIN TRANSACTION / END TRANSACTION เพื่อให้เราสามารถยกเลิกได้ตลอดเวลา? DECLARE @CHUNK_SIZE int SET @CHUNK_SIZE = 10000 UPDATE TOP(@CHUNK_SIZE) [huge-table] set deleted = 0, deletedDate = '2000-01-01' where deleted is null or deletedDate is null WHILE @@ROWCOUNT > 0 BEGIN UPDATE …

1
กรณีที่สงสัยของ HADR_SYNC_COMMIT รออยู่
เรากำลังสังเกตเห็นรูปแบบที่น่าสนใจสำหรับการHADR_SYNC_COMMITรอคอยในสภาพแวดล้อมของเรา เรามีแบบจำลองสามแบบ หนึ่งหลักรองหนึ่งซิงค์รองและหนึ่ง async รองในดาต้าเซ็นเตอร์และเราเพิ่งเพิ่มแบบจำลองASYNCอีกสามรายการในดาต้าเซ็นเตอร์อีกอัน (ห่างกันประมาณ 2400 ไมล์) นับตั้งแต่เราเริ่มสังเกตเห็นการเพิ่มขึ้นอย่างมากของการHADR_SYNC_COMMITรอคอย เมื่อเราดูเซสชันที่ใช้งานอยู่เราจะเห็นCOMMIT TRANSACTIONข้อความค้นหามากมายที่รอการจำลอง SYNC จากภาพหน้าจอเราสามารถเห็นได้อย่างชัดเจนว่ามีการHADR_SYNC_COMMITรอคอยในวันที่ 29 มิถุนายนและในที่สุดเราก็ลดลง 'สอง' ของสาม async แบบจำลองในดาต้าเซ็นเตอร์ระยะไกลในช่วงเที่ยงวันที่ 1 กรกฎาคม ที่ลดลงเวลารออย่างมากพร้อมกับมัน สิ่งที่เราตรวจสอบแล้ว - บันทึกการส่งคิว, ทำซ้ำคิว, เวลาเพิ่มความแข็งครั้งล่าสุดและเวลาส่งมอบครั้งสุดท้ายบนเรพลิคาระยะไกล เรามีธุรกรรมเล็ก ๆ ต่อเนื่องในช่วงเวลาทำการดังนั้นคิวการส่งจึงค่อนข้างเล็กในเวลาที่กำหนด (ที่ใดก็ได้ระหว่าง 60KB และ 1MB) รีโมตรีโมตเกือบจะซิงค์กันแล้วมีความแตกต่างกันเล็กน้อยระหว่างเวลาการส่งข้อมูลครั้งล่าสุดและเวลาการทำให้แข็งครั้งสุดท้ายสำหรับบุคคลใด ๆ ในแบบจำลอง ไพพ์เน็ตเวิร์กคือ 10G และเราปรับเปลี่ยนขนาดบัฟเฟอร์การส่งจาก 256 megs เป็น 2 gigs ซึ่งสร้างขึ้นภายใต้สมมติฐานว่าเน็ตเวิร์กวางแพ็กเก็ตและส่งสัญญาณอีกครั้ง วิธีที่ดูเหมือนจะไม่ช่วยมากทั้ง ดังนั้นฉันสงสัยว่าแบบจำลองASYNCเกี่ยวข้องกับการHADR_SYNC_COMMITรอคอยอย่างไร แบบจำลองSYNCไม่ควรขึ้นอยู่กับการรอประเภทนี้เพียงลำพังฉันหายไปไหน

1
PAGELATCH_ สูงและรอ WRITELOG พวกเขาเกี่ยวข้องกันไหม
เราเห็นประเภทรอ PAGELATCH_EX และ PAGELATCH_SH สูงมากพร้อมกับรอ WRITELOG สูง ฉันได้วินิจฉัยแบบสอบถามที่ทำให้ PAGELATCH รอและสามารถกำจัดได้โดยลดอัตราการแทรกลงในคีย์หลักที่ทำคลัสเตอร์ไม่ว่างที่กำหนดด้วยค่าตัวตน ฉันเข้าใจว่าปรากฏการณ์นี้เป็นที่รู้จักกันในหน้าสุดท้ายแทรก latch contention อย่างไรก็ตามคำถามของฉันคือเมื่อมีการแทรกระเบียนใหม่ SQL Server จะใช้ PAGELATCH_EX แบบเอกสิทธิ์เฉพาะบุคคลบนหน้าบัฟเฟอร์แทรกระเบียนไปยังหน้าบัฟเฟอร์เขียนระเบียนลงในบันทึกธุรกรรมและจากนั้นปล่อย PAGELATCH_EX แบบละเอียดโดยละเอียดhttps: // www.microsoft.com/en-ie/download/details.aspx?id=26665หน้า 24 หรือเขียนบันทึกลงในบันทึกการทำธุรกรรมครั้งแรกก่อนที่จะใช้ PAGELATCH_EX โดยมีรายละเอียดว่า "การแก้ปัญหา PAGELATCH การแก้ปัญหาบนเวิร์กโหลด INSERT" ข้อมูลความเป็นมาSQLCAT's Guide to: Relational Engine หากบันทึกถูกเขียนเพื่อเข้าสู่ระบบนอกกลไกการล็อคแล้วฉันสามารถออกกฎเขียนช้าลงในดิสก์เป็นสาเหตุของ PAGELATCH สูงรอ แต่ถ้าสลักถูกเก็บไว้จนกว่าบันทึกจะแข็งขึ้นเพื่อเข้าสู่ระบบฉันควรพิจารณา WRITELOG นอกจากนี้การมีดัชนีที่ไม่ทำคลัสเตอร์หลายรายการจะทำให้ PAGELATCH_ * latch จัดขึ้นอีกต่อไปเช่นหากตารางมีดัชนีที่ทำคลัสเตอร์และหลายดัชนีที่ไม่ได้ทำคลัสเตอร์นั้นจะเพิ่มและปล่อยไปยังหน้าบัฟเฟอร์ดัชนีแต่ละหน้าพร้อมกันหรือไม่ อัปเดต 1 หลังจากอ่านconfio-sql-server-writelog-waitเลื่อนสองและสถาปัตยกรรม WAL …

2
วิธีการเปลี่ยนฐานข้อมูลแบบไดนามิกโดยใช้ TSQL
ฉันมีปัญหากับการพยายามเปลี่ยนบริบทของ SSMS เป็นฐานข้อมูลที่ระบุใน SQL แบบไดนามิก: EXEC sys.sp_executesql N'USE db1 ' ; สามารถดำเนินการได้สำเร็จ แต่บริบทฐานข้อมูลของ SSMS จะไม่เปลี่ยนแปลง ฉันได้ลองปรับเปลี่ยนเล็กน้อยตามข้างบน DECLARE @sql NVARCHAR(100) DECLARE @db NVARCHAR(50) SET @db = N'db1' SET @sql = N'Use ' + @db EXEC sp_executesql @sql ดำเนินการสำเร็จอีกครั้ง แต่ฐานข้อมูลไม่เปลี่ยนแปลง

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