我尝试批量编译SSMS中的所有存储过程。但是只编译了第一个存储过程,然后对于其他过程显示" 已经存在一个对象...... "我将所有程序保存在一个编辑器中然后尝试编译[F5]程序但得到错误。请建议如何批量编译所有程序。
以下是我想要做的示例:
USE [TESTDB]
IF OBJECTPROPERTY(object_id('[dbo].[p_get_Codes]'), N'IsProcedure') = 1
DROP PROCEDURE [dbo].[p_get_Codes]
GO
/****** Object: StoredProcedure [dbo].[p_get_Codes] Script Date: 8/8/2015 8:56:32 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create proc [dbo].[p_get_Codes]
as
begin
SET NOCOUNT ON;
begin
--- my stored procedure
end
SET NOCOUNT OFF;
end;
IF OBJECTPROPERTY(object_id('[dbo].[p_get_retailers]'), N'IsProcedure') = 1
DROP PROCEDURE [dbo].[p_get_retailers]
GO
/****** Object: StoredProcedure [dbo].[p_get_retailers] Script Date: 8/8/2015 8:58:43 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create proc [dbo].[p_get_retailers]
as
begin
SET NOCOUNT ON;
begin
--- my stored procedure
end
SET NOCOUNT OFF;
end;
IF OBJECTPROPERTY(object_id('[dbo].[p_get_Buyers]'), N'IsProcedure') = 1
DROP PROCEDURE [dbo].[p_get_Buyers]
GO
/****** Object: StoredProcedure [dbo].[p_get_Buyers] Script Date: 8/8/2015 10:17:53 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create proc [dbo].[p_get_Buyers]
as
begin
SET NOCOUNT ON;
begin
--- my stored procedure
end
SET NOCOUNT OFF;
end;
IF OBJECTPROPERTY(object_id('[dbo].[p_get_seller_groups]'), N'IsProcedure') = 1
DROP PROCEDURE [dbo].[p_get_seller_groups]
GO
/****** Object: StoredProcedure [dbo].[p_get_seller_groups] Script Date: 8/8/2015 10:23:39 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create proc [dbo].[p_get_seller_groups]
as
begin
SET NOCOUNT ON;
begin
--- my stored procedure
end
SET NOCOUNT OFF;
end;
谢谢!
答案 0 :(得分:1)
在每个检查存储过程存在的go
语句之前添加IF
你的脚本应该是这个
USE [TESTDB]
IF OBJECTPROPERTY(object_id('[dbo].[p_get_Codes]'), N'IsProcedure') = 1
DROP PROCEDURE [dbo].[p_get_Codes]
GO
/****** Object: StoredProcedure [dbo].[p_get_Codes] Script Date: 8/8/2015 8:56:32 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create proc [dbo].[p_get_Codes]
as
begin
SET NOCOUNT ON;
begin
--- my stored procedure
end
SET NOCOUNT OFF;
end;
GO
IF OBJECTPROPERTY(object_id('[dbo].[p_get_retailers]'), N'IsProcedure') = 1
DROP PROCEDURE [dbo].[p_get_retailers]
GO
/****** Object: StoredProcedure [dbo].[p_get_retailers] Script Date: 8/8/2015 8:58:43 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create proc [dbo].[p_get_retailers]
as
begin
SET NOCOUNT ON;
begin
--- my stored procedure
end
SET NOCOUNT OFF;
end;
GO
IF OBJECTPROPERTY(object_id('[dbo].[p_get_Buyers]'), N'IsProcedure') = 1
DROP PROCEDURE [dbo].[p_get_Buyers]
GO
/****** Object: StoredProcedure [dbo].[p_get_Buyers] Script Date: 8/8/2015 10:17:53 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create proc [dbo].[p_get_Buyers]
as
begin
SET NOCOUNT ON;
begin
--- my stored procedure
end
SET NOCOUNT OFF;
end;
GO
IF OBJECTPROPERTY(object_id('[dbo].[p_get_seller_groups]'), N'IsProcedure') = 1
DROP PROCEDURE [dbo].[p_get_seller_groups]
GO
/****** Object: StoredProcedure [dbo].[p_get_seller_groups] Script Date: 8/8/2015 10:23:39 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create proc [dbo].[p_get_seller_groups]
as
begin
SET NOCOUNT ON;
begin
--- my stored procedure
end
SET NOCOUNT OFF;
end;