sql-server - sqlpackage表列表
问题描述
我正在尝试使用动态表列表从 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]
但是,当我将表列表放入 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)
错误文字:
.\sqlpackage.exe:参数“TableData”的值无效: '[dbo].[QRTZ_CALENDARS] /p:TableData=[dbo].[QRTZ_SCHEDULER_STATE]'。 必须使用两部分表指定要从中提取数据的表 名称格式:schema_name.table_identifier。 在行:1 字符:1 + .\sqlpackage.exe ` +~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (Argument 'T...ble_identifier.:String) [], RemoteException + FullyQualifiedErrorId : 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
推荐阅读
- r - 重复测量:如何使用初始测量来估计基于时间差的后续测量
- python - 如何使用 Selenium 和 Python 从 GoogleForm 非选择下拉列表中选择一个选项
- javascript - Vue.js如何将索引添加到模态窗口
- c++ - 在 Windows 中限制帧率
- macos - 修复文件访问权限
- html - 如何通过使用 CSS 将形状组合成一个来创建云?
- javascript - 单击时隐藏/显示部分表单。如何调试?
- ruby-on-rails - 如何通过从其他表中查找 id 来应用范围
- python - 以编程方式设置python路径
- javascript - 通过 Js 检索共享点列表