Удаление базы данных SQL Server из powershell
у меня есть экземпляр SQL Server на моем локальном компьютере под названием .SC
. Я хочу удалить базу данных из этого экземпляра с помощью скрипта PowerShell. Мне нужно войти в систему с помощью sa
пользователь для моей базы данных.
это код, который у меня есть до сих пор, но он не работает:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")
$srv = new-object Microsoft.SqlServer.Management.Smo.Server(".SC")
$conContext = $srv.ConnectionContext
$conContext.LoginSecure = $FALSE
$conContext.Login = "sa"
$conContext.Password = "MyPlainTextPass"
$srv2 = new-object Microsoft.SqlServer.Management.Smo.Server($conContext)
$srv2.Databases
эта последняя строка должна содержать список баз данных в моем экземпляре SQL... но это дает мне эту ошибку:
следующее исключение при попытке перечислить коллекция: "не удалось подключиться к серверу .Южная Каролина.". В строке:1 char:1 + $srv2.База данных + ~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], ExtendedTypeSystemException + FullyQualifiedErrorId: ExceptionInGetEnumerator
что я делаю не так?
3 ответов
Я нашел другую команду для этого. Это было просто:--2-->
invoke-sqlcmd -ServerInstance ".\SC" -U "sa" -P "MyPlainTextPass" -Query "Drop database MyDatabase;"
со всей подготовкой у вас есть, вы, кажется, забыли на самом деле подключиться к серверу. Обратите внимание, что приведенный ниже пример называет ConnectionContext.Connect()
.
$dbServer = New-Object Microsoft.SqlServer.Management.Smo.Server $server
$smoSecurePassword = $Password | ConvertTo-SecureString -asPlainText -Force
$dbServer.ConnectionContext.LoginSecure = $false
$dbServer.ConnectionContext.set_Login($User)
$dbServer.ConnectionContext.set_SecurePassword($smoSecurePassword)
$dbServer.ConnectionContext.Connect()
$db = $dbServer.Databases
если вы хотите проверить, существует ли база данных (как Лян указал), вы можете изменить последнюю строку с:
$db = $dbServer.Databases[$database]
и проверить, является ли $db
имеет значение.