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)