我试图更改此用户拥有的"架构"在使用以下powershell脚本的数据库上:
$dbname = "mydb"
$sql_server = "mysqlserver"
$username = "myuser"
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null
$server = New-Object ("Microsoft.SqlServer.Management.Smo.Server")($sql_server)
$db = $server.Databases["$dbname"]
$login = $server.Logins[$username]
$roleName = "db_owner"
if(-not $db.Users.Contains($login.Name)){
$user = New-Object('Microsoft.SqlServer.Management.Smo.User') $db, $login.Name
$user.Login = $login.Name
$user.create();
}
$user = $db.Users[$login.Name]
$role = $db.Roles[$roleName]
$role.AddMember($user.Name);
$schema = $db.Schemas["dbo"]
$schema.Owner = "myuser"
$schema.Alter()
当我到达$ schema.Alter()时,我收到以下错误:
Exception calling "Alter" with "0" argument(s): "Alter failed for Schema 'dbo'. "
At line:1 char:1
+ $schema.Alter()
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : FailedOperationException
我得到的印象是Alter Method正在寻找更多参数,但我不确定它想要什么参数。任何人都有任何建议我做错了吗?
由于 布拉德
答案 0 :(得分:1)
根据我的经验,顶级异常没有帮助。我处理此问题的典型方法类似$e = $error[0];
,然后调用$e.Exception
,$e.Exception.InnerException
,$e.Exception.InnerException.InnerException
,......直到我到达实际错误。这并不能解决您的问题,但至少可以让您更好地了解 的问题。