0

我正在使用 SQL Server 2000,并尝试将字段的数据类型从 varchar 更改为 nvarchar,以便它可以处理国际字符。但是,该表中已经有很多数据,当我尝试保存更改时,出现以下错误:

无法修改表。ODBC 错误:[Microsoft][ODBC SQL Server Driver][SQL Server]数据库“AppTest_Apps”的日志文件已满。备份数据库的事务日志以释放一些日志空间。

这是一次性更新——我该如何解决这个错误?

4

3 回答 3

1

您可能需要让日志文件变大(请参阅日志文件上的选项),或者备份并缩小它。 http://support.microsoft.com/kb/272318

于 2009-11-06T05:07:50.690 回答
1

尝试运行每 n 条记录提交一次的事务循环。因此可以将当前表从 X 重命名为 Y。您可以使用此命令 sp_RENAME '[OldTableName]' , '[NewTableName]' 来执行此操作。

使用新的数据类型列集重新创建 X,然后从 Y 批量插入回 X 提交每个循环。通过使用事务批处理插入,您可以通过提交每 n 条插入的记录来控制日志增长。

伪代码

Get @max_id from Y int @max_id 
Get min_id from Y into @current_value
Loop until @current_value <= @max_id

BEGIN TRAN
INSERT INTO Y
FROM X
WHERE seq_id >= @current_value and less than @batchsize + @current_value
COMMIT TRAN
于 2009-11-06T05:43:22.957 回答
0

乍一看,我看到了两种方法:

  1. 只需备份事务日志。类似于 BACKUP LOG dbanme TO DISK='c:\dblog.bak'
  2. 使您的数据库进入简单恢复模式(例如,在企业管理器中:数据库-> 选项-> 恢复模式,选择简单)
于 2009-11-06T05:04:40.510 回答