我正在尝试使用
从github读取SQL脚本文件Invoke-WebRequest -Uri $ScriptUrl -UseBasicParsing
,然后尝试在我的本地SQL Server使用
执行此脚本。Invoke-Sqlcmd -ServerInstance $sqlinstance -database $db -query $qry
但是我得到错误:
Invoke-SqlCmd: ' ?'
我试图使用
Invoke-RestMethod -uri $ScriptUrl -UseBasicParsing
但这次也遇到了同样的问题。
我找到了这个问题的修复方法。我使用Remove(0,1)作为'?’开头附有标记。让我来展示一下cmdlet:
Add-PSSnapin SqlServerCmdletSnapin100
Add-PSSnapin SqlServerProviderSnapin100
#set variables
$GitRepository = "/XYZ/ProjectName/main/DB"
$GitManifestArray =@("Script1.sql","Script2.sql","Script3.sql","StoredProcedures.sql","Script4.sql","Script5.sql")
$SQLInstances = ".SQLEXPRESS"
ForEach ($SQLInstance in $SQLInstances.Split(","))
{
echo "Running Scripts on " $SQLInstance
ForEach ($file in $GitManifestArray)
{
$ScriptURL = ("https://raw.githubusercontent.com" +
$GitRepository+"/"+$file.Replace("/blob/","/"))
$ScriptFromGit = Invoke-WebRequest -Uri $ScriptURL -UseBasicParsing
$qry=$($ScriptFromGit.Content).Remove(0,1)
Invoke-Sqlcmd -ServerInstance $SQLInstance -Query $qry
}}
但我仍然不知道为什么?'被添加到Script1的开头。sql(对我来说是Database.sql).