it-swarm.asia

حفظ النتائج بتنسيق CSV * مع * رؤوس في SSMS

مع SQL Server 2008 R2 ، عندما أحفظ النتائج كملف CSV ، لا توجد رؤوس. يمكنني حل هذه المشكلة عن طريق النسخ واللصق باستخدام "النسخ باستخدام الرؤوس" ، أو مجرد الإمساك بالرؤوس ولصقها في ملف CSV وما إلى ذلك ، ولكن هل هناك طريقة أفضل للقيام بذلك؟

13
Kyle Brandt

في SSMS ، تحتاج إلى تغيير بعض الخيارات:

أدوات - خيارات - نتائج الاستعلام - خادم SQL - النتائج على الشبكة (أو النص) -> تضمين رؤوس الأعمدة عند نسخ النتائج أو حفظها.

يتم تطبيق الإعدادات التي تم تغييرها على نوافذ الاستعلام الجديدة ، لكن ليس الموجودة.

22
Marian

أرى أنك بوضوح ذكرت أنك تبحث عن حل في SSMS ولكنني اعتقدت أنني سأقدم حل PowerShell في حال كان ذلك مفيدًا (يمكن الوصول إلى SQLPS من داخل SSMS 2008 و 2008 R2).

يمكنك استخدام SQLPS (أو PowerShell العادي مع الأداة الإضافية SQL cmdlet) لتشغيل شيء مثل هذا:

Invoke-Sqlcmd -Query "sp_databases" -ServerInstance "LocalHost\R2" |
Export-Csv -Path "C:\temp\MyDatabaseSizes.csv" -NoTypeInformation

يمكنني الاستمرار في هذا المثال إذا كنت مهتمًا.

10
Aaron Nelson - SQLvariant

إذا كنت تحب نهج البرنامج النصي PowerShell ، فلدي برنامج نصي يصدر إلى CSV من SSMS عبر PowerShell . يعجبني حتى الآن أنه يمكنك الحصول على نص برمجي SQL ديناميكي ، تأكد من تحديد أي نص و SSMS يمرره إلى البرنامج النصي كحجة.

الجانب السلبي الوحيد هو أنني لم أجد طريقة ذكية لتمرير على طول اتصال النافذة الحالية. عملي الحالي هو إعداد أدوات مختلفة تختلف فقط في سلاسل الاتصال الخاصة بهم ، أي PROD_DW و PROD_DB و TEST_DW ...

3
billinkc

يمكنك إجراء انضمام جميع الروابط لإضافة رؤوس الأعمدة بشكل صريح كصف مفرد حدد موحدًا مقابل الصفوف الحقيقية ، على سبيل المثال:

SELECT 'col1' AS col1... 
UNION ALL 
SELECT T.col1... 
FROM TABLE T

الألم الأكبر مع هذا النهج هو الإجبار على نوع بيانات الشخصية في التحديد الثاني.

1
Phillip Senn