Назад | Перейти на главную страницу

SQL 2005 и SQL 2008

Мы изучаем возможность замены существующего сервера SQL2000 на Windows2003 (32-битный) на новое оборудование и более новую версию.

Мы рассматриваем приложение, для которого требуется как минимум SQL2005, но которое также будет работать на SQL2008. Другие наши БД тоже должны работать.

Были ли у кого-нибудь хорошие или плохие впечатления от любой версии?

Аппаратное обеспечение, которое мы, вероятно, получим, будет 64-битным, поэтому можно также использовать 64-битный SQL2008.

Спасибо

Они оба крепкие как скала. Если у вас есть выбор, переходите сразу к SQL Server 2008 - в каждом выпуске есть улучшения, и даже если вы относитесь к тому типу людей, которые любят ждать выпуска пакета обновления перед установкой приложения, SQL Server 2008 SP1 отсутствует уже больше месяца.

Вот - это каталог новых функций в SQL Server 2008. Также в каждый выпуск (но их труднее обнаружить) есть улучшения механизма хранения, которые позволяют SQL Server работать более оптимально и надежно.

Вы должен у вас нет проблем с переносом баз данных из SQL2000 в 2005 или 2008, но вы захотите провести надлежащий тест приложений, прежде чем делать это в реальной среде (на всякий случай).

У меня еще нет опыта работы с SQL2008, но мы переместили много БД с 2000 на 2005 год, имея только одну небольшую проблему с некоторым кодом в старом приложении. Эта проблема была связана с тем, как в этом проекте были определены / вызваны некоторые представления. Если представление определяет поле типа «SELECT [somefield] = NULL, [and], [the], [rest] FROM [sometable]», тогда приложение, выполняющее «SELECT * FROM [theview] WHERE [somefield] = 'value» "иногда (но не во всех случаях) приводило к ошибке преобразования типа varchar в int в SQL2005, чего никогда не происходило в SQL2000. Простым решением было изменить представление на [somefield] = CAST (NULL AS NVARCHAR). Вы, вероятно, не столкнетесь с этой конкретной проблемой, а других у нас не было, но это доказывает, что тебе нужно сделать полный тестирование приложения в среде разработки / тестирования перед тем, как перейти к живому сервису.

Мы переместили БД с 32-битных серверов SQL2005 на 64-битные серверы SQL2005 без каких-либо проблем, и я ожидаю, что переход с 64-битной версии на 32-ю будет работать так же.

Однако обратите внимание, что после перехода на SQL2005 перемещение базы данных обратно на SQL2000 представляет собой значительную боль, поэтому моя основная мысль убедитесь, что вы тщательно протестируете, прежде чем перемещать свои собственные приложения. Также убедитесь, что вы получили четкое письменное сообщение от всех вовлеченных внешних поставщиков, что их БД / код были протестированы на соответствие выбранной вами версии SQL Server.

Изменить: еще один важный момент: наши приложения, которые мы переместили таким образом, не используют дополнительные службы, такие как полнотекстовое индексирование, службы отчетности и т. Д. - только основная служба базы данных SQL, поэтому я не могу комментировать, являются ли приложения которые используют такие дополнительные функции, мигрируют плавно или нет.

Поговорите с поставщиком вашего приложения. Если они не могут вам сказать, я бы провел пилотный тест на SQL Server 2008 и посмотрел, работает ли он. Шансы хорошие, что так и будет. (И скажите своему поставщику гадости за то, что он не знает, на каких платформах будет работать его приложение.)

SQL Server 2008 также поддерживает новые функции SQL, которые могут быть оценены некоторыми пользователями ваших баз данных. Если это только производство, возможно, нет, но если у вас есть разработчики, подключающиеся с помощью инструмента запросов, они могут оценить эти дополнительные функции.

И они могут подумать, что вы молодец, как системный администратор, и дать вам куки, или обнять, или третий монитор, или что-то не менее классное.

По крайней мере, если бы ты был мой сисадмин, я бы.

Вы должны запустить sql 2008 64 бит. Если приложение поддерживает версию 2008, у вас должна быть последняя версия. Обратите внимание, что вы не можете купить 2005 год, вы либо купите 2008 год и понизите его, либо купите 2008 год и будете использовать его.

