Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 已安装SQL,但powershell未拾取sqlps命令(如调用sqlcmd)_Sql Server_Powershell_Sqlps_Invoke Sqlcmd - Fatal编程技术网

Sql server 已安装SQL,但powershell未拾取sqlps命令(如调用sqlcmd)

Sql server 已安装SQL,但powershell未拾取sqlps命令(如调用sqlcmd),sql-server,powershell,sqlps,invoke-sqlcmd,Sql Server,Powershell,Sqlps,Invoke Sqlcmd,我用巧克力安装了ms sql server: choco install SQLServer2012DeveloperEditionWithSP1 -y -f -source 'http://choco.developers.tcpl.ca/chocolatey' -c "$env:WINDIR\temp" SQL似乎在powershell之外安装并运行良好,而powershell不起作用。我可以看到具有以下内容的sqlps模块: Get-Module -listavailable 但是命

我用巧克力安装了ms sql server:

choco install SQLServer2012DeveloperEditionWithSP1 -y -f -source 'http://choco.developers.tcpl.ca/chocolatey' -c "$env:WINDIR\temp"
SQL似乎在powershell之外安装并运行良好,而powershell不起作用。我可以看到具有以下内容的sqlps模块:

Get-Module -listavailable

但是命令似乎丢失了。我没有invoke sqlcmd等。理论上,如果我安装了模块,我应该可以访问它们,但是当我尝试导入模块sqlps时,我遇到了一个错误,关于没有sqlserver驱动器:

PS C:\WINDOWS\system32> Import-Module SQLPS
Set-Location : Cannot find drive. A drive with the name 'SQLSERVER' does not exist.
At C:\Program Files (x86)\Microsoft SQL Server\110\Tools\PowerShell\Modules\SQLPS\SqlPsPostScript.ps1:1 char:1
+ Set-Location SQLSERVER:
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : ObjectNotFound: (SQLSERVER:String) [Set-Location], DriveNotFoundException
+ FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.SetLocationCommand
我认识我们小组中的几个人,他们完成了这些步骤,并使正确的sql ps设置正常工作


任何提示或想法都会非常有用。谢谢。

如前所述,这里是您现在应该参考的链接

Jarret给出了一个答案。简单地加载模块实际上没有帮助。这些命令集必须在此之后运行

Push-Location
cd $sqlpsPath
Add-PSSnapin SqlServerCmdletSnapin100
Add-PSSnapin SqlServerProviderSnapin100
Update-TypeData -PrependPath SQLProvider.Types.ps1xml 
update-FormatData -prependpath SQLProvider.Format.ps1xml 
Pop-Location
希望对你有帮助。

你好

我猜您正在使用SQL Server 2017,因为这是2017年的常见问题,我将在下面解释。我不确定使用的是什么版本,因为这个问题有点老了,是在5月2日17点22分58分提出的

您得到的错误包括基本问题

设置位置:找不到驱动器。名为“SQLSERVER”的驱动器不存在

它并不是说模块“SQLPS”不存在,而是说模块“SQLSERVER”不存在

解释是,在2016年之前,SqlServer安装中包括SQLPS模块,但我们使用的PowerShell模块是“SqlServer”模块SqlServer的模块包含在SQLServerManagementStudio(SSMS)16.x中,但是如果您使用的是SSMS2017(17.x),那么

安装过程是执行以下命令:

Install-Module -Name SqlServer
如果出现类似
PackageManagement\Install Package的错误:此系统上已提供以下命令:…

然后,您可以使用以下参数强制安装:
-Force
-AllowClobber

由于我不熟悉您的系统,我不会建议您做什么,也不会说您是否应该强制安装,但在大多数情况下,我可能会这样做(根据我在本线程中注意到的信息)

为了确认模块已被替换,您可以执行以下命令:

Get-Module -Name SqlServer -listAvailable | select Name, ModuleType, Version
使用上面的命令检查安装的版本,并在以下命令中使用它以导入最新版本(在我编写此答案时,版本为21.0.17279):


就这些。。。如果一切顺利,那么您应该能够使用所有SQL Server PowerShell命令

作为未来读者的补充,我正试图通过PowerShell创建SQL备份。cmdlet在
管理员
帐户下正常运行,但在常规用户帐户下运行脚本时,出现以下错误:

找不到名为“SqlServer”的提供程序

谷歌搜索这个问题把我带到了这里,但我的问题的答案出现在这里的一个论坛帖子上:

我遇到了一个奇怪的问题,希望有人能解决这个问题

微软SQL Server 2014(SP2-GDR)(KB4505217)-12.0.5223.6(X64)(是的,我知道……它是一个开发服务器)

Windows 2012 R2

PS4.0版

我在PS脚本中加载SQL程序集

[System.Reflection.Assembly]::LoadWithPartialName(“Microsoft.SqlServer.SMO”)| Out Null

[System.Reflection.Assembly]::LoadWithPartialName(“Microsoft.SqlServer.SmoExtended”)| Out Null

如果在加载程序集后立即运行此操作,则以下操作将失败

获取子项SQLSERVER:\SQL$env:COMPUTERNAME

Get ChildItem:找不到驱动器。名为“SQLSERVER”的驱动器不存在

如果我先运行以下命令,我很好

调用Sqlcmd-Query“从sys.sysobjects中选择TOP 1*”| Out Null

获取子项SQLSERVER:\SQL$env:COMPUTERNAME

我只是想修正一下,我只需要跑步

调用Sqlcmd | Out Null

这似乎将程序集完全加载到内存中,之后一切正常

因此,我在脚本中添加了以下内容:

下面的SQL cmdlet需要从系统导入一些dll #在非管理员帐户下运行时,有时不会加载这些文件(无法找到名为“SqlServer”的提供程序) #运行这个虚拟命令似乎可以加载所有需要的DLL #另见:https://www.sqlservercentral.com/forums/topic/unable-access-sql-provider-in-powershell-without-running-an-invoke-sqlcmd-first 调用Sqlcmd | Out Null 看起来像是不应该丢失的有价值的信息,所以我想在谷歌搜索特定错误时,我会把它放在最高的位置


有人可能会说,安装模块而不是这个虚拟方法会更干净。

看到这个了吗?好的,我只看到了SqlServerProviderSnapin110,我认为这是一样的。然后我就能够执行这些步骤(没有$sqlPath,但在C:\Program files(x86)\Microsoft SQL Server\110\Tools\PowerShell\Modules\SQLPS中有适当的*.ps1xm1文件)。但是,在运行这些步骤之后,仍然没有调用sqlcmd:(我想我仍然得到了您所说的错误:在导入(导入模块SQLPS)上,我仍然得到“设置位置:找不到驱动器。名为“SQLSERVER”的驱动器不存在。”因此,我尝试了几种不同版本的sql,这似乎没有问题。这让我觉得它是powershell…但当然我不能卸载powershell来解决这个问题。我想知道是否有其他方法可以重置powershell…如果我使用“powershell-版本2”之后,我终于可以导入模块并运行invoke sqlcmd。请注意,我不太喜欢这种方式。这是一个非常糟糕的主意。请卸载模块,然后升级到版本(如果是uvr)
Install-Module -Name SqlServer -Force –AllowClobber
Get-Module -Name SqlServer -listAvailable | select Name, ModuleType, Version
Import-Module SqlServer -Version 21.0.17279