use*_*342 10 sql-server powershell database-administration
我在本地计算机上有一个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
Run Code Online (Sandbox Code Playgroud)
最后一行应该列出我的SQL实例中的数据库......但它给了我这个错误:
尝试枚举集合时发生以下异常:"无法连接到服务器.\ SC.".在行:1 char:1 + $ srv2.Databases + ~~~~~~~~~~~~~~~ + CategoryInfo:NotSpecified:(:) [],ExtendedTypeSystemException + FullyQualifiedErrorId:ExceptionInGetEnumerator
我究竟做错了什么?
use*_*342 16
我找到了一个不同的命令来做到这一点.它很简单:
invoke-sqlcmd -ServerInstance ".\SC" -U "sa" -P "MyPlainTextPass" -Query "Drop database MyDatabase;"
Run Code Online (Sandbox Code Playgroud)
使它对我有用的唯一方法是通过以下命令强制关闭与数据库的任何其他连接:
Invoke-SqlCmd -ServerInstance $Server @Auth `
-Query "IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name ='MyDBName') `
BEGIN `
ALTER DATABASE [MyDBName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; `
DROP DATABASE [MyDBName]; `
END;" `
-Verbose
Run Code Online (Sandbox Code Playgroud)
反引号 (`) 是必需的,否则必须内联该命令
| 归档时间: |
|
| 查看次数: |
14898 次 |
| 最近记录: |