我希望这不是脱离主题,但我有一个真正的问题,我oculd使用一些建议。Sql Server问题
我有一个应用程序在启动时升级自己的Sql Server数据库(从以前的版本)。通常这很好,但是新版本必须改变几个nvarchar列的宽度。
对于表中有大量数据的实时数据库,这需要很长时间。似乎有两个问题 - 一个是Sql Server似乎正在处理数据(可能重写它),尽管实际上并没有改变,另一个是事务日志吞噬了大量的空间。
有什么办法可以规避这个问题吗?它只是一个简单的Alter Table ... Alter Column命令,将nvarchar(x)更改为nvarchar(x + n),没有什么奇怪的,但是它在该领域造成了一个'问题'并引起很大的不满。如果有一种方法可以在不处理现有数据的情况下更改列宽,并以某种方式抑制事务日志内容,那将很方便。
它似乎没有与Oracle数据库的问题。
一个例子命令:
IF EXISTS (SELECT 1 FROM information_schema.COLUMNS WHERE table_name='ResourceBookings' AND column_name = ('ResourceBookerKey1') AND character_maximum_length <= 50)
ALTER TABLE [ResourceBookings] ALTER COLUMN [ResourceBookerKey1] NVARCHAR(80) NULL
正如你可以看到,该表只改变,如果列的宽度需要增加
TIA
我知道你所描述的代码,但它可能仍然是有用的张贴实际的代码。 –
听起来你有一些页面拆分正在进行,但我不认为这将是必要的VAR。 – Paparazzi
这个字段是否有索引? – valex