将列添加到 SQL Server 2008 R2 上的大型生产表的最佳方法是什么?根据微软的在线书籍:
ALTER TABLE 中指定的更改会立即实施。如果更改需要修改表中的行,则 ALTER TABLE 更新行。ALTER TABLE 获取表上的模式修改锁,以确保在更改期间没有其他连接引用甚至表的元数据,除了在最后需要非常短的 SCH-M 锁的在线索引操作。
(http://msdn.microsoft.com/en-us/library/ms190273.aspx)
在包含数百万行的大表上,这可能需要一段时间。停电是唯一的选择吗?处理这种情况的最佳方法是什么?
我有一对 SQL Server 2008 R2 服务器托管一个没有见证的同步镜像数据库。这个周末,我们不得不做一些网络维护,所以我暂停了镜像。恢复后,委托人的状态恢复为通常的委托人,已同步。然而,镜像现在显示为镜像、同步/恢复......我不记得恢复......部分通常在那里。
尽管每小时进行日志备份,但主体上的事务日志也开始增长。这向我表明同步过程没有释放事务日志空间。
这里发生了什么,我该如何解决?
是否可以在不运行 DBCC LOGINFO 的情况下在数据库的事务日志中找到 VLF 的数量?当计数是我的 t-sql 脚本需要从中获取的唯一信息时,DBCC LOGINFO 似乎有点沉重和冗长。
当用户从 MS SQL Server 分离数据库时,它会将数据和日志文件的所有者设置为该用户。它还从文件中删除所有非所有者权限。这部分解释在http://msdn.microsoft.com/en-us/library/ms189128.aspx
我已经在以下版本的 SQL Server 上对此进行了测试
是否可以更改此行为以便在分离数据库时保留文件权限?
我有一堆 SQL 2005 数据库,它们已经存在了很长时间,并且由于各种原因经历了事务日志自动增长。定期备份现在可以控制事务日志的使用,但文件仍然很大且碎片化。
我想通过减少 VLF 的数量来回收一些空间并提高性能。但是,我也不想中断我们的预定备份。DBCC SHRINKFILE() 如何影响事务日志备份链?或者是吗?如果我将 TRUNCATEONLY 添加到命令中,这会改变吗?
请注意,这是一次性修复。我很清楚,定期缩小日志文件是一件坏事——如果这些数据库配置了合理的初始大小和自动增长设置,并且备份在其历史记录的每一天都完美运行,这将不是问题。