Мне нужно увеличить размер поля в таблице от VARCHAR (100) до VARCHAR (255). По разным причинам это приводит к тому, что таблица удаляется и воссоздается (наряду с отношениями, FK и т. Д.). Это приемлемо, однако, я выполняю это изменение в SQL2008R2 (экспресс) (или 2008 Express, тот же результат), но сценарий не работает в SQL2000 (и должен), , несмотря на то, что я устанавливаю совместимость скриптов sql2000 ,Почему сценарий управления SQL Server игнорирует версию?
После выполнения выше, я иду к столу, 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.
Вы перезапустили SSMS? –
Сообщить о проблеме на сайте Microsoft Connect. – IsmailS
@ Denis Да, я перезапустил всю коробку, чтобы быть в безопасности, включая SQL Service, конечно, потому что она локальная. –