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

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

1
คำสั่ง bcp ไวยากรณ์ไม่ถูกต้องใกล้กับ ' ' ตัวละครเป็นจริง:“ ä”
ฉันมี mssql-serverและmssql-toolsติดตั้งบน Ubuntu (Linux) เมื่อฉันพยายามส่งออกข้อมูลด้วยคำสั่งbcpโดยใช้บรรทัดคำสั่งต่อไปนี้: bcp DBname.dbo.Täble_Name out Täble_Name -c -k -S127.0.0.1 -Usa -PpassWord -r ~ ฉันได้รับข้อผิดพลาดนี้: SQLState = 37000, NativeError = 102 Error = [Microsoft] [ODBC Driver 13 สำหรับ SQL Server] [SQL Server] ไวยากรณ์ไม่ถูกต้องใกล้ ' ' คือ�ä หากฉันล้อมรอบTäble_Nameด้วยเครื่องหมายวงเล็บ: bcp DBname.dbo.[Täble_Name] out Täble_Name -c -k -S127.0.0.1 -Usa -PpassWord -r ~ …

2
ไม่สามารถเริ่ม SQL Server บน Ubuntu 16.04
ฉันมี SQL Server v.Next ตัวอย่างสาธารณะบนเครื่อง Ubuntu 16.04 ที่ติดตั้งและทำงานเมื่อวานนี้ แต่มันไม่ทำงานวันนี้ รับข้อผิดพลาดด้านล่าง: root @ OraServer: / var / opt / mssql / log # systemctl สถานะ mssql-server ● mssql-server.service - โปรแกรมฐานข้อมูล Microsoft (R) SQL Server (R) โหลดแล้ว: โหลดแล้ว (/lib/systemd/system/mssql-server.service; เปิดใช้งาน; ตั้งไว้ล่วงหน้าของผู้ขาย: เปิดใช้งาน) ใช้งานอยู่: ไม่ทำงาน (ไม่ทำงาน) (ผลลัพธ์: exit-code) ตั้งแต่วันอาทิตย์ 2016-11-27 13:34:23 IST; 18 …

2
ป้องกัน SSMS จากการดูระบบไฟล์ของเซิร์ฟเวอร์
ฉันมีผู้ใช้หลายคนที่ใช้เซิร์ฟเวอร์ MS SQL ร่วมกันภายใต้การดูแลของฉัน พวกเขาไม่ควรเห็น (หรือแม้กระทั่งระวัง) ของผู้ใช้รายอื่นและข้อมูลของพวกเขาบนเซิร์ฟเวอร์นั้น ผู้ใช้แต่ละคนมีฐานข้อมูลของตัวเอง พวกเขาสามารถทำสิ่งที่พวกเขาต้องการด้วยฐานข้อมูลของพวกเขา ฉันใช้Partial Containmentคุณสมบัติของ SQL Server เพื่อล็อคผู้ใช้งาน ล็อกอินถูกสร้างขึ้นภายในฐานข้อมูล วิธีนี้ใช้งานได้ดีเนื่องจากไม่เห็นบัญชีผู้ใช้หรือฐานข้อมูลอื่นด้วยวิธีนี้ การเข้าสู่ระบบฐานข้อมูลถูกเพิ่มไปยังบทบาทฐานข้อมูลที่ฉันสร้างด้วยคำสั่งนี้: USE dbname CREATE ROLE dbrole GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TABLE, CREATE VIEW, ALTER ANY SCHEMA TO dbrole DENY EXECUTE TO dbrole ฉันสร้างบัญชีเข้าสู่ระบบ db ใหม่และเพิ่มไปยังบทบาทที่กล่าวไว้เท่านั้น ผู้ใช้ไม่มีสิทธิ์อื่น ๆ (ที่ฉันรู้) ปัญหาเดียวที่เหลืออยู่คือ SSMS ยังคงสามารถเรียกดูระบบไฟล์ของเซิร์ฟเวอร์ได้ ถ้าฉันคลิกขวาที่ฐานข้อมูลและเลือกTasks …

