[英]How can I do a search of the text of all Stored Procedures in a SQL database
[英]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.