And*_*w K 6 sql full-text-search transactions sql-server-2005
我正在编写一个SQL数据更新程序,将旧的text/ntext/image类型列转换为varchar/nvarchar/varbinary.当系统引导以从较旧版本更新数据库时,更新程序在事务内运行.我已经让SQL自己工作,但是一些被更改的列是全文索引的,这意味着我不能在没有先删除索引的情况下改变它们的类型,如下所示:
ALTER FULLTEXT INDEX ON Table DROP (Column)
exec dbo.ConvertDataType 'Table', 'Column', 'nvarchar(max)'
ALTER FULLTEXT INDEX ON Table ADD (Column)
问题是第一行在数据更新程序中不起作用,因为错误"ALTER FULLTEXT INDEX语句不能在用户事务中使用".有没有办法在交易中实现这一点?通过使此代码工作,或以其他方式将索引更改为新类型?
不可以.许多DDL更改在事务上下文中不起作用,因为它们无法保证回滚.只要语句只修改了一些内部数据库元数据,就有可能在事务内部支持,因为回滚是由普通数据库表更新回滚处理的.但是创建文件,打开套接字,连接到外部服务(如全文索引服务)的语句无法回滚,因此在事务中不支持它们.
| 归档时间: |
|
| 查看次数: |
4700 次 |
| 最近记录: |