Предоставление роли SQL Server на удаленном сервере

Я работаю над действием, где у меня есть таблица (t1) на сервере server1, в которой хранится информация о имени сервера, имени пользователя и роли.

Я создал сценарий PowerShell для запуска на сервере server1, собрал эту информацию из таблицы, подключился к удаленному серверу (имя сервера) и присвоил запрошенную роль идентификатору пользователя.

Пожалуйста, найдите скрипт ниже:

    $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".

1 ответ

Где $User в foreach ($login in $user) определен?

Его ноль и foreach повторяется null (ожидаемое поведение) и $login здесь ничего не становится

Вы могли пропустить настройки $user Вот.

Другие вопросы по тегам