数据库存储过程移动问题

时间:2013-10-24 05:33:51

标签: sql sql-server stored-procedures

我想通过SQL查询将所有存储过程从旧数据库移动到新数据库。

我通过Database&创建了Dynamic stored procedure它工作得很好。我已经移动了所有tables,但我无法将stored procedures移动到新数据库。

我尝试将SQL statements粘贴到表中,但我不知道要执行它们。

  

是否有一种简单的方法来迁移我的存储过程?

我通过以下查询获得了在旧数据库中创建的所有存储过程

Select Name from '+@OldDatabse+'.sys.procedures

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

链接页面中的旧数据库服务器

$old_host= "OLD DB IP";
$old_db = "OLD DB"

$new_host ="localhost";
$new_db= "new_db";

$old_con=mysql_connect($old_host,$old_db);

mysql_select_db($old_db,$old_con);
mysql_select_db($new_db,$new_con);

答案 1 :(得分:0)

你这样做

  

尝试以下

  • 右键单击数据库>
  • 任务>
  • 生成脚本>
  • 选择您要编写脚本的对象(存储过程或表格)>
  • 脚本到文件(您获得脚本代码的详细信息)>
  • 使用Table的数据设置架构或数据或架构(如果您使用sp,则不要设置任何内容)
  • 针对目标数据库运行生成的脚本。

如果您需要使用查询来移动它,请查看以下链接:

Copy all SP's from one Database to another Database using a script


更新:

...........

这是移动存储过程'

的4选项

选项1:使用脚本向导右键单击数据库 - >任务 - >生成脚本 - >通过向导。


选项2:在SSMS中打开存储过程文件夹(在对象资源管理器详细信息窗口中)。 (您也可以按F7执行此操作,有关详细信息,请参阅this blog)。您可以使用shift +单击选择所有存储过程,然后右键单击并将其编写脚本到文件。


选项3 :最简单的。

bcp "SELECT definition + char(13) + 'GO' FROM MyDatabase.sys.sql_modules s INNER JOIN MyDatabase.sys.procedures p ON [s].[object_id] = [p].[object_id] WHERE p.name LIKE 'Something%'" queryout "c:\SP_scripts.sql" -S MyInstance -T -t -w

选项4:编写数据库中的所有存储过程

SELECT    O.Name as ProcName 
        ,M.Definition as CreateScript 
        ,O.Create_Date 
        ,O.Modify_Date 
FROM sys.sql_modules as M INNER JOIN sys.objects as O 
ON M.object_id = O.object_id 
WHERE O.type = 'P'
  

如果使用ENCRYPTION选项创建存储过程,那么您将在定义列中获得NULL。

答案 2 :(得分:0)

以下链接可能重复:

SQL Server - copy stored procedures from one db to another

  • 右键单击数据库
  • 任务
  • 生成脚本
  • 选择您要编写脚本的对象
  • 脚本到文件
  • 针对目标数据库运行生成的脚本

我希望它会对你有所帮助.. :)