ด้วย SQL Server 2008 R2 เมื่อฉันบันทึกผลลัพธ์เป็น CSV ไม่มีส่วนหัว ฉันสามารถแก้ไขได้โดยการคัดลอกและวางกับ "คัดลอกด้วยส่วนหัว" หรือเพียงแค่คว้าส่วนหัวแล้ววางลงใน CSV ฯลฯ แต่มีวิธีที่ดีกว่าในการทำเช่นนี้หรือไม่
ด้วย SQL Server 2008 R2 เมื่อฉันบันทึกผลลัพธ์เป็น CSV ไม่มีส่วนหัว ฉันสามารถแก้ไขได้โดยการคัดลอกและวางกับ "คัดลอกด้วยส่วนหัว" หรือเพียงแค่คว้าส่วนหัวแล้ววางลงใน CSV ฯลฯ แต่มีวิธีที่ดีกว่าในการทำเช่นนี้หรือไม่
คำตอบ:
ใน SSMS คุณต้องเปลี่ยนตัวเลือกบางอย่าง:
เครื่องมือ - ตัวเลือก - ผลการค้นหา - เซิร์ฟเวอร์ SQL - ผลไปยังตาราง (หรือข้อความ) -> รวมส่วนหัวของคอลัมน์เมื่อคัดลอกหรือบันทึกผล
การตั้งค่าที่เปลี่ยนแปลงถูกนำไปใช้กับหน้าต่างแบบสอบถามใหม่ แต่ไม่ใช่หน้าต่างแบบสอบถามที่มีอยู่
ฉันเห็นว่าคุณระบุไว้อย่างชัดเจนว่าคุณกำลังมองหาโซลูชันในSSMSแต่ฉันคิดว่าฉันจะมอบโซลูชัน PowerShell ในกรณีที่มันช่วยได้ (SQLPS สามารถเข้าถึงได้จากภายใน SSMS 2008 และ 2008 R2)
คุณสามารถใช้ SQLPS (หรือ PowerShell ปกติกับ SQL cmdlet snapin) เพื่อเรียกใช้ดังนี้:
Invoke-Sqlcmd -Query "sp_databases" -ServerInstance "LocalHost\R2" |
Export-Csv -Path "C:\temp\MyDatabaseSizes.csv" -NoTypeInformation
ฉันจะไปกับตัวอย่างนี้หากคุณสนใจ
ถ้าคุณชอบวิธีสคริปต์ PowerShell ผมมีสคริปต์ที่ส่งออกไปยัง CSV จาก SSMS ผ่าน PowerShell ฉันชอบมันจนถึงตอนนี้คุณสามารถมีสคริปต์ SQL แบบไดนามิก, heck คุณสามารถเลือกข้อความอะไรก็ได้และ SSMS ส่งผ่านไปยังสคริปต์เป็นอาร์กิวเมนต์
ข้อเสียเพียงอย่างเดียวคือฉันไม่พบวิธีที่ชาญฉลาดในการส่งผ่านการเชื่อมต่อของหน้าต่างปัจจุบัน งานปัจจุบันของฉันคือการตั้งค่าเครื่องมือต่าง ๆ ที่แตกต่างกันเฉพาะในสตริงการเชื่อมต่อของพวกเขาเช่น PROD_DW, PROD_DB, TEST_DW ...
คุณสามารถทำการรวมกลุ่มทั้งหมดเพื่อเพิ่มส่วนหัวคอลัมน์อย่างชัดเจนในฐานะที่เป็นแถวเดี่ยวให้เลือกรวมกับแถวจริงตัวอย่างเช่น
SELECT 'col1' AS col1...
UNION ALL
SELECT T.col1...
FROM TABLE T
ความเจ็บปวดที่ใหญ่ที่สุดด้วยวิธีนี้คือการบังคับให้ใส่ข้อมูลประเภทอักขระในตัวเลือกที่สอง
SSMS ไม่ใช่เครื่องมือส่งออกข้อมูล ใช้ตัวช่วยสร้างการนำเข้า / ส่งออกหรือ BCP ซึ่งทั้งสองอย่างได้รับการออกแบบเป็นเครื่องมือในการส่งออกข้อมูลและจะทำสิ่งที่คุณต้องการทำ