我有几张表需要定期清理(去重)。我想创建一个可以调用的函数并将表名作为参数传递。我坚持使用适当的反引号 (`)、引号 (") 和括号来引用我试图作为函数参数传入的内联脚本变量 ($)。
我倾注了“get-help invoke-sqlcmd -detailed”并尝试了与 -Variable 选项的各种组合,但没有成功。
有人可以帮助我正确的语法吗?
我的精简脚本看起来像这样 -
# Define Server
$server = "AHDC389"
# Define Database
$dbname = "VBP"
# Define Table
$dbtab = "[FacilityBaseline]"
# Import SQL svr handler
Import-Module “sqlps” -DisableNameChecking
# Set env for SQL svr handler
Set-Location SQLSERVER:\SQL\$server\DEFAULT\Databases\$dbname
# Define my SQL query
$query = "SELECT DISTINCT * INTO #Temp FROM `$dbtab; TRUNCATE TABLE `$dbtab;
INSERT INTO `$dbtab SELECT DISTINCT * FROM #Temp;"
# Put Query in a Function for reuse
Function DeDup ([string] $dbtab) {
Invoke-Sqlcmd -Query $query
}
# Call my Function and pass the Table name I want to dedup.
DeDup $dbtab
我得到的错误是“'$dbtab' 附近的语法不正确”或“'dbtab' 脚本变量未定义”