Сценарий Powershell с SQL Server 2012/2014
У меня есть сценарий PowerShell, который хорошо работает, когда я запускаю его на сервере с экземпляром SQL Server по умолчанию (MSSQLSERVER
) но тот же сценарий завершается ошибкой на сервере с именованным экземпляром (MSSQL$instance
)
Для экземпляра по умолчанию (MSSQLSERVER
)
[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")
$service = Get-service -name 'MSSQLSERVER'
$status = $service.status
$CreateDB = "db-Test"
if ( $status -eq "Running" )
{
'Success' | Out-File -FilePath c:\sqltest.log -Encoding ASCII
$srv = new-Object Microsoft.SqlServer.Management.Smo.Server("(local)")
$db = New-Object Microsoft.SqlServer.Management.Smo.Database($srv, "$CreateDB")
$db.Create()
$db.CreateDate
}
else
{
'Failed' | Out-File -FilePath c:\sqltest.log -Encoding ASCII
}
Выше сценарий работает очень хорошо. Но ниже скрипт выдает ошибку:
Для именованного экземпляра:
[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")
$service = Get-service -name 'MSSQL$instancename'
$status = $service.status
$CreateDB = "db-Test"
if ( $status -eq "Running" )
{
'Success' | Out-File -FilePath c:\sqltest.log -Encoding ASCII
$srv = new-Object Microsoft.SqlServer.Management.Smo.Server("(local)")
$db = New-Object Microsoft.SqlServer.Management.Smo.Database($srv, "$CreateDB")
$db.Create()
$db.CreateDate
}
else
{
'Failed' | Out-File -FilePath c:\sqltest.log -Encoding ASCII
}
Выше скрипт для именованного экземпляра SQL выдает ошибку ниже:
New-Object: Исключение вызывает ".ctor" с аргументом (ами) "2": "Ошибка SetParent для базы данных" Netmagic-Test "."
В C: \ mssql-test.ps1: 11 char: 7
+ $ db = New-Object Microsoft.SqlServer.Management.Smo.Database ($ srv, "$ CreateDB")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: InvalidOperation: (:) [New-Object], MethodInvocationException
+ FullyQualifiedErrorId: ConstructorInvokedThrowException, Microsoft.PowerShell.Commands.NewObjectCommandВы не можете вызвать метод для выражения с нулевым значением.
В C: \ mssql-test.ps1: 12 char: 1
+ $ db.Create ()
+ ~~~~~~~~~~~~
+ CategoryInfo: InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId: InvokeMethodOnNull
Спасибо,
вирусный