LoginSignup
0
0

More than 5 years have passed since last update.

SQLServerのViewにコメントを書いたらTextHeaderの構文エラーでスクリプトを生成してくれなくなった話

Last updated at Posted at 2017-01-10

はじめに

ある日、コメントを書き終えてスクリプトの生成をしようと思ったらエラーで取得できなくなってしまったのでメモ。

結論

結論を先に言えばコメント内にSQL文の中に更にスラッシュスターコメントを記述するとTextHeaderで落ちる。

こんなエラーが出ます。

Error.png

再現したバージョン

Sample.sql
SELECT @@VERSION
Log
Microsoft SQL Server 2014 - 12.0.2269.0 (X64) 
    Jun 10 2015 03:35:45 
    Copyright (c) Microsoft Corporation
    Express Edition (64-bit) on Windows NT 6.3 <X64> (Build 14393: )

テストデータを作る

CREATE VIEW用のテーブルを作る。
VIEWでなくてもスクリプトを生成するタイミングでコメントが書ければ何でもよい。

CreateHoge.sql
CREATE TABLE T_ほげ(
    ID int NULL,
    Name nvarchar(50) NULL
) ON PRIMARY

問題のCreateView

Sample.sql
/*--------------------------------------------------------------------
名称 :hogehoge
説明 :fugafuga
SELECT ID /**/, Name FROM T_ほげ
/* SELECT ID    , Name FROM T_ほげ */
--------------------------------------------------------------------*/
CREATE VIEW V_ほげげほ AS
SELECT
      ID
    , Name
FROM T_ほげ

上記CreateViewでSQL文とスラッシュスターコメントをコメントに混ぜるとスクリプト生成ができなくなってしまった。
ただしViewとしては普通に動作する。

どんなコメントがダメなのか。

アウトなコメント

SQL文とスラッシュスターコメントをコメントに混ぜるとスクリプトの生成ができなくなる。

text
SELECT ID /**/, Name FROM T_ほげ
/* SELECT ID    , Name FROM T_ほげ */

セーフなコメント

他にもスクリプト生成で落ちるのではないかと思ったものをまとめてみた。
SQL文とスラッシュスターコメントをコメントに混ぜると危険になるらしい。

  • コメントの中にSQL文を記述する
  • コメントの中に多重コメント
  • --コメント
Sample
■ コメントの中にSQL文は問題ない
SELECT ID    , Name FROM T_ほげ
SELECT ID -- , Name FROM T_ほげ(SQL文中にある --コメント付きのものも大丈夫)
/*/*/*/*/*/*/*/*/*/*多重コメントは大丈夫!*/*/*/*/*/*/*/*/*/*/

追伸 2018年10月11日

SQLServer2017になってエラーにならず生成できるようになってた:relaxed:

Sample.sql
SELECT @@VERSION
Log
Microsoft SQL Server 2017 (RTM-GDR) (KB4293803) - 14.0.2002.14 (X64)
Jul 21 2018 07:47:45
Copyright (C) 2017 Microsoft Corporation  Developer Edition (64-bit) on Windows 10 Home 10.0 <X64> (Build 17763: ) 

参考

  1. -- (コメント) (Transact-SQL)
  2. スラッシュ スター コメント (TRANSACT-SQL)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0