1
แผนแบบสอบถามแปลกเมื่อใช้หรือในข้อเข้าร่วม - สแกนอย่างต่อเนื่องสำหรับทุกแถวในตาราง
ฉันกำลังพยายามสร้างแผนการสืบค้นตัวอย่างเพื่อแสดงว่าทำไมชุดผลลัพธ์สองชุดของยูเนี่ยนจึงดีกว่าการใช้ OR ในประโยค JOIN แผนแบบสอบถามที่ฉันเขียนทำให้ฉันนิ่งงัน ฉันใช้ฐานข้อมูล StackOverflow กับดัชนีที่ไม่ได้เป็นคลัสเตอร์ใน Users.Reputation แบบสอบถามคือ CREATE NONCLUSTERED INDEX IX_NC_REPUTATION ON dbo.USERS(Reputation) SELECT DISTINCT Users.Id FROM dbo.Users INNER JOIN dbo.Posts ON Users.Id = Posts.OwnerUserId OR Users.Id = Posts.LastEditorUserId WHERE Users.Reputation = 5 แผนการสืบค้นอยู่ที่https://www.brentozar.com/pastetheplan/?id=BkpZU1MZEระยะเวลาการสืบค้นสำหรับฉันคือ 4:37 นาทีส่งคืนแถว 26612 ฉันไม่เคยเห็นรูปแบบการสแกนคงที่นี้ถูกสร้างขึ้นจากตารางที่มีอยู่ก่อนหน้านี้ - ฉันไม่คุ้นเคยกับสาเหตุที่มีการสแกนค่าคงที่สำหรับทุก ๆ แถวเมื่อการสแกนแบบคงที่มักใช้กับแถวเดียวที่ป้อนโดยผู้ใช้ เช่น SELECT GETDATE () ทำไมถึงใช้ที่นี่? …

2
ทำไมจึงเร็วกว่านี้และปลอดภัยที่จะใช้หรือไม่ (ที่ตัวอักษรตัวแรกอยู่ที่ไหนในตัวอักษร)
เรื่องย่อสั้น ๆ เรากำลังอัปเดตผู้คนกลุ่มเล็ก ๆ ด้วยค่านิยมจากกลุ่มคนที่มีขนาดใหญ่มาก ในการทดสอบล่าสุดการอัพเดทนี้ใช้เวลาประมาณ 5 นาทีในการรัน เราพบสิ่งที่ดูเหมือนว่าการปรับให้เหมาะสมที่สุดที่เป็นไปได้ซึ่งดูเหมือนว่าจะทำงานได้อย่างสมบูรณ์แบบ! แบบสอบถามเดียวกันนี้ทำงานในเวลาน้อยกว่า 2 นาทีและสร้างผลลัพธ์เดียวกันอย่างสมบูรณ์แบบ นี่คือแบบสอบถาม บรรทัดสุดท้ายถูกเพิ่มเป็น "การเพิ่มประสิทธิภาพ" ทำไมเวลาค้นหาที่ลดลงอย่างมาก พวกเราขาดอะไรบางอย่าง? สิ่งนี้นำไปสู่ปัญหาในอนาคตได้หรือไม่? UPDATE smallTbl SET smallTbl.importantValue = largeTbl.importantValue FROM smallTableOfPeople smallTbl JOIN largeTableOfPeople largeTbl ON largeTbl.birth_date = smallTbl.birthDate AND DIFFERENCE(TRIM(smallTbl.last_name),TRIM(largeTbl.last_name)) = 4 AND DIFFERENCE(TRIM(smallTbl.first_name),TRIM(largeTbl.first_name)) = 4 WHERE smallTbl.importantValue IS NULL -- The following line …

