我开始了解MS SQL中未记录的存储过程(例如'sp_MSforeachdb'...等)的一些用法。
他们是什么?为什么他们“没有证件”?
答案 0 :(得分:2)
+1急剧上升。这些过程通常由复制或管理工具使用,它们没有文档,因为开发团队保留随时更改它们的权利。多年来,许多都发生了变化,特别是在SQL 2000 Sp3和SQL 2005
中答案 1 :(得分:1)
我的推测是因为它们在内部使用而不受支持,并且可能会发生变化。 sp_who2是我觉得非常方便的另一个。也许管理工作室活动监视器使用同一个输出。我提到无证件可能意味着不支持吗?明年不要依赖这些来坚持或产生相同的结果。
答案 2 :(得分:1)
sp_MSforeachdb
和sp_MSforeachtable
不太可能改变。
两者都可以这样使用:
EXEC sp_MSforeachtable "print '?'; DBCC DBREINDEX ('?')"
问号'?'由tablename(或其他sp中的DB名称)替换。
答案 3 :(得分:1)
未记录意味着不受支持,MS保留随时更改或删除所述命令的权利,恕不另行通知。
任何记录的功能在删除之前都会经历两个弃用阶段。即使在Service Pack或修补程序中,也可以删除未记录的命令,而不会发出任何警告或任何通知。
答案 4 :(得分:1)
内部SQl Server开发人员很可能需要这些存储过程来实现他们正在处理的功能,因此他们开发了它并在其代码中使用它。在与技术文档人员合作时,他们涵盖了项目的范围,并且仅在官方文档中包含了适用于客户的项目部分。随着时间的推移,人们发现了额外的存储过程(因为你无法隐藏它们)并开始使用它们。虽然内部SQl Server开发人员不想更改这些未记录的程序,但我相信如果他们不得不在下一个项目中,他们将在两秒内完成。
答案 5 :(得分:0)
正如其他人所说,它们是不受支持的功能,不是为了一般消费,虽然它们不能阻止你去做,事实上,有时它们可能非常有用。
但作为内部代码,它们可能会产生意想不到的副作用或限制,并且可能会在某一天出现在下一天。
如果您愿意,请小心使用它们,但不要完全依赖它们。