Ssms
新創建的使用者登錄失敗
我昨天剛剛創建了我的第一個數據庫。它現在已經設置好了,我可以使用管理員使用者登錄從我的 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 中的工作方式。我使用的是使用者名和登錄密碼,而不是登錄名和登錄密碼。這是一個菜鳥問題。希望這可以節省其他人的時間。