我用巧克力安装了MS SQL Server:
choco install SQLServer2012DeveloperEditionWithSP1 -y -f -source 'http://choco.developers.tcpl.ca/chocolatey' -c "$env:WINDIRtemp"
SQL似乎已安装,并且在PowerShell之外不起作用,并且在不起作用的情况下运行良好。我可以看到:
看到SQLPS模块Get-Module -listavailable
...
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Manifest 1.0 SQLASCMDLETS
Manifest 1.0 SQLPS
命令似乎缺少。从理论上讲,我没有Invoke-SQLCMD等。如果我安装模块,我应该可以访问它们,但是当我尝试导入Module SQLPS,但是我会发现没有SQLServer驱动器的错误:
PS C:WINDOWSsystem32> Import-Module SQLPS
Set-Location : Cannot find drive. A drive with the name 'SQLSERVER' does not exist.
At C:Program Files (x86)Microsoft SQL Server110ToolsPowerShellModulesSQLPSSqlPsPostScript.ps1:1 char:1
+ Set-Location SQLSERVER:
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (SQLSERVER:String) [Set-Location], DriveNotFoundException
+ FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.SetLocationCommand
我认识我的小组中的几个人,他们经历了这些步骤,并且确实获得了正确的SQL PS设置。
任何提示或想法都会非常有帮助。谢谢。
美好的一天,
我猜您正在使用SQL Server 2017,因为这是2017年的常见问题,正如我将在下面解释的那样。我不确定使用了哪种版本,因为这个问题有些旧,并于17年5月2日在22:58
问您获得的错误包括基本问题
设置安置:找不到驱动器。没有名称" SQLServer"的驱动器。
它不说模块" sqlps"不存在,而是模块" sqlserver"不存在
的解释是,直到2016年SQLPS模块已包含在SQL Server安装中,但是我们使用的PowerShell模块是" SQLServer"模块。SQL Server Management Studio(SSMS(16.x包含" SQLServer"模块,但是如果您使用的是SSMS 2017(17.X(,则必须从PowerShell画廊安装" SQLServer"模块。
安装它的过程是执行命令:
Install-Module -Name SqlServer
如果您遇到了诸如PackageManagementInstall-Package : The following commands are already available on this system:...
然后您可以使用参数执行安装:-Force
和–AllowClobber
由于我不熟悉您的系统,我不会建议您该怎么做或说您是否应该执行安装,但这是我在大多数情况下可能会做的解决方案这(根据我在此线程中注意到的信息(
Install-Module -Name SqlServer -Force –AllowClobber
为了确认模块是相反,您可以执行以下命令:
Get-Module -Name SqlServer -listAvailable | select Name, ModuleType, Version
使用上面命令检查安装版本,并在以下命令中使用它以导入最新版本(当时我编写此答案时,版本为21.0.17279(:
Import-Module SqlServer -Version 21.0.17279
这就是全部...如果一切顺利,那么您应该能够使用所有SQL Server PowerShell命令
只是对未来读者的旁注,我试图通过PowerShell创建SQL备份。CMDLET在Administrator
帐户下应运行,但是在常规用户帐户下运行脚本,我收到以下错误:
Cannot find a provider with the name 'SqlServer'
谷歌搜索这个问题将我带到这里,但是我的问题的答案是在这里的论坛上:https://social.technet.microsoft.com/forums/windowsserver/en-us/626bb81a-00ba-00ba-4239-ad0a-d0a-fec32546350a/check-fec3546350a/check-if-if-if-fiv-if-drive-drive-drive-exists-exists-exists-exists-exists-exists-exists-exists-if-not-if-not-forum = forum = forum = winservorpowerpowerpowerpow/pp>
我遇到了一个奇怪的问题,希望有人可以解决这个问题。
Microsoft SQL Server 2014(SP2 -GDR((KB4505217(-12.0.5223.6(x64((是的,我知道...这是Dev Server(
Windows 2012 R2
psversion 4.0
我在PS脚本中加载SQL组件
[System.Reflection.sembly] :: LoadWithPartialName(Microsoft.sqlserver.smo(|北极
[System.Reflection.sembly] :: loadWithPartialName(Microsoft.sqlserver.smoextended&quort&quot''(|北极
如果我在加载程序集后立即运行
,以下会失败Get-Childitem SQLServer: sql $ env:computername
Get-Childitem:找不到驱动器。没有名称" SQLServer"的驱动器。
如果我先运行以下,我很好。
Indoke -sqlcmd -query'从sys.sysobjects中选择顶部1 *|北极
Get-Childitem SQLServer: sql $ env:computername
我只是想修改我只需要运行
Indoke-SQLCMD |北极
这似乎随后将组件完全加载到内存中,并且一切都可以。
所以我将其添加到脚本中:
# SQL cmdlets below need some dll imports from system
# These do not get loaded sometime when running under an non-admin account (Cannof find a provider with the name 'SqlServer')
# Running this dummy command seems to load all needed dlls
# Also see: https://www.sqlservercentral.com/forums/topic/unable-access-sql-provider-in-powershell-without-running-an-invoke-sqlcmd-first
Invoke-Sqlcmd | Out-Null
似乎不应该丢失的宝贵信息,所以我认为我会以最高的速度发布它,因此在搜索特定错误时。
一个人可能会说安装模块而不是这种虚拟方法会更干净。
正如指向的,这是您现在应该引用的链接。
msdn链接
运行SQL Server PowerShell
找不到路径'sqlserver'问题
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
希望它有帮助。