1
คอลัมน์ที่กระจัดกระจายเวลาซีพียูและดัชนีที่กรอง
Sparsing เมื่อทำการทดสอบบางอย่างเกี่ยวกับคอลัมน์หร็อมแหร็มเช่นที่คุณทำมีความปราชัยประสิทธิภาพที่ฉันต้องการทราบสาเหตุโดยตรงของ DDL ฉันสร้างตารางที่เหมือนกันสองตารางโดยที่หนึ่งมี 4 คอลัมน์หร็อมแหร็มและอีกหนึ่งไม่มีคอลัมน์ที่กระจัดกระจาย --Non Sparse columns table & NC index CREATE TABLE dbo.nonsparse( ID INT IDENTITY(1,1) PRIMARY KEY NOT NULL, charval char(20) NULL, varcharval varchar(20) NULL, intval int NULL, bigintval bigint NULL ); CREATE INDEX IX_Nonsparse_intval_varcharval ON dbo.nonsparse(intval,varcharval) INCLUDE(bigintval,charval); -- sparse columns table & NC index CREATE …

1
เหตุใดลำดับของ MS SQL Server จึงไม่มีพารามิเตอร์ ORDER เช่น Oracle
ในเอกสารประกอบของCREATE SEQUENCET-SQLคุณจะเห็นว่าCREATE SEQUENCEคำสั่งไม่มีORDERพารามิเตอร์ สำหรับการเปรียบเทียบเอกสาร Oracle สำหรับการCREATE SEQUENCEแสดงตัวเลือกORDER/ NOORDER: ORDER ระบุORDERเพื่อรับประกันว่าหมายเลขลำดับจะถูกสร้างขึ้นตามลำดับการร้องขอ ข้อนี้มีประโยชน์ถ้าคุณใช้หมายเลขลำดับเป็นเวลาประทับ คำสั่งที่รับประกันนั้นมักจะไม่สำคัญสำหรับลำดับที่ใช้สร้างคีย์หลัก ORDERจำเป็นสำหรับการรับประกันการสั่งซื้อเท่านั้นหากคุณใช้ Oracle Database กับ Real Application Clusters หากคุณใช้โหมดเอกสิทธิ์เฉพาะบุคคลหมายเลขลำดับจะถูกสร้างขึ้นตามลำดับเสมอ NOORDER ระบุNOORDERหากคุณไม่ต้องการรับประกันหมายเลขลำดับจะถูกสร้างขึ้นตามลำดับการร้องขอ นี่คือค่าเริ่มต้น Microsoft SQL Server มีข้อ จำกัด ในการสั่งซื้ออย่างมากSEQUENCEหรือไม่ หรือ Microsoft ไม่เห็นว่าสำคัญโดยทั่วไปใช่หรือไม่

3
เหตุใดแบบสอบถามนี้จึงไม่มีส่วนคำสั่ง FROM ไม่ใช่ข้อผิดพลาด
ดังนั้นเราจึงมีแบบสอบถามที่มีคิวรีย่อยที่มีการพิมพ์ผิดอยู่ มันหายไปจากอนุประโยค แต่เมื่อคุณเรียกใช้มันไม่ผิดพลาด! ทำไม!? SELECT 1 ,r.id ,'0D4133BE-C1B5-4141-AFAD-B171A2CCCE56' ,GETDATE() ,1 ,'Y' ,'N' ,oldItem.can_view ,oldItem.can_update FROM Role r JOIN RoleObject oldReport ON r.customer_id = oldReport.customer_id JOIN RoleItem oldItem ON oldReport.id = oldItem.role_object_id AND r.id = oldItem.role_id WHERE r.id NOT IN (SELECT role_id WHERE role_object_id = '0D4133BE-C1B5-4141-AFAD-B171A2CCCE56') AND oldReport.id = '169BA22F-1614-4EBA-AF45-18E333C54C6C'

