确定事务中无法执行的T-SQL/DDL

Mar*_* L. 5 t-sql sql-server

有多种语句和系统过程无法在事务内执行,错误消息为“不允许...”(例如,create database)或“无法执行...”(例如,exec sp_addrole)。

是否存在一条或一组规则来指示事务中是否不允许给定的过程/语句?有其列表吗?

Mic*_*son 1

不是微软官方资源,但迄今为止我找到的最全面的列表......

  • ALTER DATABASE
  • BACKUP LOG
  • BACKUP DATABASE
  • RESTORE LOG
  • RESTORE DATABASE
  • RECONFIGURE
  • UPDATE STATISTICS
  • LOAD DATABASE
  • LOAD TRANSACTION
  • CREATE DATABASE
  • DISK INIT
  • DROP DATABASE
  • 更改MASTER数据库的系统存储过程

最后一项是一个相当广泛的类别...但是您可以合理地预测哪些类型的系统存储过程将改变数据库MASTER...本质上是在服务器级别而不是数据库级别运行的任何内容。