簡體   English   中英

如何從特定數據庫下載所有存儲過程

[英]How can I download all stored procedures from a specific database

我必須從特定數據庫下載所有存儲過程。

大約有130個存儲過程,我可以手動完成,就像每個文件一樣保存。

但有沒有自動選項下載所有?

1)打開SQL Server Management Studio 2)在對象資源管理器中選擇數據庫3)右鍵單擊>任務>生成腳本

在此輸入圖像描述

4)僅選擇要編寫的存儲過程

在此輸入圖像描述

5)按照向導完成步驟; 在下一個屏幕上,選擇Single file per object選項Single file per object並定義放置這些文件的目錄:

在此輸入圖像描述

使用這些選項, 每個存儲過程可以獲得一個文件 ,存儲在您選擇的目錄中。

您可以在管理工作室中執行此操作 - 右鍵單擊​​所需的數據庫並選擇任務 - >生成腳本 - >完成向導。 然后,您可以指定存儲過程等。

你也可以使用這樣的腳本:

SET NOCOUNT ON
DECLARE @Test TABLE (Id INT IDENTITY(1,1), Code VARCHAR(MAX))

INSERT INTO @Test (Code)
SELECT 'IF object_ID(N''[' + schema_name(schema_id) + '].[' + Name + ']'') IS NOT NULL
          DROP PROCEDURE ['+ schema_name(schema_id) +' ].[' + Name + ']' + CHAR(13) + CHAR(10) + 'GO' + CHAR(13) +CHAR(10) +
           OBJECT_DEFINITION(OBJECT_ID) + CHAR(13) +CHAR(10) + 'GO' + CHAR(13) + CHAR(10)
            FROM sys.procedures
            WHERE is_ms_shipped = 0

DECLARE @lnCurrent INT, @lnMax INT
DECLARE @LongName VARCHAR(MAX)

SELECT @lnMax = MAX(Id) FROM @Test
SET @lnCurrent = 1
WHILE @lnCurrent <= @lnMax
      BEGIN
            SELECT @LongName = Code FROM @Test WHERE Id = @lnCurrent
            WHILE @LongName <> ''
               BEGIN
                   PRINT LEFT(@LongName,8000)
                   SET @LongName = SUBSTRING(@LongName, 8001, LEN(@LongName))
               END
            SET @lnCurrent = @lnCurrent + 1
      END

您也可以按住Shift鍵並單擊以選擇所有存儲過程,然后右鍵單擊並將其編寫為文件。

您也可以使用DB pro(Visual Studio數據庫工具)來執行此操作。 有關詳細信息,請查看此信息 - https://www.mssqltips.com/sqlservertip/2971/creating-a-visual-studio-database-project-for-an-existing-sql-server-database/

編輯:更新陳舊鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM