SQL Server 2008而不是2005缺少结尾注释标记“ * /”错误

Dan*_*ett 3 sql sql-server-2008

在SQL Server 2005上运行没有问题的脚本现在在SQL Server 2008上引发错误:

缺少结尾注释标记“ * /”。

这是剧本

/********************************************************************************************************
Script: ED demographic update_new.sql
Author: ADR
Purpose: Uses tbl_patient_history in PHD to update patient demographics at time of attendance. Supersedes
         ED demographic update_old.sql, which relied on the data warehouse.
*********************************************************************************************************/

USE DB1

EXEC pr_printdate 'ED Demographic Update Start'

/*
DROP TABLE temp_ae_demo_update

CREATE TABLE [dbo].[temp_ae_demo_update](
    [aed_attendance_id] [varchar](20) NOT NULL,
    [ae_arr_date] [datetime] NOT NULL,
    [patient_id] [varchar](20) NULL,
    [patient_trust_number] [varchar](20) NULL,
    [birth_date] [datetime] NULL,
    [marital_status] [varchar](5) NULL,
    [ethnic_code] [varchar](5) NULL,
    [sex] int NULL,
    [nhs_number] [varchar](20) NULL,
    [patient_forename] [varchar](100) NULL,
    [patient_surname] [varchar](100) NULL,
    [patient_add_1] [varchar](100) NULL,
    [patient_add_2] [varchar](100) NULL,
    [patient_add_3] [varchar](100) NULL,
    [patient_add_4] [varchar](100) NULL,
    [patient_postcode] [varchar](20) NULL,
    [regd_gp_code] [varchar](10) NULL,
    [regd_practice_code] [varchar](10) NULL,
    [gp_postcode] [varchar](10) NULL,
    [demo_updated] [int] NOT NULL
)
*/
Run Code Online (Sandbox Code Playgroud)

等等等等...这是脚本中包含注释的唯一部分,并且此部分中发生错误。报告的错误:

消息113,级别15,状态1,服务器UBHNT126,行4
缺少结尾注释标记'* /'。

消息102,级别15,状态1,服务器UBHNT126,行24
“ *”附近的语法不正确。

go标头块中没有语句-在这种情况下,我通常会寻找“ GO”以外的其他语句导致相同的错误?

在2005年(仅在2008年)上不会发生这种情况。我不太担心这个特殊情况,因为我可以删除注释,但是我们将整个系统移植到2008年,我想修复一下在其他情况下可能会再次发生。

还-仅当我在服务器上(从作业中的cmdexec)调用脚本时,才会发生这种情况,而不是如果我在ssms中运行脚本(无论是2008还是2005)

存储的proc create语句:

    USE [PHD]
GO

/****** Object:  StoredProcedure [dbo].[pr_printdate]    Script Date: 04/04/2013 13:24:14 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER OFF
GO



ALTER procedure [dbo].[pr_printdate] @printext char(30) as
set nocount on
select '**** ' + rtrim(@printext) + ' **** timestamp: ' + convert(char(20), getdate())
set nocount off

GO
Run Code Online (Sandbox Code Playgroud)

命令调用脚本:

osql /e /n /S SERVER /U xxxxx /P xxxxx /d PHD /i "\\SERVER\phdadmin\SQL\AE Monthly\ED_Demographic_update_new.sql" /o "\\SERVER\PHDAdmin\LOG\ED_Demographic_update_new.log"
Run Code Online (Sandbox Code Playgroud)

小智 5

我在SQL 2012中遇到了类似的问题。在结束注释* /之前有GO语句。在* /之前删除注释中的GO语句即可解决问题。