我正在使用 Red Gate SQL Compare 根据 SVN 和数据库之间的差异创建发布脚本。这导致脚本包含一堆表和过程更改并且工作正常。然而,有一件事让我感到困惑,它使用事务隔离级别可序列化。
我知道它对 dml 语句有什么作用,但我不确定它对 ddl 意味着什么。有人可以启发我,也许举个例子吗?
我正在使用 Red Gate SQL Compare 根据 SVN 和数据库之间的差异创建发布脚本。这导致脚本包含一堆表和过程更改并且工作正常。然而,有一件事让我感到困惑,它使用事务隔离级别可序列化。
我知道它对 dml 语句有什么作用,但我不确定它对 ddl 意味着什么。有人可以启发我,也许举个例子吗?
有时,在包含许多列的表中插入数据时,如果插入语句不应该失败,知道必须指定哪些列可能很有用。
我编写此查询是为了找出哪些列不可为空、标识、计算、时间戳以及没有默认值。
select *
from sys.columns
where object_id = object_id('<table>') and
is_nullable = 0 and
is_identity = 0 and
is_computed = 0 and
default_object_id = 0 and
type_name(system_type_id) <> 'timestamp'
是否还有任何其他属性应包含在此检查中?
我们在开发环境中遇到了一个问题,即 30 秒后 Web 服务器的过程调用超时。我跟踪查询并从 SSMS 手动运行它(相同的参数和所有),它在大约 2 秒内执行。然后我跑了
dbcc dropcleanbuffers
dbcc freeproccache
之后来自网络服务器的调用也及时完成了。
我怀疑应该使用相同的计划,因为我使用的是来自两个连接的完全相同的参数,但我不确定。
我的问题是:不同的连接是否可以有不同的计划或缓冲?或者它可能是我运行上述 dbcc 命令引起的其他副作用吗?
在需要帮助解决 SQL Server 2005 死锁场景问题中,有人建议使用DBCC TRACEON (1204, -1)
全局跟踪死锁。
当在 BOL 中读到这个命令时,它指出它应该只在用户或应用程序没有在系统上同时运行语句时使用。这是否意味着启用此跟踪标志时我们必须处于单用户模式?此外,为什么需要它并且遵循这些建议很重要?(在始终运行的生产系统中似乎有点难以遵循。)