3

Linux サーバーの PHP で MSSQL ダンプを復元しようとしているときに問題が発生しました。ファイルを読み込んで、そのファイルをクエリとして渡しています。

これは機能します:

CREATE TABLE [dbo].[recipes](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Title] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [Desc] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [Directions] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [CompAuthor] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [CompName] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [Servings] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
 CONSTRAINT [PK_recipes] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON)
)

しかし、GOのような単語を追加するとすぐに

WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,
 ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON)
    )

GO

次のようなエラーがスローされます

Warning: mssql_query(): message: Incorrect syntax near 'GO'

私の質問は、このエラーの原因とその修正方法です。

4

2 に答える 2

6

GOTransact-SQL キーワードではありません。これは、Management Studio や SQLCMD などのツールのバッチ区切りです。

答えはGO、アプリケーションから送信するバッチにコマンドを挿入しないことです。それらを別々のバッチとして送信するだけです (必要な場合)。

ソース: GO (Transact-SQL)

于 2012-06-05T20:47:02.697 に答える