2009-11-11 86 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”即可。