通过PowerShell获取SQL命名实例名称
我有一个SQL作业,它(除其他外)处理以SQL命名实例命名的文件夹中的一些文件 以下是SQL作业中的相关代码:通过PowerShell获取SQL命名实例名称,sql,powershell,named-instance,Sql,Powershell,Named Instance,我有一个SQL作业,它(除其他外)处理以SQL命名实例命名的文件夹中的一些文件 以下是SQL作业中的相关代码: EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Do Stuff', @step_id=1, 废话废话 @os_run_priority=0, @subsystem=N'PowerShell', @command= $dir = "\\SomeNetworkLocation\" +
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId,
@step_name=N'Do Stuff',
@step_id=1,
废话废话
@os_run_priority=0, @subsystem=N'PowerShell',
@command= $dir = "\\SomeNetworkLocation\" + $env:computername
#do stuff with $dir
因此,这一部分,$dir=“\\SomeNetworkLocation\”+$env:computername
,获取计算机名并生成我的文件位置的完整路径,这对我的大多数服务器都很有用。我遇到的问题是,我的一些服务器是命名实例,因此拉取服务器名称不够好,因为它只返回命名实例的第一部分。我需要它以某种方式获取$env:computername+'.'+$MyInstance
。SQL上命名实例的格式为MyServer\MyInstance
,如果这样有帮助的话
是否有办法通过PowerShell获取此作业所在实例的名称?如果您使用的是SQL作业,则可以通过使用获取实例名称以及服务器名称来查找服务器实例 作为一个起点,我认为你可以:
@os_run_priority=0, @subsystem=N'PowerShell',
@command= $dir = "\\SomeNetworkLocation\" + $(ESCAPE_DQUOTE(A-SRV)) + "_" + $(ESCAPE_DQUOTE(INST))
#do stuff with $dir
我个人会设置一个PowerShell脚本,它接受参数
-Server
和ServerInstance
,因为默认实例始终是MSSQLSERVER,您可能需要添加一两行代码来处理这个问题。您试过使用Get-SqlInstance命令吗?@Alexerm是的,我一直在玩这个Get-SqlInstance-ServerInstance“MyServer”
错误,无法找到与参数名称“ServerInstance”匹配的参数。和Get-SqlInstance-Credential-ServerInstance“TECHPCJRF03”
提示我登录,但是,即使登录失败,请使用验证目标服务器是否可访问,以及SQL server云适配器服务是否正在运行。
但它是可访问的。我现在登录了!PowerShell不知道实例名称,因为它将在计算机上下文中运行(因此,$env:computername
可以工作),也不知道实例名称,因为在特定的计算机上可能有多个命名实例。您必须从SQL脚本中提取命名实例,并将其作为参数传递到PowerShell作业中。@HAL9256这很有意义。是否有方法将SELECT@@servername
的结果传递到作业的PowerShell部分?PowerShell都包含在我上面发布的@命令中。太棒了!现在就开始测试。