3
SQL Server อนุญาต (ทำให้มองเห็นได้) DDL ภายในธุรกรรมไปยังธุรกรรมก่อนที่จะส่งมอบหรือไม่?
ใน PostgreSQL ฉันสามารถสร้างตารางที่มีข้อมูลการทดสอบบางส่วนและจากนั้นในการทำธุรกรรมโยกย้ายไปยังคอลัมน์ใหม่ของรูปแบบที่แตกต่างกันส่งผลให้ในหนึ่งตารางเขียนเมื่อCOMMIT, CREATE TABLE foo ( a int ); INSERT INTO foo VALUES (1),(2),(3); ติดตามโดย, BEGIN; ALTER TABLE foo ADD COLUMN b varchar; UPDATE foo SET b = CAST(a AS varchar); ALTER TABLE foo DROP COLUMN a; COMMIT; อย่างไรก็ตามสิ่งเดียวกันใน SQL Server ของ Microsoft ดูเหมือนจะสร้างข้อผิดพลาด เปรียบเทียบซอ db db ที่ใช้งานได้โดยที่ADDคำสั่ง (คอลัมน์) …

2
ฉันจะกำจัดสาขาคู่ขนานที่ไม่มีประโยชน์ได้อย่างไรเมื่อยกเลิกการตรึงแถวเดียว
ลองพิจารณาคำถามต่อไปนี้ที่ไม่ได้รวมจำนวนสเกลาร์จำนวนไม่กี่ตัว: SELECT A, B FROM ( SELECT MAX(CASE WHEN ID = 1 THEN 1 ELSE 0 END) VAL1 , MAX(CASE WHEN ID = 2 THEN 1 ELSE 0 END) VAL2 , MAX(CASE WHEN ID = 3 THEN 1 ELSE 0 END) VAL3 , MAX(CASE WHEN ID = 4 THEN 1 …

2
SMO, SSMS ช้าสำหรับการจัดการ SQL Server ใน Docker เมื่อเชื่อมต่อกับ localhost
TL; DR:เมื่อเชื่อมต่อคอนเทนเนอร์ SQL Server Docker ของฉันผ่านชื่อที่แปลงเป็นลูปแบ็ค IPv6 ( ::1) การโทร SMO ช้ามาก เมื่อใช้127.0.0.1งานก็รวดเร็ว ฉันพยายามที่จะเรียนรู้วิธีการใช้หางภาพMicrosoft / MSSQL เซิร์ฟเวอร์หน้าต่างนักพัฒนา ตามเอกสารของ Microsoft คอนเทนเนอร์นี้จะเปิดเผยพอร์ต 1433 TCP เท่านั้น docker run -d -p 1433:1433 -e sa_password=Passw0rd! -e ACCEPT_EULA=Y -v C:\dockerdb:C:\dockerdb microsoft/mssql-server-windows-developer ฉันใช้คอนเทนเนอร์ใน Windows 10 และประสบความสำเร็จในการเริ่มต้นพิสูจน์ตัวตนด้วยการรับรองความถูกต้องของ SQL Server และการรันคิวรีกับอินสแตนซ์ที่ใช้ sqlcmd และ SSMS 17.4 บนโฮสต์ windows (เชื่อมต่อกับ localhost …

2
SSRS จะสูญพันธุ์เร็ว ๆ นี้และ PowerBI เป็นรุ่นใหม่หรือไม่
ฉันอ่าน SQL Server 2017 จะรวม PowerBI Server แล้ว พวกเขายังย้าย SSRS ไปยังตัวติดตั้งที่แตกต่างกันดังนั้นจึงจะไม่ได้รับการทำแพคเกจในการติดตั้ง SQL Server ดั้งเดิม นี่หมายความว่า Microsoft จะพยายามเลิกใช้ SSRS ในที่สุดหรือไม่ ทีมของเราควรพยายามสร้างรายงานใหม่ใน PowerBI และเปลี่ยนรายงาน SSRS ก่อนหน้าหรือไม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.