2009-11-11 44 views
1

好的,所以我有一些SQL和Powershell問題。有2個SQL腳本,一個用於設置4個不同的全局存儲過程。另一個執行它們並在將數據返回到PS以放入CSV文件之前操作數據。我不把它們放入單個文件的原因是爲了可讀性。 procs附帶了大量的sql,我無法在我們的生產環境中創建永久性特效。從powershell執行的SQL中創建多個存儲過程問題

我遇到的問題是腳本在SQL Mgmt Studio中運行良好,但是當由PS運行時,我在腳本中找到了幾處錯誤。

我敢肯定,這是PS和.NET類在執行和返回數據集時期望的格式問題,但是......我很茫然。

我正在運行SQL Server 2005 btw。

任何想法或類似的經驗?

回答

2

你會得到什麼錯誤?你如何執行每個文件? GO是僅由特定工具(例如Management Studio)理解的批處理分隔符; PowerShell不知道GO的含義。你是否嘗試過執行單獨的CREATE PROCEDURE腳本而不在它們之間發出GO命令?如果他們是單獨的命令,這不應該是一個問題。

+0

我已經嘗試刪除去語句,但得到'不正確的語法靠近關鍵字'過程'。我知道這是微不足道的,但我不能想到要拯救我的生命。 – CLR 2009-11-11 22:33:13

+0

那時PowerShell發送到SQL Server到底是什麼?聽起來像它不是一個完整的CREATE PROCEDURE腳本。也許你應該使用某種工具在PowerShell運行這些文件之前將這些文件放在一起,因爲我不確定你是否可以控制或準確掌握PowerShell正在做什麼(或者你只是不能有效地與我們溝通)。 – 2009-11-12 03:46:10

2

「GO」是SQL Management Studio使用的分隔符。它不是有效的SQL關鍵字。您可以配置SQL Management Studio,並根據需要將「GO」更改爲「ENGAGE」。

只需從腳本中刪除「GO」即可。