我一直在使用MSDN文章Enable or Disable a Server Network Protocol (SQL Server PowerShell),并且遇到了问题:
$uri = "ManagedComputer[@Name='<computer_name>']/ ServerInstance[@Name='MSSQLSERVER']/ServerProtocol[@Name='Np']"
我得到的错误信息是:
Exception calling "GetSmoObject" with "1" argument(s): "Attempt to retrieve data for object failed for ManagedComputer '<computer_name>'."
At line:1 char:24
+ $Np = $wmi.GetSmoObject <<<< ($uri)
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
我正在用我的电脑名称替换<computer_name>
。我也尝试从命令中省略<computer_name>
(我正在尝试配置运行脚本的机器),并且我得到了相同的错误,包括它在显示正确的<computer_name>
错误。我也尝试省略第一个/
上的所有内容,但没有运气。
我尝试过使用cmd
,powershell
和sqlps
。我以管理员身份登录,并且我的所有窗口都显示管理员位于顶部,所以我认为这意味着我以管理员身份运行命令。
我在安装了MS Sql Server 2012的Windows Server 2012上运行。
我的长期目标是创建一个实用程序,在新机器上设置SQL Server,而无需用户交互。
如何使用MSDN文章中的代码行解决我的问题?
答案 0 :(得分:0)
我在powershell脚本的开头包含了这一行:
Import-Module "sqlps" -DisableNamechecking
然后又回到明确地放入<computer_name>
,现在它可以正常工作。
我认为我因为没有执行导入模块而遇到错误,但是当我导入它时,我开始将计算机名留空,并开始收到XPath错误。
答案 1 :(得分:0)
如果您像我一样无法使用SQLExpress(版本12 = 2014):
查看此注册表位置:
计算机\ HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ MSSQL12.SQLEXPRESS \ MSSQLServer \ SuperSocketNetLib \ Tcp
管理器显示该值,但是我无法在Win10-UI问题中更改这些值。 C:\ Windows \ System32 \ SQLServerManager12.msc