Роль приложения соединяется с SQL Server с ошибкой «Ошибка входа»

У меня есть программа, которая будет использовать роль приложения для записи данных в SQL Server 2005.

using (SqlConnection sqlCon = new SqlConnection(connectionString))
{
   SqlCommand sqlCommand = new SqlCommand();
   sqlCommand.Connection = sqlCon;
   sqlCommand.CommandType = CommandType.Text;
   sqlCommand.CommandText = "";
   sqlCommand.CommandText = "EXEC sp_setapprole 'name','password';";
   sqlCommand.CommandText += sqlComm;
   sqlCommand.CommandTimeout = 300;
   sqlCon.Open();

   int res = sqlCommand.ExecuteNonQuery();
}

Я использую этот код для подключения SQL Server 2005 ServerA, он работает хорошо. Затем я использую тот же код для подключения к SQL Server 2005 ServerB с идентичной таблицей, роль приложения, он выдал ошибку. «Ошибка входа в систему для домена \ имя пользователя» Кто-нибудь встречал его раньше?

System.Data.SqlClient.SqlException не был обработан кодом пользователя.
Message = "Ошибка входа для пользователя 'domian \ username'." "Поставщик Net SqlClient данных." Источник =
ErrorCode = -2146232060 Класс = 14
LineNumber = 65536 Number = 18456
Процедура = "" Server = "ServerB"
State = 1
StackTrace:
в System.Data.SqlClient.SqlInternalConnection.OnError (SqlException исключением, Логическое breakConnection)
в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj)
в System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader DATASTREAM, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
в System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin (Boolean enlistOK)
в System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin (ServerInfo serverInfo, Струнный Новый_пароль, булева ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
в System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover (Строковый хост, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
в System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist (SqlConnectionStringSigningOringingOringingOntingOringingOntingOctioningObject)
в System.Data.SqlClient.SqlInternalConnectionTds..ctor (идентификатор DbConnectionPoolIdentity, SqlConnectionString connectionOptions, объект providerInfo, строка newPassword, SqlConnection owningObject, логический redirectedUserInstance)
, poolOctionPlayer.ConfidConnect.ConfidConidConnect.ConfidConject.ConfidConject.ConfirectoryConnect_Conject_Conject.ConfirectoryConnect_Conject_Conject_Conject_Conject_Conject_Conject_Conject_Pоздание DbConnection owningConnection)
в System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection (DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
в System.Data.ProviderBase.DbConnectionFactory.GetConnection own (Соединение связи)
в System.Data.ProviderBase.DbConnectionClosed.OpenConnection (DbConnection externalConnection, DbConnectionFactory connectionFactory)
в System.Data.SqlClient.SqlConnection.Open ()
в ADSK.PSEB.ACRSubmitComponent.ACRSubmit.orkEventWork.ventEWWWW.WW.WW.WW.W.W.W.W.W.W.W.W.W.W.W.W.W.W.WW.WW.WW.W_W_W_W_W_W_W_W_W_P_P_W_W_W_W_W_P_P_W_W_W_W_W_W_W_W_W_W_WWW_W_W/WW_W_WWWWWW/W относится Документы и настройки \ lvlu \ Desktop \ Mulder \ Upload \ ADSK.PSEB.ACRSubmitComponent \ trunk \ ADSK.PSEB.ACRSubmitComponent \ Form1.cs: строка 897
в System.ComponentModel.BackgroundWorker.OnDoWork (DoWorkEventArgs e)
в System.ComponerWode. .WorkerThreadStart (аргумент объекта)

13.10.2009 05:06:48
2 ОТВЕТА

Сообщение об ошибке действительно говорит обо всем:

SqlException was unhandled by user code 
Message="Login failed for user 'domain\username'." 
Source=".Net SqlClient Data Provider" ErrorCode=-2146232060 Class=14 

Из этого вы должны увидеть, что пользователь, которого вы используете для подключения к вашему ServerB, очевидно, не имеет учетной записи на этом втором сервере.

Это не имеет ничего общего с вашей ролью приложения или чем-то еще - ваш пользователь "домен \ имя пользователя" просто не имеет прав доступа ко второму серверу.

Добавьте логин для этого пользователя и предоставьте ему доступ и необходимые разрешения для необходимых баз данных, и у вас все будет хорошо.

Марк

3
13.10.2009 07:25:20

может быть что-то не так с вашими связями

Формат строки подключения выглядит так:

<add name="dbconnect" connectionString="Data Source=localhost;Initial Catalog=db_name;User ID=sa;Password=....." providerName="System.Data.SqlClient" />

справочный веб-сайт: проблемы с соединением с SQL Server в приложениях ASP.NET, использующих состояние сеанса вне процесса

1
23.05.2017 12:12:03