在sql server中生成脚本,生成为StoredProcedure或写入文本文件

时间:2017-04-10 12:13:52

标签: sql sql-server

我知道SQL服务器能够生成有关数据库中表的元数据的脚本。我想知道是否有办法在不使用向导的情况下执行此操作。是否可以使用存储过程写入txt文件或使用SSIS生成DDL命令。我只想要一些东西,所以我可以在一夜之间自动完成工作,所以没有人工干预运行向导。如果有一种方法可以在SQL Server Management工作室使用命令或SSIS执行此操作。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以设置数据库触发器,记录开发数据库中的任何更改。 一个例子是:

create TRIGGER trDDLHistory ON DATABASE
for CREATE_FUNCTION, ALTER_FUNCTION, DROP_FUNCTION,
    CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PROCEDURE,
    CREATE_TABLE, ALTER_TABLE, DROP_TABLE,
    CREATE_TRIGGER, ALTER_TRIGGER, DROP_TRIGGER,
    CREATE_VIEW, ALTER_VIEW, DROP_VIEW
    -- there are more offcourse..
AS
BEGIN
    INSERT INTO tblDDLHistory(DDLHistory)
    VALUES(convert(nvarchar(max), EVENTDATA()))
END;

tblDDLHistory的例子是

CREATE TABLE [dbo].[tblDDLHistory] ( 
  [DDLHistoryID]  INT      IDENTITY(1,1)   NOT NULL,
  [DDLDate]       DATETIME NOT NULL DEFAULT (getdate()),
  [DDLHistory]    XML      NULL,
  CONSTRAINT   [PK_DDLHistoryID] PRIMARY KEY (DDLHistoryID)
)

现在,您可以从此处获取所有更改,以便在生产数据库中使用。