2016-02-22 3 views
0

Когда я вручную применяю SQL-файл, как задание переиндексации, все работает отлично. Я хочу автоматизировать применение SQL-файлов в powershell, но при использовании Get-Content я получаю всевозможные неправильные синтаксические ошибки. Есть ли лучший способ получить содержимое файлов SQL, а затем применить их на удаленном сервере, который не переформатирует код до того момента, когда я получу неправильные синтаксические ошибки.Получение ошибок при попытке применить файлы SQL с помощью PowerShell

Generic Я получаю ошибку (любой синтаксис может выдавать ошибку - пс, кажется, неправильно применяя синтаксис при получении содержимого файла):

Неправильный синтаксис около [ничего]

Примечание: все GO s были удалены, поэтому это не связано с ними; он может выдать ошибку из-за начала, goto и т. д. Причина в том, что он не сохраняет способ создания файла SQL.

Update

Файлы SQL может быть что угодно, от добавления разрешений для создания индекса для построения таблицы для создания хранимой процедуры. У меня около 100 файлов SQL. Если я их вручную выполнил, все они работают, поэтому это не связано с сильным синтаксисом SQL, но связано с тем, как Powershell читает синтаксис SQL и запускает его как команду.

Ответ

Ниже, кажется, работает:

Get-Content $file -Raw 
+1

Вы можете показать код 'SQL' –

+0

Это может быть что угодно: от добавления разрешений на создание индекса для создания таблицы для создания хранимой процедуры. У меня около 100 файлов SQL. Если я их вручную выполнил, все они работают, поэтому это не связано с сильным синтаксисом SQL, но связано с тем, как Powershell читает синтаксис SQL и запускает его как команду. – DoubleVu

+1

Пожалуйста, посмотрел код ur powershell? – Hiten004

ответ

1

, но я получаю все виды неправильных синтаксических ошибок при использовании Get-Content

Get-Content будет возвращать массив строки s. То, что вам нужно использовать, - это одна строка. Если у вас есть хотя бы PowerShell 3.0, то переключатель -Raw - это то, что вы хотите.

Get-Content $file -Raw 

Более ранние версии вы можете использовать

Get-Content $file | Out-String 

Для чрезвычайно больших файлов, которые вы можете использовать .Net StreamReader, но я не думаю, что будет требоваться здесь.

1

Как вы применяете SQL-файл? Если вы передаете содержимое файла в Invoke-SQLCmd, вам нужно будет использовать -Raw, как @Matt.

Однако вам даже не нужно это делать. Invoke-SQLCmd позволяет передавать имя файла прямо в него. Используйте параметр -Inputfile.

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