2010-09-14 3 views
2

Мне нужно увеличить размер поля в таблице от VARCHAR (100) до VARCHAR (255). По разным причинам это приводит к тому, что таблица удаляется и воссоздается (наряду с отношениями, FK и т. Д.). Это приемлемо, однако, я выполняю это изменение в SQL2008R2 (экспресс) (или 2008 Express, тот же результат), но сценарий не работает в SQL2000 (и должен), , несмотря на то, что я устанавливаю совместимость скриптов sql2000 ,Почему сценарий управления SQL Server игнорирует версию?

Management Studio Options

После выполнения выше, я иду к столу, Design, измените (100) в (255) и нажмите кнопку Создать сценарий изменения.

Результат содержит некоторые из следующих, которые не выполнять под SQL 2000:

BEGIN TRANSACTION 
GO 
ALTER TABLE dbo.mytable 
    DROP CONSTRAINT FK_mytable_othertable 
GO 
ALTER TABLE dbo.othertable SET (LOCK_ESCALATION = TABLE) 
GO 
COMMIT 

Комплексе (LOCK_ESCALATION) не работает в SQL 2000.

Другое SQL2005/8> вещи, которые я вижу, являются:

WITH (HOLDLOCK TABLOCKX) 

и

ALTER TABLE dbo.mytable ADD CONSTRAINT 
    PK_mytable PRIMARY KEY CLUSTERED 
    (
    idmytable 
    ) WITH(STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 

GO 

Все, что «С», что не принадлежит на SQL 2000.

Почему SQL Management Studio скрипты для (в) совместимость? Что делает этот «вариант»?

EDIT: Я зарегистрировал ошибку в Microsoft Connect до тех пор, пока кто-то не докажет, что я не прав :) Вы можете найти ее here.

+0

Вы перезапустили SSMS? –

+3

Сообщить о проблеме на сайте Microsoft Connect. – IsmailS

+0

@ Denis Да, я перезапустил всю коробку, чтобы быть в безопасности, включая SQL Service, конечно, потому что она локальная. –

ответ

0

Попробуйте использовать Сгенерировать скрипты ... в контекстном меню в базе данных -> Задачи -> Сгенерировать скрипты ... и выбрать «Скрипт для версии сервера».

+0

Хотя это и создает хороший SQL-код sql (насколько я вижу), это не то же самое, что генерировать сценарий изменений. Другой скрипт - агностик базы данных, я мог бы использовать его в любой базе данных для выполнения требуемого изменения (изменить размер столбца), это нужно создать ту же таблицу (и ее данные, если хотите). –

0

Я чувствую вашу боль. Вот почему, когда мы должны генерировать скрипты для развертывания prod, лучше их сгенерировать, используя графический интерфейс, подходящий для версии. то есть: Query Analyzer для 2000, SSMS 2005, SSMS 2008. И сохраните эквивалентную промежуточную среду для проверки ваших сценариев.

Или у вас действительно гибкие Prod DBAs, которые просто читаются между строками и фиксируют ваш код для ya. :)

+0

Да, это то, что мы делаем. У нас есть SQL2000, который обычно безопасен для «других». :) –

Смежные вопросы