Создать пользователя в базе данных Azure SQL, используя функции Azure? - PullRequest
0 голосов
/ 15 апреля 2020

Я хочу создать пользователей в базе данных Azure SQL. Я запускаю эту PowerShell через Azure Функции.

Я настроил свое имя как администратор сервера. Также я настроил брандмауэр.

Но я не могу подключиться к базе данных SQL.

Это выдает ошибку: Не удается открыть сервер "domain.com", запрошенный логин. Ошибка входа в систему.

Это мой сценарий:

$serverName = "servername.database.windows.net"

$databaseName = "databasename"

$adminLogin = 'user@domain.com'

$PWord = "password"

$query = "CREATE USER [user1@domain.com] FROM EXTERNAL PROVIDER;";

Invoke-Sqlcmd -ServerInstance $serverName -Database $databaseName -U $adminLogin -Password $PWord -Query $query

Я также пробовал этот сценарий:

Хотя приведенный ниже сценарий работает в Windows PowerShell , но не работает в Azure функции PowerShell.

$Creds = Get-Credential -Credential 'username@domain.com'
    $Username = $($Creds.GetNetworkCredential().UserName)
    $Password = $($Creds.GetNetworkCredential().Password)
    $Database = "testg"
    $Server = 'test.database.windows.net'
    $Port = 1433
    $cxnString = "Server=tcp:$Server,$Port;Database=$Database;Authentication=Active Directory Password;UID=$UserName;PWD=$Password;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"
    $query = "CREATE USER YourUser WITH PASSWORD = 'JRxuerCc(q'"
    $cxn = New-Object System.Data.SqlClient.SqlConnection($cxnString)
    $cxn.Open()
    $cmd = New-Object System.Data.SqlClient.SqlCommand($query, $cxn)
    $cmd.CommandTimeout = 120
    $cmd.ExecuteNonQuery()
    $cxn.Close()

Но это не работает в Azure функциях. В нем говорится, что ключевое слово не поддерживается: «аутентификация»

Подобным образом я пытался использовать также подход NET. Но выдает ту же ошибку

Как мне этого добиться?

1 Ответ

0 голосов
/ 17 апреля 2020

Наконец я нашел ответ на этот вопрос. Если кто-то еще ищет ответ здесь, это

. В настоящее время это невозможно с PowerShell в azure функциях.

Мне пришлось сделать это с ядром. net.

ключ здесь заключается в использовании Microsoft.Data.SqlClient пакета. System.Data.SqlClient не поддерживает аутентификацию по паролю в активном каталоге.

Используйте этот пакет Microsoft.Data.SqlClient и код bin go!

:

using Microsoft.Data.SqlClient;

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();

            string userName = "username@domain.com";
            string password = "password";
            builder.ConnectionString = "Server=tcp:" + server + ",1433;Database=" + database + ";Authentication=Active Directory Password;UID=" + userName + ";PWD=" + password + ";Trusted_Connection=False;Encrypt=True;Connection Timeout=30;";

            using (SqlConnection connection = new SqlConnection(builder.ConnectionString))
            {
                connection.Open();
                string query = "CREATE USER YourUser WITH PASSWORD = 'JRxuerCc(q'"
                SqlCommand cmd = new SqlCommand(query, connection);
                cmd.CommandTimeout = 120;
                cmd.ExecuteNonQuery();
                connection.Close();
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...