3

SQL Server 2012 を使用して顧客サイトにインストール中にエラーが発生しました。SQLExpress 2012 でローカルに構文エラーを再現できました。同じ DDL スクリプトは 2008 R2 で正常に実行されますが、「'44445' 付近の構文が正しくありません」で失敗します。

実行中のSQLを確認すると、「44445」というテキストがコメントアウトされています。繰り返しますが、この SQL は 2008 R2 で機能します。投稿された最後の行は構文違反者です。この例のほとんどと同様に、コメント アウトされていることに注意してください。

[snipped]    
IF NOT EXISTS (SELECT * FROM ::fn_listextendedproperty(N'Updatable' , N'USER',N'dbo', N'TABLE',N'PublishLog', NULL,NULL))
EXEC dbo.sp_addextendedproperty @name=N'Updatable', @value=N'True' , @level0type=N'USER',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'PublishLog'
GO

--SET ANSI_NULLS ON
--GO
--SET QUOTED_IDENTIFIER ON
--GO
--IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MetaData]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
--BEGIN
--CREATE TABLE [dbo].[MetaData](
--  [ID] [int] IDENTITY(1,1) NOT NULL,
--  [DataName] [nvarchar](255) NULL,
--  [DataDescription] [nvarchar](255) NULL,
-- CONSTRAINT [MetaData_PK] PRIMARY KEY NONCLUSTERED 
--(
--  [ID] ASC
--) ON [PRIMARY]
--) ON [PRIMARY]
--END
--GO

--SET ANSI_NULLS ON
--GO

--SET QUOTED_IDENTIFIER OFF
--GO

--IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[T_MetaData_DTrig]') AND OBJECTPROPERTY(id, N'IsTrigger') = 1)
--EXEC dbo.sp_executesql @statement = N'CREATE TRIGGER [dbo].[T_MetaData_DTrig] ON [dbo].[MetaData] FOR DELETE AS
--SET NOCOUNT ON
--/* * PREVENT DELETES IF DEPENDENT RECORDS IN ''DocumentsData'' */
--IF (SELECT COUNT(*) FROM deleted, DocumentsData WHERE (deleted.ID = DocumentsData.MetaTagsID)) > 0
--    BEGIN
--        RAISERROR 44445 ''The record can''''t be deleted or changed. Since related records exist in table ''''DocumentsData'''', referential integrity rules would be violated.''
--        ROLLBACK TRANSACTION
--    END

[snipped]
4

2 に答える 2

1

raise error 構文が変更されたようです 2008 R2 には raiseerror(id, msg) があります -ここを参照してください 2012 年の場合は raiseerror(msg, id) -ここを参照してください

したがってRAISERROR(''test'',44445, 1)、上記の例で使用すると機能します

編集 - 確認したところRAISERROR(''test'',44445, 1)、2008 R2 でも動作します

于 2013-09-27T21:37:48.143 に答える