【发布时间】:2017-06-23 22:43:52
【问题描述】:
我正在尝试创建一个用于创建数据库的 powershell 脚本。 createDb.ps1 的相关部分是:
param([string] $server,
[string] $dbName)
$scriptpath = "C:\script\path"
$cDb = "master"
$line = "script.sql"
$outfile = "\log.txt"
$dbDir = "C:\database path\"
$command = @"
sqlcmd -b -S $server -d $cDb -i '$scriptpath\$line' -o '.$outfile' -v dbLocation='$dbDir' dbName=$dbName
"@
Invoke-Expression $command
我使用以下参数调用脚本:
createDb.ps1 -server localhost -dbName TestDb
但是,当我运行它时,我收到以下错误:
sqlcmd: 'dbDir=C:\database path\" dbName=TestDb': Invalid argument. Enter '-?' for help.
当我从命令行执行以下命令时,一切都按预期工作:
sqlcmd -b -S localhost -d master -i "C:\script\path\script.sql" -o ".\log.txt" -v dbLocation="C:\database path\" dbName=TestDb
【问题讨论】:
-
不知道你为什么要使用 PowerShell,但是当你可以使用 MSSQL PowerShell 扩展 (SQLPS) 时,却“向 SQLCMD 发起攻击”...?
-
如果我没记错的话,您需要在默认 SQL Server 安装之外进行额外安装才能使用它。而 sqlcmd 附带默认的 SQL Server 安装。由于该脚本可以在许多服务器上运行,我想尽量减少所需的设置。如果不是这种情况,那么这可能是一个不错的选择。
标签: powershell sqlcmd