如何使用SQL Server PowerShell提供程序和/或SMO创建新登录?

时间:2022-12-01 07:11:47

I have a PowerShell script which creates a new SQL Server database. This is going to be a content database for a SharePoint 2010 implementation.

我有一个PowerShell脚本,它创建一个新的SQL Server数据库。这将是SharePoint 2010实现的内容数据库。

Once created I need to set the DBO to be my SharePoint farm account and I need to assign permissions to some other service accounts.

创建之后,我需要将DBO设置为我的SharePoint farm帐户,并需要为其他一些服务帐户分配权限。

Does anyone have an idea of how to do this using SMO and the PowerShell Provider for SQL Server?

有人知道如何使用SMO和SQL Server的PowerShell提供程序来实现这一点吗?

1 个解决方案

#1


4  

Setting the db owner is simply enough:

设置db所有者就足够了:

PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\MyDatabase> $db = get-item .
PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\MyDatabase> $db.SetOwner('sa')
PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\MyDatabase> $db.alter()
#These two steps aren't necessary, but if you want to see the change
PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\MyDatabase> $db.Refresh()
PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\MyDatabase> $db.Owner

Assigning permissions is little tricky and of course there are multiple ways to assign a permissions. It would help if you described what permissions you want to assign (database, object, built-in role, server-level, schema, etc.). Here's how you create a database user and assign object permissions:

分配权限并不复杂,当然有多种方法来分配权限。如果您描述了要分配的权限(数据库、对象、内置角色、服务器级别、模式等),将会有所帮助。如何创建数据库用户并分配对象权限:

 $user = new-object ('Microsoft.SqlServer.Management.Smo.User') 'MyDatabase', 'MyUser'
 $user.Login = 'MyUser'
 $user.DefaultSchema = 'dbo'
 $user.Create()
PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\MyDatabase\tables> $tbl = get-childitem | where {$_.name -eq 'mytable'}
$tbl.Grant('SELECT','myUser')

#1


4  

Setting the db owner is simply enough:

设置db所有者就足够了:

PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\MyDatabase> $db = get-item .
PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\MyDatabase> $db.SetOwner('sa')
PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\MyDatabase> $db.alter()
#These two steps aren't necessary, but if you want to see the change
PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\MyDatabase> $db.Refresh()
PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\MyDatabase> $db.Owner

Assigning permissions is little tricky and of course there are multiple ways to assign a permissions. It would help if you described what permissions you want to assign (database, object, built-in role, server-level, schema, etc.). Here's how you create a database user and assign object permissions:

分配权限并不复杂,当然有多种方法来分配权限。如果您描述了要分配的权限(数据库、对象、内置角色、服务器级别、模式等),将会有所帮助。如何创建数据库用户并分配对象权限:

 $user = new-object ('Microsoft.SqlServer.Management.Smo.User') 'MyDatabase', 'MyUser'
 $user.Login = 'MyUser'
 $user.DefaultSchema = 'dbo'
 $user.Create()
PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\MyDatabase\tables> $tbl = get-childitem | where {$_.name -eq 'mytable'}
$tbl.Grant('SELECT','myUser')