Ssms

新創建的使用者登錄失敗

  • January 6, 2020

我昨天剛剛創建了我的第一個數據庫。它現在已經設置好了,我可以使用管理員使用者登錄從我的 C# 應用程序寫入它。我現在想使用有限的只寫使用者,這樣我的管理員憑據就不會儲存在我的應用程序中。

我使用query1在 master 上創建了第二個登錄名

CREATE LOGIN writeOnlyLogin WITH password='myPassword';

我使用query2在 master 上創建了一個使用者

CREATE USER writeOnlyUser FROM LOGIN writeOnlylogin;

然後,我將此使用者添加到具有我希望此使用者寫入的表的數據庫中,方法是使用query2和以新數據庫而不是主數據庫為目標的連接字元串。

我使用query3僅在新數據庫中的單個表上授予該使用者的插入訪問權限

GRANT INSERT ON myTable TO writeOnlyUser

使用者沒有其他角色或權限。

在我的 c# 應用程序中,我有一個要寫入此表的資料結構。我像這樣創建連接字元串並像這樣寫。使用管理員憑據打開成功。對於我的新使用者,打開失敗。

public void SendToDatabase()
{    
   string serverName = "myServer.database.windows.net";
   string databaseName = "myDatabase";
   string tableName = "myTable";
   string user = "writeOnlyUser";
   string password = @"myPassword";
   string sqlConnectionString = $"Data Source={serverName};Initial Catalog={databaseName};User id={user};Password={password};";
   using (SqlConnection sqlConnection = new SqlConnection(sqlConnectionString))
   {
       sqlConnection.Open();
       SqlCommand sqlCommand = HelperMethods.CreateSqlCommandFromObject(this, tableName, sqlConnection);
       int rowsAffected = sqlCommand.ExecuteNonQuery();
   }
}

異常消息是“使用者‘writeOnlyUser’登錄失敗。”

我無法通過Google找到任何有用的東西,但這可能是因為我不知道我在尋找什麼。我該如何解決這個問題?一般來說,如何調試登錄詳細資訊?

我的問題是我誤解了登錄在 SQL 中的工作方式。我使用的是使用者名和登錄密碼,而不是登錄名和登錄密碼。這是一個菜鳥問題。希望這可以節省其他人的時間。

引用自:https://dba.stackexchange.com/questions/256277