{"id":4046,"date":"2010-01-26T20:09:01","date_gmt":"2010-01-26T19:09:01","guid":{"rendered":"http:\/\/www.glorf.it\/blog\/?p=4046"},"modified":"2010-01-27T08:48:26","modified_gmt":"2010-01-27T07:48:26","slug":"bug-syntax-fehler-im-kommentar","status":"publish","type":"post","link":"http:\/\/www.glorf.it\/blog\/2010\/01\/26\/sql-talk\/sql-server\/bug-syntax-fehler-im-kommentar","title":{"rendered":"Bug: Syntax-Fehler im Kommentar"},"content":{"rendered":"<p>Mein Kollege Diethard machte mich auf einen Fehler im Microsoft SQL Server 2005\/2008 aufmerksam, der bei Microsoft schon bekannt ist: Wenn man (*) als erstes nach in einem Zeilenkommentar schreibt, dann kommt ein Syntaxfehler. <\/p>\n<p>Hier ein Beispiel:<\/p>\n<pre class=\"code\">--(*)<\/pre>\n<p>Weil das so kurz ist, hier ein h&#252;bsches Repro von Diethard:<\/p>\n<pre class=\"code\">RAISERROR('--(*)',0,0);\r\nGO\r\n--(*)\r\nGO\r\nRAISERROR('-- (*)',0,0);\r\nGO\r\n-- (*)\r\nGO\r\n\/* Results\r\n--(*)\r\nMsg 102, Level 15, State 1, Line 1\r\nFalsche Syntax in der N&#228;he von '--(*'.\r\n-- (*)\r\n*\/\r\nGO\r\nRAISERROR('COUNT(1) --(*)',0,0);\r\nGO\r\nSELECT COUNT(1) --(*)\r\n\tFROM sys.sysobjects\r\nGO\r\nRAISERROR('COUNT(1) -- (*)',0,0);\r\nGO\r\nSELECT COUNT(1) -- (*)\r\n\tFROM sys.sysobjects\r\nGO\r\n\/* Results\r\nCOUNT(1) --(*)\r\nMsg 102, Level 15, State 1, Line 1\r\nFalsche Syntax in der N&#228;he von '--(*'.\r\nCOUNT(1) -- (*)\r\n\r\n-----------\r\n1946\r\n*\/<\/pre>\n<p>Weil Microsoft dem so wenig Bedeutung beimisst, wird es vermutlich erst am St.Nimmerleinstag beseitigt, bemerkte ich ihm gegen&#252;ber. Daraufhin erstellte Diethard einen Algorithmus, ob der Tag schon gekommen ist:<\/p>\n<pre class=\"code\">DECLARE @AfterStNimmerlein bit;\r\nBEGIN TRY\r\n  EXEC('--(*)'); SET @AfterStNimmerlein = 1; \r\nEND TRY BEGIN CATCH\r\n  IF ERROR_NUMBER() = 102 SET @AfterStNimmerlein = 0; \r\nEND CATCH; \r\nSELECT AfterStNimmerlein=@AfterStNimmerlein;<\/pre>\n<p>\ud83d\ude09<\/p>\n<p>Aber was uns wirklich interessieren w&#252;rde: Wie kann es zu einem Syntaxfehler in einem Kommentar kommen?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mein Kollege Diethard machte mich auf einen Fehler im Microsoft SQL Server 2005\/2008 aufmerksam, der bei Microsoft schon bekannt ist: Wenn man (*) als erstes nach in einem Zeilenkommentar schreibt, dann kommt ein Syntaxfehler. Hier ein Beispiel: &#8211;(*) Weil das so kurz ist, hier ein h&#252;bsches Repro von Diethard: RAISERROR(&#x0027;&#8211;(*)&#x0027;,0,0); GO &#8211;(*) GO RAISERROR(&#x0027;&#8211; (*)&#x0027;,0,0); [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[16],"tags":[48,658],"_links":{"self":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/4046"}],"collection":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/comments?post=4046"}],"version-history":[{"count":17,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/4046\/revisions"}],"predecessor-version":[{"id":4086,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/4046\/revisions\/4086"}],"wp:attachment":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/media?parent=4046"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/categories?post=4046"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/tags?post=4046"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}