2009-10-13 2 views
0

У меня есть программа, которая будет использовать роль приложения для записи данных в SQL Server 2005.Роль приложений подключиться к SQL Server с «Логин Ошибка» Ошибка

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, он работает хорошо. Затем я использую тот же код для подключения anohter SQL Server 2005 ServerB, с идентичной таблицей, ролью приложения, она дала ошибку. «Login Failed for domain \ username» Кто-нибудь встречает его раньше?

System.Data.SqlClient.SqlException был необработанным пользователем кодом
Message = "Войти неудавшийся для пользователя 'Domian \ имя пользователя'." Источник = "Net Provider 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 (булево enlistOK)
на System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin (ServerInfo serverInfo, String новый_пароль, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
в System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover (String хоста, Строка Новый_пароль, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
на System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist (SqlConnection owningObject, SqlConnectionString connectionOptions, String Новый_пароль, Boolean redirectedUserInstance)
в системе .Data.SqlClient.SqlInternalConnectionTds..ctor (DbConnectionPoolIdentity идентичность, SqlConnectionString connectionOptions, объект providerInfo, Строка новый_пароль, SqlConnection owningObject, булева redirectedUserInstance)
на System.Data.SqlClient.SqlConnectionFactory.CreateConnection (DbConnectionOptions опции, объект poolGroupProviderInfo, DbConnectionPool бассейн, DbConnection owningConnection)
на System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection (DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
в System.Data.ProviderBase.DbConnectionFactory.GetConnection (DbConnection owningConnection)
на System.Data.ProviderBase.DbConnectionClosed.OpenConnection (DbConnection outerConnection, DbConnectionFactory ConnectionFactory)
на System.Data.SqlClient.SqlConnection.Open()
на ADSK.PSEB.ACRSubmitComponent. ACRSubmit.backgroundUploadWork_DoWork (Object отправителя, DoWorkEventArgs е) в C: \ Documents и Settings \ lvlu \ Desktop \ Mulder \ Загрузить \ ADSK.PSEB.ACRSubmitComponent \ ствол \ ADSK.PSEB.ACRSubmitComponent \ Form1.cs: линия в System.ComponentModel.BackgroundWorker.OnDoWork (DoWorkEventAr гс е)
в System.ComponentModel.BackgroundWorker.WorkerThreadStart (Object аргумент)

ответ

3

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

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

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

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

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

Марк

Смежные вопросы