【问题标题】:Why doesn't invoke-sqlcmd return ALL the query data为什么invoke-sqlcmd 不返回所有查询数据
【发布时间】:2020-04-30 17:00:59
【问题描述】:

我在 SQL Server 2014 中运行以下查询:

SELECT
    dp.class_desc, dp.permission_name, dp.state_desc,
    ObjectName = OBJECT_NAME(major_id), 
    GranteeName = grantee.name, GrantorName = grantor.name
FROM 
    sys.database_permissions dp
JOIN
    sys.database_principals grantee ON dp.grantee_principal_id = grantee.principal_id
JOIN 
    sys.database_principals grantor ON dp.grantor_principal_id = grantor.principal_id

我得到了我期望的所有行。我创建了测试数据库用户和角色,我看到了它们。

当我在 powershell 中运行它时:

(invoke-sqlcmd 'select dp.class_desc, dp.permission_name, dp.state_desc,
ObjectName = OBJECT_NAME(major_id), GranteeName = grantee.name, GrantorName = grantor.name
FROM sys.database_permissions dp
JOIN sys.database_principals grantee on dp.grantee_principal_id = grantee.principal_id
JOIN sys.database_principals grantor on dp.grantor_principal_id = grantor.principal_id -ServerInstance Blah\blah)

我没有在输出中看到我的测试数据库用户/角色。我正在使用 Windows 身份验证。同一用户正在运行 PowerShell 命令并通过 SSMS 进行连接。此外,在我的 PowerShell 输出中,我看到禁用的帐户。当我在 SSMS 中运行查询时,我没有看到。

关于如何从 PowerShell 中获得与从 SSMS 中获得的结果相同的任何建议?

【问题讨论】:

  • 第二个代码中缺少单引号。
  • 这是复制/粘贴到网页中的错误。单引号在代码中。谢谢

标签: sql-server powershell invoke-sqlcmd


【解决方案1】:

我认为您不会针对同一个数据库运行这两个命令。即在 SSMS 中,您正在针对所需的数据库运行它,但在您的 Invoke-SqlCmd 命令中,您没有指定您正在针对哪个数据库运行。它将默认为数据库master,这就是您看到“禁用”帐户的原因。尝试指定-Database 参数。

(invoke-sqlcmd 'select dp.class_desc, dp.permission_name, dp.state_desc,
ObjectName = OBJECT_NAME(major_id), GranteeName = grantee.name, GrantorName = grantor.name
FROM sys.database_permissions dp
JOIN sys.database_principals grantee on dp.grantee_principal_id = grantee.principal_id
JOIN sys.database_principals grantor on dp.grantor_principal_id = grantor.principal_id' -ServerInstance 'Blah\blah' -Database 'MyDatabase')

【讨论】:

  • 谢谢你就是这样。 SSMS 向我展示了所有数据库。 Invoke-sqlcmd 只是显示大师。我在命令中添加了一个数据库名称,并看到了我的测试用户和角色。我给你投了赞成票,但我没有足够的积分来改变投票
  • 优秀。作为提问者,您有特权将答案标记为Accepted,这会有所帮助。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-07-06
  • 2015-04-07
  • 2018-04-08
  • 2020-11-22
  • 2021-10-26
  • 2018-01-24
  • 2015-03-09
  • 1970-01-01
相关资源
最近更新 更多