manvendra patel Ответов: 1

Проблема подключения к базе данных на клиентском компьютере (приложение winform с C#)


всем привет

Я создал приложение winforms с внутренней базой данных (service based database ).я использую базу данных на основе службы, так что после установки не нужно подключать и устанавливать sql server на клиентской машине.

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

пожалуйста, помогите мне кто-нибудь.

спасибо

Что я уже пробовал:

я изменил источник данных строки подключения .

&ЛТ; добавить имя="с помощью класса localconnection" свойства connectionString="источник данных=(на localdb)\MSSQLLocalDB;ключевое слово attachdbfilename=|параметр datadirectory|\базы данных1.МДФ;Комплексная безопасность=true; в" имя_поставщика="системы.Данных.В sqlclient" /&ГТ;

Michael_Davies

Пожалуйста, покажите строки подключения, помните, что мы не находимся на вашем компьютере и не можем видеть, что происходит.

Hemant Singh Rautela

Это вы включаете брандмауэр для удаленного подключения sql, где установлена ваша база данных.

manvendra patel

моя строка подключения такова
connectionstring="источник данных=(LocalDB)\MSSQLLocalDB;AttachDbFilename=Database1.mdf;integrated security=true"

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

manvendra patel

пожалуйста, посмотрите на эту ссылку
http://stackoverflow.com/questions/30162076/net-cant-connect-to-mdf-on-another-machine

ZurdoDev

Точная ошибка подскажет вам и нам, в чем именно заключается проблема.

manvendra patel

Дополнительные сведения о вызове см. В конце этого сообщения
отладка just-in-time (JIT) вместо этого диалогового окна.

************** Текст Исключения **************
System.Data.SqlClient.SqlException (0x80131904): при установлении соединения с SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром. Сервер не был найден или недоступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен на разрешение удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL Server) ---> System.ComponentModel.Win32Exception (0x80004005): сетевой путь не найден
в System.Data.SqlClient.SqlInternalConnection.OnError(исключение SqlException, логическое breakConnection, действие`1 wrapCloseInAction)
в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
в System.Data.SqlClient.TdsParser.Подключите(файл serverinfo файл serverinfo, SqlInternalConnectionTds connHandler, логическое ignoreSniOpenTimeout, timerExpire типа int64, логические шифрования, логические trustServerCert, булево свойство integratedsecurity, логическое withFailover, SqlAuthenticationMethod тип)
в System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(файл serverinfo файл serverinfo, строки новый_пароль, типа SecureString newSecurePassword, логическое ignoreSniOpenTimeout, тайм-аут TimeoutTimer, логическое withFailover)
в System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(файл serverinfo файл serverinfo, строки новый_пароль, типа SecureString newSecurePassword, логическое redirectedUserInstance, SqlConnectionString использовать connectionoptions, SqlCredential учетных данных, TimeoutTimer тайм-аут)
в System.Data.SqlClient.Sqllinternalconnectiontds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance)
в System.Data.SqlClient.SqlInternalConnectionTds..чтор(тож DbConnectionPoolIdentity, SqlConnectionString использовать connectionoptions, SqlCredential учетных данных объекта providerInfo, строки новый_пароль, типа SecureString newSecurePassword, логическое redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool бассейн, строки маркер accessToken)
в System.Data.SqlClient.SqlConnectionFactory.Параметр "createconnection" (варианты DbConnectionOptions, DbConnectionPoolKey poolKey, poolGroupProviderInfo объект, DbConnectionPool бассейн, dbConnection и owningConnection, userOptions DbConnectionOptions )
в System.Data.База поставщиков.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
в System.Data.База поставщиков.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
в System.Data.База поставщиков.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
в System.Data.База поставщиков.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
в System.Data.База поставщиков.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
в System.Data.База поставщиков.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
в System.Data.База поставщиков.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
в System.Data.База поставщиков.DbConnectio

1 Ответов

Рейтинг:
5

OriginalGriff

Любая попытка использовать базу данных SQL требует доступа к работающему экземпляру SQL Server: ваша строка подключения пытается установить соединение между вашим приложением и экземпляром MS SQL на том же компьютере - Вот что означает "(LocalDB)", это "режим выполнения", предназначенный для разработчиков, а не способ доступа к БД без установленного SQL Server. Строка пытается запустить экземпляр SQL server как автономную сущность для обработки только того файла БД, который вы прикрепляете. Он все еще нуждается в установке и работе SQL Server!

Если вы хотите использовать БД без установки SQL Server, то вам нужно изменить свой код, чтобы использовать однопользовательскую систему БД, такую как Access, SQLCE (больше не рекомендуется) или SqLite - ни один из которых не требует больше пары DLL-файлов, которые можно легко добавить в программу установки приложения.