Ian*_*ose 1 sql-server transactions
例如,如果我删除一个表然后回滚事务是重新创建的表吗?
可以在事务中进行的架构更改有哪些限制?
如果以上内容取决于Sql Server的版本,请说明......
背景
我正在考虑使用一些"select into"语句来创建表,然后需要删除所有上述表作为工作流的后续部分.
这些表中没有一行会有几十行.
大多数数据库对象DDL语句都可以是用户事务的一部分.存在一些例外,例如与数据库本身的文件相关的操作(如ALTER DATABASE ... ADD/REMOVE FILE).再次在服务器级别,大多数对象可以是事务的一部分.例外是端点等对象,可以启动或停止侦听套接字.
一般的经验法则是,如果是仅元数据操作,那么它可以是事务的一部分.如果是具有外部副作用的操作(创建文件,打开套接字等),则它不能成为事务的一部分,因为无法保证回滚.
绝大多数DDL语句只是元数据,它们所做的只是修改一些元数据目录表(例如,它们在sys.tables中添加行),因此它们的行为与任何其他事务处理操作一样:如果事务被回滚,行被删除因此表'消失'.它有更多的细节(例如,sys.tables是一个在真实的内部表之上的视图,比如sys.objects $,这是由CREATE TABLE修改的真实表),但是在高级别,这就是正在发生的事情.