【发布时间】:2017-05-06 05:05:14
【问题描述】:
我有一个.sql 文件,其中包含多个存储过程和函数脚本。
我不想使用Invoke 命令,因为我的服务器不支持它们。
目前,如果我的.sql 文件只有一个存储过程或函数,我正在使用以下代码。
$scriptDetail = Get-Content $sqlScriptLocation | 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()
$sqlCon.Close()
我正在替换上面代码中的GO 和其他两个命令,因为它们会导致类似的错误
System.Data.SqlClient.SqlException (0x80131904): 'GO' 附近的语法不正确
System.Data.SqlClient.SqlException (0x80131904): 'CREATE FUNCTION' 必须是查询批处理中的第一条语句
必须声明标量变量“@variableName”
【问题讨论】:
-
$sqlScriptLocation = "C:\All_Restore_PROCEDUREFunctiond.sql"
标签: sql sql-server powershell deployment powershell-2.0