【问题标题】:Granting SQL Server role in a remote server在远程服务器中授予 SQL Server 角色
【发布时间】:2018-05-06 10:24:53
【问题描述】:

我正在从事一项活动,我在 server1 中有一个表 (t1),其中存储了服务器名称、用户 ID 和角色信息。

我创建了一个在 server1 上运行的 PowerShell 脚本,从表中收集这些信息,连接到远程服务器(服务器名称)并将请求的角色授予用户 ID。

请在下面找到脚本:

    $SQLServer = "Server1" 
$SQLDatabase = "Db1"
$user = "select userid from T1"
$role = "select access from T1"
$server1 = "Select servername from T1"

<#store the table information in a text file for auditing#>
$Sqlquery = "Select servername,userid,access from T1"
$Test = Invoke-SQLCMD -Query $SqlQuery -serverinstance $SQLServer -Database 
$SQLDatabase
$Test | format-list servername,userid,access| out-file "G:\EP\test.txt"

 $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $Server1; Integrated Security = 
  True"

$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$sqlSrv = New-Object 'Microsoft.SqlServer.Management.Smo.Server' 
"SQLServer\Instance"

foreach ($login in $user)
 {
   $login.AddToRole($role)
 }
 $SqlConnection.Close()

在运行上述代码时,我看到以下错误:

方法调用失败,因为 [System.String] 不包含名为“AddToRole”的方法。

【问题讨论】:

    标签: sql powershell roles


    【解决方案1】:

    foreach ($login in $user) 中的$User 在哪里定义?

    它的 null 和 foreach 迭代到 null(扩展行为)和 $login 在这里什么都不是。

    您可能错过了在此处设置$user

    【讨论】:

    • 抱歉耽搁了。我解决了这个问题,但无法在这里分享,因为脚本有点太长,超过了 1180 个字符。
    猜你喜欢
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 2021-07-16
    • 2011-09-06
    • 2019-05-16
    • 1970-01-01
    相关资源
    最近更新 更多