我们正在研究用新的硬件和更新的版本replaceWindows2003(32Bit)上现有的SQL2000服务器。
我们正在研究一个至less需要SQL2005的应用程序,但也可以在SQL2008上运行。 我们的其他数据库也应该运行。
有没有人有任何经验好或不好的版本?
硬件,我们可能会得到64位的能力,所以运行SQL2008 64位也是一个选项。
谢谢
他们都是坚如磐石的。 如果你有select的话,直接去SQL Server 2008–每个版本都有改进,即使你是在安装应用程序之前等待一个服务包发布的人,SQL Server 2008 SP1已经出来了一个多月了。
下面是SQL Server 2008中新增function的一个目录。每个版本中固有的(但很难find的)是对存储引擎的改进,使SQL Server能够更好地和可靠地执行。
您应该毫无困难地将数据库从SQL2000转移到2005或2008年,但是您希望在实际环境中对这些应用程序进行适当的testing(以防万一)。
我还没有SQL2008的经验,但是我们已经从2000年到2005年移动了很多数据库,在旧的应用程序中只有一个小问题。 这个问题是由于在该项目中如何定义/调用某些观点。 如果一个视图定义了像“SELECT [somefield] = NULL,[和],[],[rest] FROM [sometable]”的字段,那么运行“SELECT * FROM [theview] WHERE [somefield] ='value' “在SQL2005中有时(但不是在所有情况下)会导致一个cast-of-varchar-to-int错误,而SQL2000中从来没有这样做。 简单的解决scheme是将视图更改为[somefield] = CAST(NULL AS NVARCHAR)。 您可能不会遇到这个特定的问题,而且我们也没有其他的问题,但是这certificate了您需要在开发/testing环境中进行完整的应用程序testing,然后才能进行实时服务 。
我们已经将32位SQL2005中的数据库移到了64位SQL2005服务器上,而我们也没有任何问题,我预计从64位到32位也是可以的。
记住,一旦移动到SQL2005将数据库移回到SQL2000是一个相当大的痛苦,所以要工作我的要点, 确保您在移动自己的应用程序之前彻底testing 。 还要确保你从任何外部供应商那里得到清楚的书面文字,他们的数据库/代码已经过你select的SQL Server版本的testing。
编辑:另一个相关点:我们这样移动的应用程序不使用额外的服务,如全文索引,报告服务等 – 只是主要的SQL数据库服务 – 所以我不能评论应用程序使用这些额外function的平滑迁移与否。
与您的应用程序供应商联系 如果他们不能告诉你,我会做SQL Server 2008的试点testing,看看它是否工作。 赔率是好的,它会的。 (对于你的供应商说不清楚他们的应用程序将在哪个平台上工作。
SQL Server 2008还支持一些数据库用户可能会喜欢的更新的SQLfunction。 如果只是生产,也许不是,但是如果你有开发人员使用查询工具连接,他们可能会喜欢这些附加function。
他们可能会认为你是一个系统pipe理员,给你cookies或拥抱,或者第三个显示器或者同样棒的东西。
至less,如果你是我的系统pipe理员,我会的。
你应该运行SQL 2008 64位。 如果应用程序支持2008年,你应该在最新版本。 请注意,你不能购买2005年,你会买2008年和降级或购买2008年和使用它。
我相信2k5超过2k5的最大优势是数据压缩 。 你的页面压缩比意味着更less的I / O,更小的数据库pipe理,更小的备份等等。
我会说,使用SQL Server 2008,但要小心64位版本。 我一直在使用64位版本的SQL Server 2008半年,我认为它比SQL 2005有一些很大的改进,但是你应该知道Excel / Access没有64位的Jet驱动程序。 如果您需要与Excel进行一些整合,那么您将陷入SSIS的32位模式。 (你仍然可以使用64位SQL 2008,但是你不能对OPENQUERY进行Excel / Access。
如果您还需要访问Sybase,那么您必须打开您的钱包并为OpenLinc的64位驱动程序付出很多。 请记住,您需要OLEDB和ODBC驱动程序,它仅限于x个并发连接,并且仅限于y个CPU核心。 比方说,你有(如我的情况)一台服务器与4个四核处理器,并不需要更多的5个连接,就像$ 20 000或类似的东西。 然后你需要一个OpenLinc的testing服务器!
/HåkanWinther
我喜欢SQL 2008中的一个特性就像有人说数据压缩,但我最喜欢的特性是过滤索引。
使用此function,您可以为特定查询的less量数据子集构build覆盖索引。 这将为使用过滤索引的查询提高性能。
可以说你有这样的桌子
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将仅使用索引查找来解决查询,因为查询所需的所有数据都存在于索引中。 而且furhtermore,索引只包含Status = 10的logging,这会影响INSERT / UPDATE / DELETE的性能。
/HåkanWinther
无论你决定什么,当你可以购买SQL Server 2008许可证和降级以运行SQL Server 2005时,不要购买SQL Server 2005许可证。这种方式如果你决定运行2008年,你已经有了许可证。 我强烈build议运行SQL Server 2008
整体2008年是一个很棒的产品,但有一些从2000年 – > 2005年停止的function,也从2005年 – > 2008年停止function(我只允许1个链接,因为代表,但search“SQL Server 2008中停用的数据库引擎function“在联机丛书中)。 你应该留意这些,因为他们可能是现有的应用程序/数据库的陷阱。 处理date时间的方法也有一些精度问题,您可能会遇到(2008年有更高的精度,并可能导致一些查询停止工作,如果他们假设.000几分之一秒)。