gpt4 book ai didi

sql - SQL Server 2008 上缺少结束注释标记 "*/"错误,而不是 2005

转载 作者:行者123 更新时间:2023-12-04 23:46:15 25 4
gpt4 key购买 nike

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

Missing end comment mark '*/'.



这是脚本
/********************************************************************************************************
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
)
*/

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

Msg 113, Level 15, State 1, Server UBHNT126, Line 4
Missing end comment mark '*/'.

Msg 102, Level 15, State 1, Server UBHNT126, Line 24
Incorrect syntax near '*'.



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

这不会发生在 2005 年,只有 2008 年。我不太担心这个特定情况,因为我可以删除评论,但我们正在将整个系统移植到 2008 年,我想有一个修复对于可能再次发生这种情况的其他情况。

另外 - 这仅在我调用服务器上的脚本时发生(从作业中的 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"

最佳答案

在 2000 版的 OSQL 中,ED 曾经是一个命令,在某些情况下,系统会忽略命令前的前导空格 - 因此请尝试确保第 4 行的第一个非空格字符不是 ED,看看是否可以解决它

对于 20052008 ,文档说:

The !! and ED commands are no longer supported by osql.



但是,即使未处理这些命令,也有可能仍然可以识别它们,并且行为的差异纯粹在于当命令前面有前导空格时是否可以识别命令。显然,2008 年是这样,但 2005 年不是。

关于sql - SQL Server 2008 上缺少结束注释标记 "*/"错误,而不是 2005,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15810403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com