Пароль не может быть предоставлен, потому что пользователь не аутентифицирован в базе данных - PullRequest
0 голосов
/ 07 октября 2019

Я разрабатываю приложение, которое должно создать на сервере базы данных новый логин и нового пользователя как владельца этого нового. Это для автоматизации развертывания веб-приложения.

это мой метод:

public void CreateDatabase(string connectionString, string newDbName, string newDbUserName, string newDbUserPassword)
{
 var connection = new SqlConnectionStringBuilder(connectionString);

            Server server = !string.IsNullOrEmpty(connection.UserID)
                ? new Server(new ServerConnection(connection.DataSource, connection.UserID, connection.Password))
                : new Server(new ServerConnection(connection.DataSource));

            Login login = null;
            User user = null;
            Database db = null;

                db = new Database(server, newDbName);
                db.Create();

                login = new Login(server, newDbUserName) { LoginType = LoginType.SqlLogin };
                login.Create(newDbUserPassword, LoginCreateOptions.None);

                user = new User(db, newDbUserName)
                {
                    UserType = UserType.NoLogin,
                    Login = login.Name, DefaultSchema = "dbo"
                };
                user.Create(newDbUserPassword);

                dbUser.AddToRole("dbcreator");
}

В имени пользователя генерируется строка без цифр и специальных символов. Пароль генерируется в виде 30-символьной строки со специальными символами и номером.

Проблема в том, что в моем локальном хосте даже на сервере этот код выдает мне следующее исключение:

A password cannot be provided because the user is not authenticated in the database.

Цель состоит в том, чтобы новый пользователь имел доступ только к этой новой базе данных

Есть какие-нибудь идеи, почему и что я делаю не так?

...