我知道大多數人都會給喜歡的反應,右鍵單擊數據庫名稱,選擇任務,生成腳本,等大多數人給互聯網上的細節響應包括計算器方法導入/導出SQL Server存儲過程
我已經知道很久以前。
我的問題是編寫腳本導出/導入存儲過程的任何建議。如果我只需要做5或10,那不是什麼大問題。我只需要選擇正確的。如果有很多像50或更多,這是痛苦的,必然是錯誤。有時,爲了使生活更輕鬆,我們希望導出/導入後綴,例如*test.sql
。
任何建議使用SQL腳本,C#或dos命令來做到這一點?
感謝
我知道大多數人都會給喜歡的反應,右鍵單擊數據庫名稱,選擇任務,生成腳本,等大多數人給互聯網上的細節響應包括計算器方法導入/導出SQL Server存儲過程
我已經知道很久以前。
我的問題是編寫腳本導出/導入存儲過程的任何建議。如果我只需要做5或10,那不是什麼大問題。我只需要選擇正確的。如果有很多像50或更多,這是痛苦的,必然是錯誤。有時,爲了使生活更輕鬆,我們希望導出/導入後綴,例如*test.sql
。
任何建議使用SQL腳本,C#或dos命令來做到這一點?
感謝
你爲什麼標記,當你問在SQL或DOS腳本答案C#這個問題?
這CMD腳本刪除所有存儲過程,其名稱開頭 「USP」:在一個線和%SERVER%和%DATABASE%
FOR /F "tokens=* USEBACKQ" %%F IN (`sqlcmd -S %SERVER% -d %DATABASE% -Q "select name from sys.objects where type = 'P'" `) DO (echo %%F | findstr "^usp" >nul 2>&1 && sqlcmd -S %SERVER% -d %DATABASE% -Q "drop procedure %%F")
這一切都確定了服務器和數據庫。
該腳本從名稱與「usp * .sql」匹配的當前目錄加載所有存儲過程。如果調用XML數據類型方法,則需要將QUOTED_IDENTIFIER設置爲ON。
for %%f in (usp*.sql) do sqlcmd -S %SERVER% -d %DATABASE% -I -i %%f
既然您也標記了C#。使用.NET,您可以使用Microsoft.SqlServer.Smo。有一個StoredProcedure class。這種方法可以讓你真正控制你想要完成的任務。使用示例,您可以找到here,也可以使用PowerShell。
這裏有一個片段我已經把可以幫助你(使用Microsoft.SqlServer.Smo
,Microsoft.SqlServer.ConnectionInfo
,Microsoft.SqlServer.Management.Sdk.Sfc
的DLL):
var serverConnection = new ServerConnection(new SqlConnection(ConnectionString));
var server = new Server(serverConnection);
foreach (StoredProcedure sp in server.Databases["YourDB"].StoredProcedures)
{
if (sp.Name.Contains("yourSubstring"))
{
System.IO.File.WriteAllText(sp.TextHeader + Environment.NewLine + sp.TextBody);
}
}
感謝。哪個參數用於導出?我只是做了sqlcmd的幫助,我找不到導出或腳本例程。編寫批處理的一個原因是導出一堆文件。你確實放下了拖放程序。儘管我不想編寫批量程序來刪除一堆SP,但它仍然很有幫助。這是太多的風險。哦,我標記C#的原因,我只是好奇,如果有一個API來這樣做。如果批處理可以這樣做,它服務於 – user12345
「如何將存儲過程導出到文本文件」(http://www.sqlservercentral.com/Forums/Topic205892-5-1.aspx)顯示了幾種技術。您可能想要在SSMS中打開數據庫,右鍵單擊數據庫名稱並選擇任務 - >生成腳本;然後按照嚮導。 –
任務 - >生成腳本是我已經知道的步驟。有一次,我不得不出口50多個SP。這是痛苦的,最終我輸出了我不應該輸出的那一個。我也想念一對夫婦。當我必須在500+ sp中導出50+ sp時,很有可能點擊錯誤的SP。我很快會再做同樣的事情。這一次我必須爲其他人準備腳本。如果有一個更容易,這將是很好的。我會嘗試BCP_utility,http://www.kodyaz.com/t-sql/bcp-and-sp_helptext-to-script-store-procedures-into-seperate-files.aspx,我希望這會有所幫助 – user12345