2010-06-08 126 views
0

我需要在SQL SERVER 2008中更改数据库名称,并在另一个项目中使用它。但是,它包含数百个存储过程,并且数据库的名称也应在存储过程中进行更改。有没有办法做到这一点?在存储过程中更改数据库名称

+0

最好的解决方案是备份数据库并将其作为新数据库附加。这样SQL Server会自动重命名旧的数据库引用。 – 2010-06-09 08:20:04

回答

5

如果用鼠标右键单击数据库并选择“任务” - >“生成脚本”。通过向导,它会为你创建一个SQL脚本。确保您选择了所有必要的选项,例如创建数据库,存储过程等等。一旦完成,您将拥有一个大脚本。查找并替换数据库名称。

+0

+1。编辑脚本时,我建议您除去需要的数据库名称。如果某人为了测试目的(另一个测试数据库的SP可能会更新实时数据库)制作了另一个名称的数据库副本,让DB知道数据库名称的SP可能会产生令人讨厌的效果。 – 2010-06-08 07:04:26

+0

谢谢你的快速回答。我会尽快完成。 – 2010-06-08 07:04:52

+0

只是一个澄清,因为我是一个noob,我盯着这个答案好了十分钟,才意识到发生了什么事情。 “生成脚本”的东西在SQL编辑器中创建一个大文本文件。查找/替换该文件中所有条目的数据库名称,然后单击执行。它会失败,因为脚本试图将所有现有的存储过程重新插入到数据库中。您现在必须删除所有正在更新的程序,再次执行,并且它们将被重新插入,并且看起来没有任何事情发生。现在刷新视图,它们将重新出现。 – Frosty840 2010-10-22 11:33:46

0

没有办法自动做到这一点。您将不得不手动更改每个存储过程。

你真的需要改名吗?

2

我建议你将所有的存储过程导出为sql文件,然后带上一个漂亮的texteditor(如Notepad ++)并进行文件搜索& replace-action来更改sql文件中引用的所有名称。

周围有一个据我可以说没有其他办法:-(

1

我会做下一件事情:我会生成由Management Studio中(Right Click on DB -> Tasks -> Generate scripts)数据库的所有脚本,以后我会替换数据库的名称(Ctrl + H

0

保持一切并使用不同的服务器或服务器实例不是更好吗?您是否必须通过这两个不同名称的数据库来维护数据库更改?

相关问题