我有 914 个存储过程,需要在两个数据库之间进行洗牌。
Server1 上的 62 个存储过程不在 Server2 上,而 Server2 上的 790 个存储过程不在 Server1 上。
我确切地知道缺少哪些存储过程,因为我运行了这个查询来找到它们:
DECLARE @Routine varchar (20) = 'Procedure' --'Function'
--,@What VARCHAR(200) = '%Survey%'
select SPECIFIC_CATALOG
,SPECIFIC_NAME
,SPECIFIC_SCHEMA
--,@@servername AS [Server Name]
,'[Server1]' AS [Server Name]
,ROUTINE_TYPE
,ROUTINE_DEFINITION
,CREATED
,LAST_ALTERED
from [Server1].Database1.information_schema.routines
where routine_type = @Routine
--AND SPECIFIC_NAME LIKE @What
AND specific_name NOT IN (SELECT SPECIFIC_NAME
from [Server2.Database1.information_schema.routines
where routine_type = @Routine
--AND SPECIFIC_NAME LIKE @What
)
UNION all
select SPECIFIC_CATALOG
,SPECIFIC_NAME
,SPECIFIC_SCHEMA
--,@@servername AS [Server Name]
,'[Server2]' AS [Server Name]
,ROUTINE_TYPE
,ROUTINE_DEFINITION
,CREATED
,LAST_ALTERED
from [Server2].Database1.information_schema.routines
where routine_type = @Routine
--AND SPECIFIC_NAME LIKE @What
AND specific_name NOT IN (SELECT SPECIFIC_NAME
from [Server1].Database1.information_schema.routines
where routine_type = @Routine
--AND SPECIFIC_NAME LIKE @What
)
有没有办法修改它以获取结果集并让它自动将存储过程移动到它们不在的服务器上?
我不需要迁移 Server1 或 Server2 上的“每个”存储过程,只需要迁移那些丢失的存储过程。