查找mssql中缺少的存储过程
我有一个大项目,是由许多开发人员工作。我们有用于代码版本控制的git,但是对于表和存储过程的版本控制我们有困难。每次我都要从主服务器进行备份并在本地服务器上恢复数据库,但仍然有100多个存储过程。我只需要将我的存储过程与它们同步,并将它们与我的同步 他们是否有办法找到存储过程,该存储过程是他们的服务器,但不是我的,反之亦然查找mssql中缺少的存储过程,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我有一个大项目,是由许多开发人员工作。我们有用于代码版本控制的git,但是对于表和存储过程的版本控制我们有困难。每次我都要从主服务器进行备份并在本地服务器上恢复数据库,但仍然有100多个存储过程。我只需要将我的存储过程与它们同步,并将它们与我的同步 他们是否有办法找到存储过程,该存储过程是他们的服务器,但不是我的,反之亦然 我所有的程序都是从sp开始的,最好的方法如下 从您的服务器上恢复 将其还原到本地数据库所在的本地服务器 假设db1是您刚才恢复的数据库,db2是您在本地服务器中已经拥有的数
我所有的程序都是从sp开始的,最好的方法如下
- 从您的服务器上恢复
- 将其还原到本地数据库所在的本地服务器
- 假设db1是您刚才恢复的数据库,db2是您在本地服务器中已经拥有的数据库 如果需要找出db1中的存储过程,而不是db2中的存储过程,那么启动下面的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
SELECT *
FROM [Server IP].[Database].sys.objects
WHERE type = 'p'
AND name NOT IN (SELECT name
FROM sys.objects)
这种方法的优点是,每次需要获取最新的存储过程时,都可以避免备份和恢复。这是一种实时sp比较方法,前提是您有足够的服务器访问权限。
SELECT *
FROM [Server IP].[Database].sys.objects
WHERE type = 'p'
AND name NOT IN (SELECT name
FROM sys.objects)