2017-09-21 4 views
0

私は一般的にDNNモジュール開発とWeb開発に慣れています。私はモジュールのインストール中に "ALTER TABLE"の近くで構文エラーが発生し続ける。私はChris Hammondのガイドに記載されている手順を使用しました。 DNN GuideDNN SQLデータプロバイダ構文の問題

は、ここで私は、問題はあなたがcreate table文の中にネストされたAlter文を持っているということだと思います私のコード

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'{databaseOwner}[{objectQualifier}name_table]') and OBJECTPROPERTY(id, N'IsTable') = 1) 
BEGIN 
CREATE TABLE {databaseOwner}[{objectQualifier}name_table](
    [file_name] [nchar](50) NOT NULL, 
    [guid_key] [uniqueidentifier] NOT NULL, 

ALTER TABLE {databaseOwner}[{objectQualifier}name_table] ADD CONSTRAINT [PK_{databaseOwner}{objectQualifier}name_table] PRIMARY KEY CLUSTERED ([guid_key]) 

END 
GO 
+0

[スクリーンショット](http://www.dnnsoftware.com/Portals/0/SiteFiles/Training/Mod-Dev-Blog-Seriesを詳しく見てみましょう/08/SQL-DataProvider-Install-Script.jpg)DNNガイドでは、createテーブルの終わりが '、'で終わらないことがわかります。 '' 'で終わります。 – xQbert

+0

ありがとうございました!ご迷惑おかけして申し訳ありません! –

答えて

1

です。これは、create tableの中にある制約のようなものでなければなりません。

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'{databaseOwner}[{objectQualifier}name_table]') AND type in (N'U')) 
BEGIN 
CREATE TABLE {databaseOwner}[{objectQualifier}name_table](
    [file_name] [nchar](50) NOT NULL, 
    [guid_key] [uniqueidentifier] NOT NULL, 
CONSTRAINT [PK_{objectQualifier}name_table] PRIMARY KEY CLUSTERED ([guid_key]) 
) 
END 
GO 

または別の

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'{databaseOwner}[{objectQualifier}name_table]') AND type in (N'U')) 
BEGIN 
CREATE TABLE {databaseOwner}[{objectQualifier}name_table](
    [file_name] [nchar](50) NOT NULL, 
    [guid_key] [uniqueidentifier] NOT NULL 
) 
END 
GO 

ALTER TABLE {databaseOwner}[{objectQualifier}name_table] ADD CONSTRAINT [PK_{databaseOwner}{objectQualifier}name_table] PRIMARY KEY CLUSTERED ([guid_key]) 
GO