2015-10-01 33 views
0

我們的一臺服務器上的數據庫中有許多視圖。我需要所有的視圖定義爲文本文件保存在以下格式:將所有視圖導出到文本文件

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

** [SMO:

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 

只是創建光標對準此選擇,併爲每個行存儲的數據與這樣的文件Scripter](https://www.simple-talk.com/sql/database-administration/automated-script-generation-with-powershell-and-smo/)**你可以像在'從SSMS生成腳本GUI '。另一種可能性是使用動態SQL和使用系統對象來重新創建輪子。 – lad2025

+0

我在Parallel Data Warehouse上,它沒有像SSMS那樣的所有功能。 –

回答

2

你可以得到這個查詢所有的觀點:

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