4

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
)
*/

etc etc... これはコメントを含むスクリプトの唯一の部分であり、このセクションでエラーが発生します。報告されたエラー:

メッセージ 113、レベル 15、状態 1、サーバー UBHNT126、行 4
終了コメント マーク '*/' がありません。

メッセージ 102、レベル 15、状態 1、サーバー UBHNT126、行 24
'*' 付近の構文が正しくありません。

ヘッダー ブロックにステートメントがありませんgo。この状況で通常検索するのは、「GO」以外のステートメントで同じエラーが発生するかどうかです。

これは 2005 年には発生せず、2008 年にのみ発生します。コメントを削除するだけでよいので、この特定のケースについてはあまり心配していませんが、システム全体を 2008 年に移植しているので、修正したいと思います。これが再発する可能性がある他のケースに備えてください。

また、これは、ssmsでスクリプトを実行した場合(2008年か2005年か)ではなく、サーバー上で(ジョブのcmdexecから)スクリプトを呼び出した場合にのみ発生します

ストアド プロシージャの作成ステートメント:

    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"
4

3 に答える 3

7

SQL 2012 で同様の問題が発生しました。終了コメントの前に GO ステートメントがありました */. */ の前のコメント内の GO ステートメントを削除すると、問題が解決しました。

于 2014-07-10T06:51:21.340 に答える
0

私の野生の推測では、あなたの問題はpr_printdateプロシージャ/関数にあります。

そのコンテンツも確認および/または投稿することをお勧めします;)

于 2013-04-04T12:16:05.587 に答える