Я использую SQL Server Management Studio 2008 с серверной частью SQL Server 2005.SSMS только что показал поведение, которого я никогда не видел прежде.Я не знаю, является ли это чем-то новым в SSMS 2008 или просто функцией чего-то другого.
По сути, что произошло, когда я добавил несколько новых столбцов в существующую таблицу.После добавления этих столбцов я выполнил «Сценарий таблицы как ... СОЗДАТЬ» в IDE на таблице.Я ожидал получить только один оператор CREATE TABLE со всеми строками, как видимыми, так и новыми.Однако сгенерированный код представлял собой оператор CREATE для исходного определения таблицы, а также отдельные операторы ALTER TABLE T ADD [Column]...
для каждого из новых столбцов.
Это не проблема (и фактически может быть полезно източка зрения управления недавними изменениями ... вроде), но такого поведения я никогда не видел.
Я думал, что это может быть связано с длиной строки, но длина входит в числоОграничение в 8000 байт до разбиения страницы таблицы (простите мою терминологию ... Я разработчик, а не администратор баз данных).Конечно, это не маленькая таблица (теперь 127 столбцов с дополнениями и длина строки чуть более 7000 байт).
Что я вижу?Это функция / функция SSMS или самого SQL Server?Является ли это побочным эффектом определения большой таблицы?
Следующий пример не повторяет поведение, но иллюстрирует (упрощенно) то, что я вижу:
CREATE TABLE dbo.Table_1
(
ID int NOT NULL,
title nvarchar(50) NOT NULL
)
Затем,
ALTER TABLE dbo.Table_1 ADD
[description] [varchar](50) NULL,
[numthing] [nchar](10) NULL
Я ожидал, что это сгенерировано:
CREATE TABLE [dbo].[Table_1](
[ID] [int] NOT NULL,
[title] [nvarchar](50) NOT NULL,
[description] [varchar](50) NULL,
[numthing] [nchar](10) NULL,
Однако, это сгенерировано:
CREATE TABLE [dbo].[Table_1](
[ID] [int] NOT NULL,
[title] [nvarchar](50) NOT NULL)
ALTER TABLE [dbo].[Table_1] ADD [description] [varchar](50) NULL
ALTER TABLE [dbo].[Table_1] ADD [numthing] [nchar](10) NULL