1

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

我已经Database通过 a创建了Dynamic stored procedure它,它运行良好。我也已经全部移动了tables,但我无法将它们移动stored procedures到新数据库。

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

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

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

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

谁能帮我?

4

3 回答 3

0

你有这种方式

试试这个

  • 右键单击数据库>
  • 任务 >
  • 生成脚本 >
  • 选择您要编写脚本的对象(Store-Procedure 或 table)>
  • 脚本文件(您在哪里获得脚本代码详细信息)>
  • 为 Table 设置架构或数据或带有数据的架构(如果您使用 sp ,则不要设置任何内容)
  • 针对目标数据库运行生成的脚本。

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

使用脚本将所有 SP 从一个数据库复制到另一个数据库


更新:

............

这是移动存储过程的 4 个选项

选项 1:使用脚本向导 右键单击​​ db --> 任务 --> 生成脚本 --> 完成向导。


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


选项 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。

于 2013-10-24T05:59:08.023 回答
0

以下链接的可能重复项:

SQL Server - 将存储过程从一个数据库复制到另一个数据库

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

我希望它会帮助你.. :)

于 2013-10-24T06:03:36.647 回答
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);
于 2013-10-24T05:38:57.370 回答