Сценарий создания созданной таблицы SQL Server 2005 не работает - PullRequest
5 голосов
/ 06 января 2009

Я нахожусь в процессе создания сценариев базы данных для существующей базы данных. Я пытаюсь использовать SQL Server для создания сценариев для меня, но сгенерированные сценарии не работают. Я использую опцию «Таблица скриптов как»> «СОЗДАТЬ В»> «Новое окно редактора запросов» Затем я изменяю имена таблиц и ограничений и выполняю скрипт. Я в тупике. Кто-нибудь может увидеть проблему здесь?

Я получаю эту ошибку:

Msg 170, Level 15, State 1, Line 17
Line 17: Incorrect syntax near '('.

Сгенерированный SQL:

USE [MyDatabase]
GO
/****** Object:  Table [dbo].[MyTable2]    Script Date: 01/06/2009 14:40:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[MyTable2](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [u_id] [int] NOT NULL,
    [prog_number] [varchar](5) NOT NULL,
    [trans_id] [varchar](50) NULL,
    [code] [varchar](7) NULL,
    [user_num] [char](9) NULL,
    [is_found] [char](9) NULL,
    [status] [char](1) NULL,
    [status2] [char](1) NULL,
    [inserted_timestamp] [datetime] NULL CONSTRAINT [DF_MyTable2_inserted_timestamp]  DEFAULT (getdate()),
    [s_id] [varchar](10) NULL,
    [p_value] [char](4) NULL,
 CONSTRAINT [PK_MyTable2] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

Ответы [ 7 ]

10 голосов
/ 16 февраля 2009

У меня та же ошибка. SQL Sever Management Studio по умолчанию создает сценарии для SQL Server 2005, которые не совместимы с 2000 г.

Мое решение: в SQL Sever Management Studio выберите Инструменты >> Параметры >> Сценарии. В разделе «Общие параметры сценариев» установите «Сценарий для версии сервера» на «SQL Server 2000».

9 голосов
/ 07 января 2009

Если вашей целевой БД является SQL 2000, то она жалуется на эту строку

WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]

SQL 2000 поддерживает только

WITH FILLFACTOR = 90

Так что, возможно, есть некоторые настройки совместимости, которые вы можете использовать только для генерации синтаксиса SQL 2000

2 голосов
/ 07 января 2009

Если вы выполняете это в базе данных SQL Server 2000, я полагаю, что в ней есть код, который SQL Server 2000 не поддерживает. Я никогда не видел сценарий SQL SErver 2000, который устанавливает ограничение как часть определения таблицы.

2 голосов
/ 07 января 2009

Я получаю точно такую ​​же проблему, когда использую SQL Server Management Studio 2005 для создания сценария создания таблицы в базе данных SQL Server 2000.

1 голос
/ 06 января 2009

Я скопировал / вставил этот точный оператор SQL, и он выполнялся для меня должным образом. Единственное, о чем я могу думать, это то, что у вас есть что-то выделенное, и оно выполняет только ту его часть (которая может быть не полным утверждением).

0 голосов
/ 11 января 2011

Используя Management Studio 2008, вы можете создать сценарий, совместимый с более низкой версией SQL-сервера, например:

Щелкните правой кнопкой мыши базу данных >> Задачи >> Создать сценарии

В этом мастере вы можете получить доступ к опции «Скрипт для версии сервера». Просто выберите версию SQL Server, на которой вы хотите запустить скрипт.

0 голосов
/ 06 января 2009

За исключением оператора use [MyDatabase] (я изменил его на tempdb), этот оператор выполняется правильно, когда я запускаю его на SQL Server 2005 с использованием Microsoft SQL Server Management Studio.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...