gpt4 book ai didi

sql - 更改事务中的全文索引列

转载 作者:行者123 更新时间:2023-12-04 13:55:51 24 4
gpt4 key购买 nike

我正在编写一个 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 更改在事务上下文中不起作用,因为它们不能保证回滚。只要语句只是修改了一些内部数据库元数据,就有可能在事务内部支持,因为回滚是由普通数据库表更新回滚处理的。但是创建文件、打开套接字、连接到外部服务(如全文索引服务)的语句不能回滚,因此它们在事务内部不受支持。

关于sql - 更改事务中的全文索引列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1638414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com