【问题标题】:Powershell Invoke-SQLCmd and SQLPSPowershell Invoke-SQLCmd 和 SQLPS
【发布时间】:2016-01-15 08:10:53
【问题描述】:

Windows 7 工作站 时尚 3.0 SS 2012 SP1

摘要:
开发人员 1 无法运行 Invoke-SQLCmd
安装类似 SS Client 工具的 Developer 2 可以运行 Invoke-SQLCmd
开发者 1 无法运行 Import-Module SQLPS

当我尝试从笔记本电脑运行查询时,如下所示:

Invoke-sqlcmd -ServerInstance <ServerName> -Query "Select top 10 * from <SomeTable>;"

我收到以下错误:

Invoke-sqlcmd : The 'Invoke-sqlcmd' command was found in the module 'SQLPS', 
but the module could not be loaded. For more information, run 'Import-Module 
SQLPS'. 

另一个开发者可以成功运行命令,我们都有一个本地

由于明显的原因,我无法在我的机器上运行 Import-Module sqlps - ExecutionPolicy 受到限制。

我不确定为什么其他开发人员机器允许查询,而我的机器不允许。这是 SQL 客户端安装问题吗?

【问题讨论】:

  • 其他开发者是否有相同的执行策略?只有在运行脚本时,这才真正重要。如果您无法从 powershell 命令行运行 invoke-sqlcmd,您确定您安装了 SQL 管理工具吗?
  • 运行此命令以确保您甚至安装了 SQLPS:Get-Module –ListAvailable -name SQLPS
  • 我运行了 Get-Module –ListAvailable -name SQLPS 并且似乎 SQLPS 在我的 C:\Program Files (x86)\Microsoft SQL Server\110\Tools\PowerShell\Modules 中可用跨度>
  • 这是一个类似的问题,但似乎没有解决:stackoverflow.com/questions/31343611/…
  • 我们在这里的机器上遇到了同样的问题。一切似乎都安装正确。我们有一台工作机器与非工作机器进行比较。在工作中,当我们列出可用模块时,我们会在“ExportedCommands”列中看到一些东西。在非工作的一个上,SQLPS 和 SQLASCMDLETS 模块出现,但 ExportedCommands 列是空的。两台计算机之间的一切看起来都是一样的。

标签: powershell import-module sqlps executionpolicy


【解决方案1】:

这一切都与微软有关。他们拥有最好的技术,但不仅仅是使用他们工具的一种方式和直接途径。 :( 您可以使用 SMO 对象与您的数据库进行交互。 (您可以将它与 C#/VB.net/PowerShell 一起使用):$ 您可以使用 SQLPS 您可以使用 Invoke-SQLCmd

只需运行以下脚本以确保您的机器中安装了功能包并使用比其他解决方案更易于使用的 SQLPS(个人喜好)

Install-module -Name SqlServer -Scope CurrentUser

# Import the SQL Server Module.    
Import-Module Sqlps -DisableNameChecking;

# To check whether the module is installed.
Get-Module -ListAvailable -Name Sqlps;
cd SQLSERVER:\SQL

【讨论】:

  • 模块:SQLPS:此模块包含在 SQL Server 安装中(为了向后兼容),但不再更新。最新的 PowerShell 模块是 SqlServer 模块。 SqlServer:此模块包括支持最新 SQL 功能的新 cmdlet。该模块还包含 SQLPS 中 cmdlet 的更新版本。 docs.microsoft.com/en-us/sql/powershell/…
  • 将此行添加到我的脚本中为我修复了它:Import-Module Sqlps -DisableNameChecking;
【解决方案2】:

也许你可以试试下面的 添加-PSSnapin SqlServerCmdletSnapin100 添加-PSSnapin SqlServerProviderSnapin100 虽然我注意到我的本地没有安装这些管理单元,但我可以使用 SQLPS,但这可能是因为执行策略是不受限制的。 来源:SQL Authority

更新:按以下顺序下载并安装

  1. Microsoft® SQL Server® 2012 的 Microsoft® System CLR 类型
  2. Microsoft® SQL Server® 2012 共享管理对象 Microsoft®
  3. 适用于 Microsoft® SQL Server® 2012 的 Windows PowerShell 扩展

链接 - https://www.microsoft.com/en-us/download/details.aspx?id=29065

【讨论】:

  • 这些命令对 SQL Server 2012 无效或不可用。“Import-Module SQLPS”应该是同一件事,但在我的情况下没有帮助(在原始海报的情况下也没有) )。
  • 我很抱歉,但从链接看来,作者指的是 SQL Server 2012,并且与 Import-Module 有同样的问题。
  • 嘿,我刚刚意识到我从来没有时间更新对我有用的答案。希望这会有所帮助。
【解决方案3】:

我发现自己处于同样的境地。 有两种产品:SQLPS 模块SQLServer 模块

SQLPS 会在您安装较旧的 SQL 客户端时自动安装。

如果您无法在那里安装 SQL 客户端(例如 PROD 环境),它也可以从该安装中提取并复制到另一台主机上。您有here“详细信息”段落中的步骤

SQLServer Module 可以通过 powershell 命令安装 但它需要 powershell v5 。见here详情

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 2014-04-15
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多