none
ManagementStudio2012でクエリ結果をコピー(取得データにタブが含まれる)したときの挙動について RRS feed

  • 質問

  • お世話になります。
    単純に設定の問題なのかもしれませんが有効な情報を見つけることができず、
    ManagementStudio2012とManagementStudio2008r2において挙動が変わってしまい困っております。

    内容
    SSMS2012でクエリの実行結果を「ヘッダー付きでコピー」⇒Excelに貼り付けたとき
    データの中に"タブ"が混ざっていると、タブで分割されてセルにデータが貼り付く。

    SSMS2008r2 でクエリを実行し、同様に「ヘッダー付きでコピー」⇒Excelに貼り付けたときは
    データの中にタブが混ざっていても分割されることなく1カラム、1セルにデータが貼りつく。

    ==
    SSMS2012バージョン:11.0.6020.0
    SSMS2008r2バージョン:10.50.4042.0

    データ取得元 DB
    SQLServer2012 互換レベル110

    以上、よろしくお願い致します。


    • 編集済み k-matsu747 2017年6月6日 23:40 誤記
    2017年6月6日 9:15

回答

  • とりあえず、自己解決しましたのでメモ。

    SSMS2016 で どちらの動作にするか選べるようになってました。

    SSMS2016で、コピーまたは保存時に CR/LF を保持 の選択オプションが追加されてます。

    (ツール>オプション>クエリ結果>SQL Server>結果をグリッドに表示 のオプションの中)

    SSMS2016 (13.0.16106.4) で試したところ、 SSMS2008r2 と同様にタブで分割されずに1カラム1セルにデータが貼りつく。

    また、コピーまたは保存時にCR/LFを保持 のオプションをON にしておくと、 SSMS2012 と同様に分割されて貼りつく

    • 回答としてマーク k-matsu747 2017年6月8日 6:12
    2017年6月8日 6:11

すべての返信

  • 対処療法的になりますが、その列の値をダブルクォーテーションで括ることにより逃げられると思います。タブだけではなく、改行が入っている場合も対処できると思います。

    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2017年6月7日 0:14
  • trapemiya様

    ご返信ありがとうございます。

    >その列の値をダブルクォーテーションで括ることにより・・

    最終的にはそのような対応の検討も必要になってしまうのかもしれませんが、

    そもそも、SSMS2012とSSMS2008r2上でSQLを実行し、実行結果のグリッドをコピーして

    excelに貼り付けたときの結果が異なるというのが疑問でなりません。

    ユーザ側でSSMS上で、SQL実行⇒結果グリッドをコピーしてExcel資料に貼り付ける作業が何個もあります。

    できれば実行SQLを変えずにSSMS2012の何かしらの設定(結果グリッドをコピーしたときの設定?)変更で

    対応できるのが一番良いと思った次第です。

    現状では 資料作成時はSSMS2012はあきらめて SSMS2008r2の利用に戻してもらおうかと思います。

    2017年6月7日 5:56
  • とりあえず、自己解決しましたのでメモ。

    SSMS2016 で どちらの動作にするか選べるようになってました。

    SSMS2016で、コピーまたは保存時に CR/LF を保持 の選択オプションが追加されてます。

    (ツール>オプション>クエリ結果>SQL Server>結果をグリッドに表示 のオプションの中)

    SSMS2016 (13.0.16106.4) で試したところ、 SSMS2008r2 と同様にタブで分割されずに1カラム1セルにデータが貼りつく。

    また、コピーまたは保存時にCR/LFを保持 のオプションをON にしておくと、 SSMS2012 と同様に分割されて貼りつく

    • 回答としてマーク k-matsu747 2017年6月8日 6:12
    2017年6月8日 6:11