SQL Server满日志问题——如何更新数据库?
我正在使用 SQL Server 2000,并尝试将字段的数据类型从 varchar 更改为 nvarchar,以便它可以处理国际字符。但是,该表中已经有很多数据,当我尝试保存更改时,出现以下错误:
无法修改表。 ODBC 错误:[Microsoft][ODBC SQL Server 驱动程序][SQL Server]数据库“AppTest_Apps”的日志文件已满。备份数据库的事务日志以释放一些日志空间。
这是一次性更新——如何解决该错误?
I am working with SQL Server 2000, and trying to change the data type of a field from varchar to nvarchar, so that it can handle international characters. However, there is already a lot of data in that table, and when I try to save the change, I get the following error:
Unable to modify table.
ODBC error: [Microsoft][ODBC SQL Server Driver][SQL Server]The log file for database 'AppTest_Apps' is full. Back up the transaction log for the database to free up some log space.
This is a one-time update -- how do I get around the error?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可能需要允许日志文件变大(请参阅日志文件上的选项),或者备份并缩小它。
http://support.microsoft.com/kb/272318
You may need to allow the log file to grow larger (see the options on the log file), or backup and shrink it.
http://support.microsoft.com/kb/272318
尝试运行一个事务循环来提交每 n 条记录。因此可以将当前表从 X 重命名为 Y。您可以使用此命令 sp_RENAME '[OldTableName]' , '[NewTableName]' 来执行此操作。
使用新的数据类型列集重新创建 X,然后从 Y 批量插入回 X,并提交每个循环。通过使用事务批量插入,您可以通过提交每 n 条插入的记录来控制日志增长。
伪代码
Try running a transaction loop that commits every n number of records. So could rename the current table from X to Y. You can do this with this command sp_RENAME '[OldTableName]' , '[NewTableName]'.
Recreate the X with the new datatype column set and then batch insert from Y back into X committing every loop. By inserting with transaction batch you can keep your log growth under control by committing every n number of records inserted.
Pseudo code
乍一看,我看到两种方法:
At first look, I see two ways: