Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用If-EXIST-DROP生成脚本,但不包括CREATE-In-sqlserver中的If-EXIST_Sql Server_Stored Procedures_Ssms - Fatal编程技术网

Sql server 使用If-EXIST-DROP生成脚本,但不包括CREATE-In-sqlserver中的If-EXIST

Sql server 使用If-EXIST-DROP生成脚本,但不包括CREATE-In-sqlserver中的If-EXIST,sql-server,stored-procedures,ssms,Sql Server,Stored Procedures,Ssms,我想使用任务生成脚本|使用生成脚本,如果存在,则删除存储过程 但我不想包含,如果不存在-在生成脚本时创建存储过程,那么我应该怎么做 当前 IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SPNAME]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[SPNAME] GO IF NOT EXISTS (SELECT * FROM sys.ob

我想使用
任务生成脚本|使用
生成脚本,如果存在,则删除存储过程

但我不想包含
,如果不存在-在生成脚本时创建存储过程
,那么我应该怎么做

当前

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SPNAME]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[SPNAME]
GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SPNAME]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[SPNAME] AS' 
END
GO
必需的

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SPNAME]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[SPNAME]
GO

CREATE PROCEDURE [dbo].[SPNAME] AS 

谁能帮帮我吗

没有直接的选项可以做这件事。 遵循以下步骤

  • 为所有对象生成拖放脚本

    • 如果不存在,则包含=True
    • 脚本删除和创建=脚本删除
  • 为所有对象生成创建脚本

    • 如果不存在,则包含=False
    • 脚本拖放和创建=脚本创建
    • 追加到文件=True
  • 第二步将附加在第一步中生成的drops脚本的内容

    如果要将所有文件合并到一个文件中,请使用下面的命令

    for %f in (*.sql) do type "%f" >> c:\Test\output.sql
    
    查询选项

    创造

    使用SQL Server 17

    脚本拖放和创建

    见:

    您可以启用“检查对象是否存在”选项为true并生成拖放创建脚本。它应该适用于2017年或Azure SQL DB


    您的版本是什么?SQL Server的任何版本
    DROP->CREATE
    都可能导致丢失有关权限的信息
    CREATE->ALTER
    更安全。如果您能分享任何链接以获取相关知识,我们将不胜感激。谢谢@lad2025