将所有视图导出到文本文件

时间:2015-10-01 07:29:28

标签: sql-server windows ssis parallel-data-warehouse

我们的一台服务器上的数据库中有许多视图。我需要以下列格式将所有视图定义保存为文本文件:

IF OBJECT_ID('<[Schema_Name].[VIEW_NAME]>') IS NOT NULL
    DROP VIEW <[Schema_Name].[VIEW_NAME]>
GO

<<View Definition Here>>

GO

GRANT SELECT ON <[Schema_Name].[VIEW_NAME]> TO [PUBLIC]
GO

文本文件应命名为 Schema_Name.VIEW_NAME.txt

我不想手动执行此操作,因为这会占用我所有的时间。不知道这是否可以自动化?也许使用SSIS或其他东西?

1 个答案:

答案 0 :(得分:2)

您可以使用此查询获取所有观看次数:

SELECT
    s.name,
    av.name,
    sm.definition,
    'IF OBJECT_ID('''+s.name+'.'+av.name+''') IS NOT NULL
    DROP VIEW '+s.name+'.'+av.name+'
GO

'+sm.definition+'

GO

GRANT SELECT ON '+s.name+'.'+av.name+' TO [PUBLIC]
GO' AS script
FROM sys.views AS av
INNER JOIN sys.sql_modules AS sm
    ON av.object_id = sm.object_id
INNER JOIN sys.schemas AS s
    ON av.schema_id = s.schema_id

只需使用此选择创建游标,并为每个行存储数据,使用以下内容存储:

DECLARE @Cmd AS VARCHAR(MAX)
SET @Cmd ='echo ' +  @script + ' > C:\' + @schema + '.' + @view_name + '.txt'
EXECUTE Master.dbo.xp_CmdShell  @Cmd