检查表/视图/过程的名称,并与来自不同数据库

时间:2018-04-05 18:48:29

标签: sql sql-server

我目前正在将表,视图和存储过程从SQL Server中的一个数据库移动到同一服务器上的另一个数据库。几个星期前,我已经开始手动移动其中一些程序,我不确定到目前为止我已经移动了哪些程序。我想写一个查询,将我已经移动到数据库2的表与数据库1中的表进行比较,并列出数据库1中的东西,我还没有移动过。我想我对从哪里开始感到困惑,因为我没有太多使用系统表的经验。

2 个答案:

答案 0 :(得分:0)

最简单的方法是忽略你已经做过的事情,使用SSMS Generate Scripts任务编写所有脚本,然后执行DROP / CREATE或检查是否存在只是为了确定。

  1. 打开SSMS
  2. 打开对象资源管理器,连接到您的实例, 并打开数据库文件夹
  3. 右键单击数据库 拥有要移动的对象并单击“任务”,然后单击“确定” 生成脚本
  4. 单击“选择特定数据库对象”单选按钮,然后选择要移动的所有表/过程/等。单击“下一步”
  5. 单击“高级”,将“脚本删除”和“创建”更改为“SCRIPT DROP AND CREATE”(或将“检查对象存在”更改为“TRUE”),然后将“数据类型”更改为“脚本到架构和数据”
  6. 单击“保存到文件”单选按钮并将其全部编写为

答案 1 :(得分:0)

这里应该有用。

select 
    name
    ,type_desc
from 
    CurrentDatabase.sys.objects
where
    is_ms_shipped <> 1
    and type_desc in ('VIEW','SQL_STORED_PROCEDURE','USER_TABLE') --add in trigers, TVF, etc that you may want...

except 

select 
    name
    ,type_desc
from 
    YourNewDatabase.sys.objects
where
    is_ms_shipped <> 1
    and type_desc in ('VIEW','SQL_STORED_PROCEDURE','USER_TABLE') --add in trigers, TVF, etc that you may want...