Я считаю, что самым большим преимуществом 2k8 перед 2k5 является Сжатие данных. У вас есть сжатие страниц, чем означает (гораздо меньше) ввод-вывод, меньшие базы данных для управления, меньшие резервные копии и так далее и так далее.

Я бы сказал, используйте SQL Server 2008, но остерегайтесь 64-битной версии. Я использую 64-битную версию SQL Server 2008 в течение полугода, и я думаю, что он имеет некоторые большие улучшения по сравнению с SQL 2005, но вы должны знать, что нет 64-битного драйвера Jet для Excel / Access. Если вам нужно выполнить некоторую интеграцию с Excel, вы застряли в SSIS в 32-битном режиме. (вы все еще можете использовать 64-битный SQL 2008, но вы не можете выполнять OPENQUERY в Excel / Access.

Если вам также нужен доступ к Sybase, вам нужно открыть свой кошелек и много заплатить за 64-битный драйвер от OpenLinc. Помните, что вам нужны OLEDB и драйвер ODBC, и он ограничен x одновременными подключениями и ограничен y ядрами ЦП. Допустим, у вас есть (как в моем случае) сервер с 4 процессорами Quad и вам нужно не более 5 подключений, это примерно 20 000 долларов или что-то в этом роде. И тогда вам понадобится тестовый сервер с OpenLinc!

/ Хокан Винтер

Одна из функций, которые мне нравятся в SQL 2008, как некоторые говорят, Datacompression, но больше всего мне нравится фильтруемый индекс.

С помощью этой функции вы можете строить покрывающие индексы на небольшом подмножестве данных для специализированных запросов. Это значительно повысит производительность запросов, которые будут использовать отфильтрованный индекс.

Допустим, у вас есть такая таблица

CREATE TABLE [DWH].[contract](
    [ID] int IDENTITY(100000000,1) NOT NULL,
    [reportDate] [datetime] NOT NULL,
    [contractnumber] [varchar](15) NOT NULL,
    [_instrument_ID] [int] NULL,
    [_package_ID] [int] NULL,
    [_portfolio_ID] [int] NULL,
    [_counterpart_ID] [int] NULL,
    [ValueX] [datetime] NULL,
    [ValueY] [datetime] NULL,
    [ValueZ] [varchar](20) NULL,
    [Status] int not null,
 CONSTRAINT [PK_contract] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

CREATE NONCLUSTERED INDEX [IX_contract_1] ON [DWH].[contract] 
(
    [reportDate] ASC
)
INCLUDE ( [ValueX],[ValueY],[ValueZ]
) 
WHERE  STATUS=10
GO

Когда вы используете следующий запрос, движку не нужно выполнять поиск по индексу и поиск по кластеризованному индексу:

SELECT ValueX, ValueY, ValueZ FROM dwh.contract WHERE reportdate=GETDATE() AND Status=10

SQL решит запрос только с поиском по индексу, поскольку все данные, необходимые для запроса, существуют в индексе. Более того, индекс содержит только записи со статусом Status = 10, это повлияет на производительность INSERT / UPDATE / DELETE.

/ Хокан Винтер

Что бы вы ни выбрали, не покупайте лицензию SQL Server 2005, если вы можете купить лицензию SQL Server 2008 и более раннюю версию для запуска SQL Server 2005. Таким образом, если вы когда-нибудь решите запустить 2008, у вас уже есть лицензия. Я настоятельно рекомендую запустить SQL Server 2008

В целом 2008 год - отличный продукт, но есть снятые с производства функции с 2000 по 2005 год, а также с прекращенными функциями с 2005 по 2008 год (мне разрешена только одна ссылка из-за репутации, но ищите "Прекращенные функции ядра СУБД в SQL Server 2008" в электронной документации). Вы должны остерегаться их, поскольку они могут быть ошибкой для ваших существующих приложений / баз данных. Есть также некоторые проблемы с точностью обработки даты, с которыми вы можете столкнуться (2008 имеет более высокую точность, и это может привести к тому, что некоторые запросы могут перестать работать, если они предполагают .000 за доли секунды).