У меня есть файл .sql
, в котором есть несколько скриптов хранимых процедур и функций.PowerShell 2.0 Запустите один файл SQL (с несколькими SP и функциями)
Я не хочу использовать команды Invoke
, потому что мой сервер их не поддерживает.
В настоящее время я использую код ниже, который отлично работает, если в моем файле .sql
имеется только одна хранимая процедура или функция.
$scriptDetail = Get-Content $sqlScriptLocation \t | Out-String
$scriptDetail = $scriptDetail -creplace 'GO',''
$scriptDetail = $scriptDetail -replace 'SET ANSI_NULLS ON',''
$scriptDetail = $scriptDetail -replace 'SET QUOTED_IDENTIFIER ON',''
$ConnectionString = “Server=$dataSource;uid=$user; pwd=$cred;Database=$database;”
$sqlCon = New-Object -TypeName System.Data.SqlClient.SqlConnection -ArgumentList $ConnectionString
$sqlCon.Open()
$sqlCmd = New-Object -TypeName System.Data.SqlClient.SqlCommand
$sqlCmd.Connection = $sqlCon
$sqlCmd.CommandText = $scriptDetail
$sqlCmd.ExecuteNonQuery() \t \t
$sqlCon.Close()
Я замена GO
и две другие команды в коде выше, потому что они casused ошибки как
System.Data.SqlClient.SqlException (0x80131904): Неправильный синтаксис около ' GO '
System.Data.SqlClient.SqlException (0x80131904):' CREATE FUNCTION 'должен быть первым оператором в запросе партия
Необходимо объявить скалярную переменную «@variableName»
$ sqlScriptLocation = "C: \ All_Restore_PROCEDUREFunctiond.sql" – TahirAyoub