刚才在测试SQL Server 2008的时候突然发现BACKUP LOG WITH TRUNCATE_ONLY命令提交后说语法错误,遂苦阅联机丛书,最后发现原来是被Discontinue了,这才想起貌似在SQL Server 2005中已经被Deprecated,到了2008果然被干掉了。于是索性全览了一遍被丢弃的功能,想想三年前的2005发布,决定总结一下。
原功能
替代品
上榜理由
BACKUP LOG WITH TRUNCATE_ONLY
None
过去习惯性在收缩数据库脚本前加上这个命令,SQL Server 2008中不在支持这一命令,如果需要截断日志,只能通过将数据库设置为Simple还原模式才可以。当然BACKUP LOG WITH NO_LOG也随之淘汰了。
sp_helpdevice
sys.backup_devices
这个存储过程在自动化备份管理脚本中被使用地有为频繁。现在无奈全面推行内部视图,看来这些通过系统存储过程来获取系统元数据的日子是越来越少了。不过这样确实不错,架构上看起来更加一致么。
60,65和70的数据库兼容级别
None
在创建数据库的脚本中尤其需要注意这一点
Surface Area Configuration Tool
Declarative Management Framework和SQLCM
这个工具是在SQL Server 2005引入的,曾经在SQL Server 2005发布后被不断提倡,奈何红颜薄命阿......
不过相比之下,我们回顾一下SQL Server 2005被丢弃的功能,SQL Server 2008的改动相对还是小很多了,毕竟才3年而已么:
原功能
替代品
上榜理由
isql
sqlcmd
原来还是有很多在Command Line模式下的维护脚本是用isql命令写的。
sp_config 'allow update'
None
直接对系统表的修改被禁止了。这种被等同于修改操作系统注册表的行为被禁止后,系统当然是会安全很多了。
DBCC PINTABLE
None
这是颇具争议的一个丢弃,尽管很多人认为Pin Table到内存里面有助于系统性能的提高,不过微软则坚持认为大家应该把对象的重要性交给内部的缓存管理器去评估。
Rebuildm.exe
安装程序中的REDUILDDATABASE选项
虽然没有带来什么不便,不过这个命令确实拯救过无数DBA的性命。
syslocks
sys.dm_tran_locks
原来有很多人是依赖这个系统表来了解内部的锁压力的。不过用动态管理视图确实没有什么不方便,而且确实SQL Server的管理需要一套一致的机制。
*=和=*
LEFT JOIN和RIGHT JOIN
好像很多老DBA都喜欢这么写,尽管大家都知道后面的那种才是ANSI SQL的格式。
通讯协议NWLink IPX/SPX, AppleTalk, Banyan Vines, Multiprotocol
仅能在TCP/IP sockets、命名管道、VIA以及共享内存中选择
料想选择前者通讯协议的人应该也不多了,不过倒也证实了TCP/IP对网络世界的影响,这些曾经还出现在NT年代的MCSE考试中的协议终于退出了SQL Server的世界。