在 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
)
*/
等等等等……这是脚本中唯一包含注释的部分,错误发生在本节中。报告的错误:
消息 113,级别 15,状态 1,服务器 UBHNT126,第 4 行
缺少结束注释标记“*/”。消息 102,级别 15,状态 1,服务器 UBHNT126,第 24 行
'*' 附近的语法不正确。
标题块中没有go
语句 - 在这种情况下我通常会寻找除“GO”之外的任何其他语句是否会导致相同的错误?
这不会发生在 2005 年,只有 2008 年。我不太担心这种特殊情况,因为我可以删除评论,但我们正在将整个系统移植到 2008 年,我想修复对于可能再次发生的其他情况。
ALSO - 仅当我在服务器上调用脚本(从作业中的 cmdexec)时才会发生这种情况,而不是在 ssms 中运行脚本时(无论是 2008 年还是 2005 年)
存储过程创建语句:
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
调用脚本的命令:
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"