我有一个大项目,由许多开发人员工作。我们有代码版本控制的git,但我们很难对表和存储过程进行版本控制。每次我必须从主服务器进行备份并在我的本地服务器上恢复数据库,但仍有100多个存储过程。我只需要将我的存储过程与他们和我的存储过程同步。
他们是否有办法找出存储过程,这是他们的服务器但不是我的服务器,反之亦然?
我的所有程序都以 sp _
开头答案 0 :(得分:1)
最好的方法如下
从您的服务器上备份
将其还原到本地数据库所在的本地服务器
说db1是你刚刚恢复的数据库,db2是你在本地服务器上已有的数据库
如果你需要找出db1中但不在db2中的存储过程,那么触发下面的sql
SELECT SPECIFIC_NAME FROM db1.information_schema.routines WHERE routine_type = 'PROCEDURE' AND Left(ROUTINE_NAME, 3) IN ('sp_', 'xp_', 'ms_') EXCEPT SELECT SPECIFIC_NAME FROM db2.information_schema.routines WHERE routine_type = 'PROCEDURE' AND Left(ROUTINE_NAME, 3) IN ('sp_', 'xp_', 'ms_')
答案 1 :(得分:0)
您好,您必须分两步完成此操作
使用下面的脚本从sql实例创建指向服务器的链接 注意使用SQL Server IP更改[服务器IP] [用户ID]和[密码]和有效的SQL凭据。
/* Object: LinkedServer [Server IP] Script Date: 12/12/2013 12:29:41 */
EXEC master.dbo.sp_addlinkedserver
@server = N'[Server IP]',
@srvproduct=N'SQL Server'
/* For security reasons the linked server remote logins password is changed with ## */
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname=N'[Server IP]',
@useself=N'False',
@locallogin=NULL,
@rmtuser=N'[User Id]',
@rmtpassword='[Password]'
GO
EXEC master.dbo.sp_serveroption
@server=N'[Server IP]',
@optname=N'collation compatible',
@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption
@server=N'[Server IP]',
@optname=N'data access',
@optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption
@server=N'[Server IP]',
@optname=N'dist',
@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption
@server=N'[Server IP]',
@optname=N'pub',
@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption
@server=N'[Server IP]',
@optname=N'rpc',
@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption
@server=N'[Server IP]',
@optname=N'rpc out',
@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption
@server=N'[Server IP]',
@optname=N'sub',
@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption
@server=N'[Server IP]',
@optname=N'connect timeout',
@optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption
@server=N'[Server IP]',
@optname=N'collation name',
@optvalue=NULL
GO
EXEC master.dbo.sp_serveroption
@server=N'[Server IP]',
@optname=N'lazy schema validation',
@optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption
@server=N'[Server IP]',
@optname=N'query timeout',
@optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption
@server=N'[Server IP]',
@optname=N'use remote collation',
@optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption
@server=N'[Server IP]',
@optname=N'remote proc transaction promotion',
@optvalue=N'true'
GO
执行以下查询。这里更改[服务器IP]以更正IP和[数据库]到主服务器数据库名称。在本地服务器上执行此查询。
SELECT *
FROM [Server IP].[Database].sys.objects
WHERE type = 'p'
AND name NOT IN (SELECT name
FROM sys.objects)