M R*_*ell 3 sql-server powershell
我正在尝试使用动态表列表从 powershell 运行 sqlpackage,但将表列表放入 var 时出现错误。我需要将表列表放入 var 中,因为它将动态生成。
下面的代码工作得很好:
.\sqlpackage.exe `
/a:Export `
/scs:"Data Source=$($ServerName);Initial Catalog=$($SourceDbName);User ID=my_user;Password=my_password" `
/tf:$BacPacFileName `
/p:TableData=[dbo].[QRTZ_CALENDARS] /p:TableData=[dbo].[QRTZ_SCHEDULER_STATE]
Run Code Online (Sandbox Code Playgroud)
但是,当我将表列表放入 var 中时,它失败了:
$tableList = "/p:TableData=[dbo].[QRTZ_CALENDARS] /p:TableData=[dbo].[QRTZ_SCHEDULER_STATE]"
.\sqlpackage.exe `
/a:Export `
/scs:"Data Source=$($ServerName);Initial Catalog=$($SourceDbName);User ID=my_user;Password=my_password" `
/tf:$BacPacFileName `
$($tableList)
Run Code Online (Sandbox Code Playgroud)
错误文本:
.\sqlpackage.exe:参数“TableData”具有无效值: '[dbo].[QRTZ_CALENDARS] /p:TableData=[dbo].[QRTZ_SCHEDULER_STATE]'。 必须使用两部分表指定从中提取数据的表 名称格式:schema_name.table_identifier。 行:1 字符:1 + .\sqlpackage.exe ` + ~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (参数 'T...ble_identifier.:String) [], RemoteException + FullQualifiedErrorId : NativeCommandError / 附近的语法不正确。
的值作为单个参数$tableList
传递,而不是参数列表。您实际上想要在这里做的事情称为splatting:
$cs = "Data Source=${ServerName};Initial Catalog=${SourceDbName};" +
'User ID=my_user;Password=my_password'
$params = '/a:Export',
"/scs:`"${cs}`"",
"/tf:${BacPacFileName}",
'/p:TableData=[dbo].[QRTZ_CALENDARS]',
'/p:TableData=[dbo].[QRTZ_SCHEDULER_STATE]'
.\sqlpackage.exe @params
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1626 次 |
最近记录: |