【发布时间】:2019-08-19 01:36:21
【问题描述】:
所以,我正在尝试使用 Invoke-Sqlcmd-CMDLet 通过 Powershell 运行 SQL 查询。非常直截了当:
Invoke-Sqlcmd -Query $Query -ServerInstance $DBServer -Database $DBName -Username $DBUser -Password $DBPass
($Query 是 "Select * FROM Inventar;")
现在我得到一个错误:
Invoke-Sqlcmd:无效的对象名称“Inventar”。 在行:1 字符:1 + 调用-Sqlcmd -Query $Query -ServerInstance $DBServer -Database $DBName -Usernam ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Invoke-Sqlcmd], SqlPowerShellSqlExecutionException + FullyQualifiedErrorId : SqlError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand
无论如何,我能够使用以下查询运行命令:
SELECT * FROM INFORMATION_SCHEMA.TABLES;
它列出了数据库中的所有表。
从那里我得到了表格“Inventar”,这个问题的错误类型:
Azure SQL: Invalid Object Name using Powershell's "Invoke-sqlcmd" on Adventureworks
除了我已经有了 -Database 属性。
也许有人可以帮助我?
【问题讨论】:
-
您可能需要限定表所在的架构:
schema.Inventar -
我认为架构包含域\用户名,因为它在 TABLE_SCHEMA 下显示如下,但是当我在表前面设置它时 (****** \ ***** *.Inventar)它不会接受“\”,所以我只使用用户名和用户@域进行了尝试,但这也行不通。
-
如果你使用
[****** \ ******].[Inventar]?请注意,它是一个奇怪的架构名称,可能需要修复。 -
你说的完全正确,这很愚蠢。很好,我不是设置它的人 :-) 我已将变量设置为“从“域\用户”.Inventar 中选择 *,这很有效。谢谢!
-
我可以在任何地方将您的评论设置为答案吗?
标签: sql powershell