我们的一台服务器上的数据库中有许多视图。我需要以下列格式将所有视图定义保存为文本文件:
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或其他东西?
答案 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