Я написал приложение C#, которое обращается к серверу ms sql. У меня не было проблем с разработкой приложения. Сейчас я на стадии развертывания, и возникла странная проблема. Приложение будет передано конечному пользователю через терминальные службы. По какой-то причине приложение не может получить доступ к базе данных, если оно выполняется стандартным пользователем, оно может получить к нему доступ, только если пользователь является членом группы безопасности домена. Я могу получить доступ к базе данных, если я сервер пользователя SQL Management Studio или если я подключаюсь к базе данных с помощью ODBC dsn. Это похоже на то, что связано с приложениями .net, в частности. Я обслуживаю приложения через citrix, но также имею среду 2x, и у меня такая же проблема в обоих. Это должно быть что-то с терминальными службами и .net.C# .net Приложение не может получить доступ к серверу sql в терминальных службах
Любые предложения или опыт людей с подобными проблемами будут приветствоваться.
Edit:
Вот исключение я получаю, когда пользователь не является членом группы администратора домена
System.Data.SqlClient.SqlException (0x80131904): сеть связанных или instance- возникла ошибка при установлении соединения с SQL Server. Сервер не найден или не был доступен. Проверьте правильность имени экземпляра и настройте SQL Server для удаленного подключения. (Поставщик: SQL Network Interfaces, ошибка: 26 - Ошибка Расположение сервера/Instance Указано) в System.Data.SqlClient.SqlInternalConnection.OnError (SqlException исключения, булева breakConnection, действия 1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover) at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData) at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource
1 повторных попытки, DbConnectionOptions userOptions, DbConnectionInternal & соединения) в System.Data.ProviderBase.DbConnectionFactory.TryGetConnection (DbConnection owningConnection, TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource
1 повторных попыток, DbConnectionOptions userOptions) на System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection (DbConnection outerConnection, DbConnectionFactory ConnectionFactory, TaskCompletionSource 1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource
1 повторных попыток) на System.Data. SqlClient.SqlConnection.TryOpen (TaskCompletionSource`1 retry) в System.Data.SqlClient.SqlConnection.Open() на CamLabs.UtilityClasses.DBConn.isConnected() ClientConnectionId: 00000000-0000-0000-0000-000000000000
Когда они являются членами группы он работает без ошибок.
Я не могу понять, «я могу получить доступ к базе данных, если я сервер пользователя SQL Management Studio» - не могли бы вы попробовать перефразировать/переписать этот бит, пожалуйста? –
@Damien_The_Unbeliever Я обновил исключение –
Можете ли вы, пожалуйста, повторно посетить это предложение, которое я выделил? Кажется, что он содержит фрагменты из трех разных предложений, и мне недостаточно информации, чтобы распутать эти предложения (или если это предназначено для одного предложения, я не могу превратить его в предложение, которое я могу понять, просто изменив его или два слова) - я буквально понятия не имею, что вы пытаетесь передать нам. –