我有一个数据库,由多个团队和多种语言的人填充了15年的数据库。我希望重命名表/列/约束以匹配某种类型的标准。
问题是可能会在大量存储过程中引用一列,并且除了使用SQL Digger之类的工具搜索每个sproc之外,无法找到。问题在于我想重命名大量的实体,并为每个声音做手动操作。
我一直在寻找一种有助于名称重构并且找不到任何东西的工具。有些工具[这里]模糊地声称要这样做,但实际上并没有(我没有看过列出的所有公平的工具)。
有没有人有这种工具的经验?
答案 0 :(得分:7)
我使用ApexSQL Refactor已有一段时间了。它是一个免费工具,到目前为止它工作得很好。
他们的解决方案中心有一篇文章"How to change an object name without breaking your SQL database"。
我注意到了新版本的公告(2013年),但我不确定它是否会保持免费。
答案 1 :(得分:3)
使用上述任何工具更新对象时要小心,因为它们只搜索数据库中的引用。要记住的重要一点是您在应用程序的数据访问层中拥有的代码。
您可能想要查看的另一个工具是ApexSQL Clean。它可以找到所有未使用的数据库对象,直观地显示所有引用,但它也搜索.NET解决方案并在那里查找引用。
同样,考虑到您的数据库已有15年历史,您可能在不同的遗留应用程序中拥有代码,而不仅仅是.NET。无论如何,祝你好运。希望现在这一切都完成了:)
答案 2 :(得分:2)
我没有使用它,但已经使用了他们的其他Sql Server工具,他们做了他们声称的。
http://www.red-gate.com/products/sql-development/sql-prompt/
答案 3 :(得分:2)
我过去曾使用数据库项目(在Visual Studio 2010中)进行重构活动并取得了很大的成功。数据库项目肯定有很多怪癖但你无法解决。
您可以在此处找到有关它的更多详细信息:http://msdn.microsoft.com/en-us/library/dd193420
答案 4 :(得分:2)
有两种选择:
SQL Server Data Tools(review here)
Red-Gate SQL Refactor(好吧,现在是SQL Prompt的一部分)
请注意,这些工具只能足够智能,以查找通过直接引用或通过适当依赖项公开的引用。如果使用动态SQL构造表名或列名,那么运气不好。
我还在几年前写过关于保持sysdepends最新的博客,但是我不确定它对于特别是列有多大用处:
https://sqlblog.org/2008/09/09/keeping-sysdepends-up-to-date-in-sql-server-2008