2009-11-11 1 views
1

Итак, у меня есть немного проблемы с SQL и Powershell. Существует 2 сценария SQL, один для установки 4 разных глобальных хранимых процедур. Другой, чтобы выполнить их и манипулировать данными, прежде чем возвращать их в PS, чтобы их поместить в файл CSV. Причина, по которой я не помещаю их в один файл, является читабельностью. Процессы охватывают огромные куски sql, и я не могу создавать постоянные процессы в нашей производственной среде.Создание нескольких хранимых процедур из SQL, выполняемых с помощью проблемы с powershell

Проблема, с которой я столкнулся, заключается в том, что сценарий отлично работает в SQL Mgmt Studio, но при запуске PS я получаю несколько ошибок вокруг «go» в скрипте.

Я уверен, что это проблема с форматом, который ожидают классы PS и .NET при выполнении и возврате наборов данных, но ... Я в недоумении.

Я работаю под управлением SQL Server 2005.

Любые идеи или подобные переживания?

ответ

2

Какие ошибки вы получаете? Как вы выполняете каждый файл? GO - пакетный разделитель, понимаемый только определенными инструментами (например, Management Studio); PowerShell не знает, что означает GO. Вы пытались выполнить отдельные скрипты CREATE PROCEDURE, не вызывая команду GO между ними? Если это отдельные команды, это не должно быть проблемой.

+0

Я попытался удалить инструкции go, но получаю «Неправильный синтаксис рядом с ключевым словом« procedure ». Я знаю, что это что-то тривиальное, но я не могу думать о том, что спасти мою жизнь. – CLR

+0

И в этот момент, что именно посылает PowerShell на SQL Server? Похоже, что это не полный скрипт CREATE PROCEDURE. Возможно, вы должны использовать какой-то инструмент для объединения этих файлов, прежде чем PowerShell запускает их, потому что я не уверен, что вы можете контролировать или понимать то, что делает PowerShell (или вы просто не можете сообщить об этом нам эффективно). –

2

«GO» - это разделитель, используемый SQL Management Studio. Это недействительное ключевое слово SQL. Вы можете настроить SQL Management Studio и изменить «GO» на «ENGAGE», если хотите.

Просто удалите «GO» из сценариев.

Смежные вопросы