【发布时间】:2017-11-19 14:34:15
【问题描述】:
我正在尝试使用以下 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 方法正在寻找更多参数,但我不确定它需要什么参数。有人对我做错了什么有任何建议吗?
谢谢 布拉德
【问题讨论】:
-
我将其用作粗略指南:docs.microsoft.com/en-us/sql/relational-databases/… 不确定我做错了什么?从这个例子看来我做得对。
标签: sql-server powershell schema smo