Не удается заставить локальную БД работать с приложением на другом ПК

Итак, у меня есть это приложение, которое я написал как небольшой проект для работы. Он использует единую таблицу базы данных, настроенную в Visual Studio вместе с самим приложением. И хотя он отлично работает на моем ноутбуке, я не могу заставить его работать на другом ПК.

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

Сначала я подумал, что это может быть как-то связано с расположением файлов базы данных, но даже после теста, когда я поместил эти файлы в то же место, что и на моем ноутбуке (это диск C:), это просто не работает.

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

Полная ошибка, которую я получил:

Zie het einde van dit bericht voor more informatie over het aanroepen van JIT-foutopsporing (Just In Time) на платах в диалоговом окне.

************** JIT-поддержка ************** Также как JIT-поддержка будет вставлена ​​в конфигурацию, которая лучше всего подходит для передачи компьютера (машины .config) отладки jitDebugging в исходном файле system.windows.forms. De toepassing moet ook zijn gecompileerd terwijl foutopsporing был ingeschakeld.

Бийворбельд:

Тем не менее, это сработало бы, действительно изменив строку подключения, но по какой-то причине я не смог правильно понять эту часть. Поэтому я пошел дальше и обнаружил, что при использовании SQL Server 2014 часть моей строки подключения, которая говорит MSSQLLocalDB, должна быть изменена на V11.0 или что-то в этом роде. Однако при использовании SQL Server 2016 MSSQLLocalDB все-таки корректен.

Wanneer JIT-Foutopsporing включен, слово onverwerkte uitzonderingen naar het JIT-foutopsporingprogramma gestuurd DAT op de computer is geregistreerd en worden niet door dit dialoogvenster verwerkt.

CodeBase: файл:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_nl_b77a5c561934e089/System.Windows.Forms.resources.dll

Итак, я узнал, где что-то пошло не так. Мой код был на 100% в порядке. Однако, как оказалось, файл SqlLocalDB.MSI не был «совместим» с БД, которую я использовал в своей программе. Он был «производным» от SQL Server 2014, тогда как мне нужен был производный от версии 2016 года.


person Tom    schedule 08.05.2020    source источник
comment
как другая машина .... получает доступ к этой базе данных ... вы ее скопировали? есть ли у него установка, необходимая для чтения файлов db .., вам нужно указать гораздо больше. что является локальным для вас... иначе как выглядит строка подключения.   -  person Sinatr    schedule 08.05.2020
comment
Да, я установил localdb (по крайней мере, я установил SqlLocalDB.MSI). Файл базы данных просто хранится на другом компьютере, с которым я хочу его использовать. Моя строка подключения: частная статическая строка connectionstring = @Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename='G:\DRPAttendance\Medewerkers.mdf';Integrated Security=True;   -  person Bradley Uffner    schedule 08.05.2020
comment
И, кстати, ошибка возникает, когда я запускаю программу вне Visual Studio. Так что это не имеет ничего общего с самим кодом. Это действительно связь. Не могу получить полный код ошибки, так как он слишком длинный для комментария.   -  person Seabizkit    schedule 08.05.2020
comment
Строка подключения, которую вы разместили в качестве комментария, указывает на расположение на диске _1_, но в своем вопросе вы говорите, что файлы находятся на диске _2_. Вы пытались обновить строку подключения соответствующим образом? Кроме того, какое сообщение об ошибке вы получаете? Пожалуйста, отредактируйте свой вопрос и добавьте к нему полные сведения об ошибке (комментарии предназначены для обсуждения, если у вас есть новая важная информация, отредактируйте свой вопрос и добавьте их)   -  person Tom    schedule 08.05.2020
comment
Конечно, я редактировал строку подключения соответствующим образом каждый раз, когда тестировал ее в другом месте. :) Диск G: это тот, который я хочу начать использовать, диск C: только для целей тестирования, и он использовался во время программы. Я отредактирую свой вопрос с полной ошибкой.   -  person Tom    schedule 08.05.2020
comment
Кажется, ему не нравится имя экземпляра вашей строки подключения (G:). На компьютере, выдающем ошибку, выполните команду C:. В нем будут перечислены все экземпляры, работающие в этой системе. Обычно исполняемый файл находится в _3_, возможно, вам придется немного изменить число в этом пути в зависимости от вашей версии.   -  person bassfader    schedule 08.05.2020
comment
SQL-клиент будет подключаться к файлу mdf, только если он находится на том же компьютере, что и сервер. Таким образом, вы можете использовать любой локальный диск, например c:\ или d:\, а не сетевой диск (если только он не смонтирован на локальной машине). Это ограничение SQL Server, а не кода на С#.   -  person Tom    schedule 08.05.2020
comment
************** Текст проверки ************** System.Data.SqlClient.SqlException (0x80131904): Ошибка недоступна в сети из приведенной спецификации экземпляра Операции, сделанные с помощью SQL Server. Де сервер ниет gevonden из ниет toegankelijk. Контролером правильности экземпляра является установка в SQL Server внешней привязки к серверу. (поставщик: сетевые интерфейсы SQL, ошибка: 50 — ошибка обнаружена в операционной среде выполнения локальной базы данных. Указанный экземпляр LocalDB не существует.) учетных данных, объект providerInfo, String новый_пароль, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool бассейн, String маркер доступа, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager) бий System.Data.SqlClient.SqlConnectionFactory.CreateConnection (варианты DbConnectionOptions, DbConnectionPoolKey poolKey, объект poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) bij System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool poo l, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) bij System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) bij System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, user DbConnectionOptions , DbConnectionInternal oldConnection) bij System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, логическое значение allowCreate, логическое значение onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& соединение) bij System.Data.ProviderBase.DbConnectionTaskPool.Try_Complece1, DbConnectionOptions (userOptions, DbConnectionInternal, oldConnection, DbConnectionInternal& соединение) bij System.Data.ProviderBase.DbConnectionInt ernal.TryOpenConnectionInternal (DbConnection externalConnection, DbConnectionFactory connectionFactory, TaskCompletionSourceSqlLocalDB.exe i1 retry, DbConnectionOptions userOptions) bij System. Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSourceC:\Program Files\Microsoft SQL Server\120\Tools\Binn1 retry) bij System.Data.SqlClient.SqlConnection.Open() bij Aanwezigheidssysteem.Database.LoadEmployees() bij Aanwezigheidssysteem.Hoofdmenu.Form1_Load(Object sender, EventArgs e) bij System.Windows.Forms .Form.OnLoad(EventArgs e) bij System.Windows.Forms.Form.OnCreateControl() bij System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
bij System.Windows.Forms.Control.CreateControl() bij System.Windows.Forms.Control.WmShowWindow(Message& m) bij System.Windows.Forms.Control.WndProc(Message& m) bij System.Windows.Forms.ScrollableControl.WndProc(Message& m) bij System.Windows.Forms.Form. WmShowWindow(Message& m) bij System.Windows.Forms.Form.WndProc(Message& m) bij System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) bij System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) ) bij System.Windows.Forms.NativeWindow.C allback (IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) ClientConnectionId: 00000000-0000-0000-0000-000000000000 Номер ошибки: -1983577849, Состояние: 0, Класс: 20   -  person Bradley Uffner    schedule 08.05.2020
comment
************** Сборка Geladen ************** mscorlib Версия сборки: 4.0.0.0 Версия Win32: 4.7.3110.0, созданная: NET472REL1LAST_C CodeBase : файл:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll -------------------------- -------------- Версия сборки DRPAttendanceSystem: 1.0.0.0 Версия Win32: 1.0.0.0 База кода: файл:///C:/Program%20Files/DeBeerSoftware/DRP-AS/DRPAttendanceSystem .exe ---------------------------------------- System.Windows.Forms Версия сборки : 4.0.0.0 Win32-версия: 4.7.3056.0, созданная: NET472REL1 CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System .Windows.Forms.dll ------------------------------------------------------- Сборка системы-версия : 4.0.0.0 Win32-версия: 4.7.3056.0, созданная: NET472REL1 CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll -- --------------- ----------------------- Версия сборки System.Drawing: 4.0.0.0 Версия Win32: 4.7.3056.0, созданная: NET472REL1 CodeBase: file:// /C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll ------------------- --------------------- Версия сборки System.Data: 4.0.0.0 Версия Win32: 4.7.3056.0, созданная: NET472REL1 CodeBase: file:///C :/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll --------------------- ------------------- Версия сборки System.Core: 4.0.0.0 Версия Win32: 4.7.3110.0, созданная: NET472REL1LAST_C CodeBase: file:///C:/ Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll ------------------------------------- ------------------ Версия сборки System.Configuration: 4.0.0.0 Версия Win32: 4.7.3056.0, созданная: NET472REL1 CodeBase: file:///C:/Windows/ Microsoft.Net/сборка/GAC_MSIL/ System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll ---------------------------------- ------- System.Data.resources Версия сборки: 4.0.0.0 Версия Win32: 4.7.3056.0, созданная: NET472REL1 CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/ System.Data.resources/v4.0_4.0.0.0_nl_b77a5c561934e089/System.Data.resources.dll ----------------------------- ----------- System.Xml Версия сборки: 4.0.0.0 Версия Win32: 4. 7.3056.0 создано: NET472REL1 CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll ------ ---------------------------------- System.Transactions Версия сборки: 4.0.0.0 Версия Win32: 4.7. 3056.0 создано: NET472REL1 CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll -------- -------------------------------- System.EnterpriseServices Версия сборки: 4.0.0.0 Версия Win32: 4.7.3056.0 построено автор: NET472REL1 CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.EnterpriseServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll ---------- ------------------------------ mscorlib.resources Версия сборки: 4.0.0.0 Версия Win32: 4.7.3056.0, созданная: NET472REL1 CodeBase: файл:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_nl_b77a5c561 934e089/mscorlib.resources.dll ---------------------------------------- System.Windows .Forms.resources Версия сборки: 4.0.0.0 Версия Win32: 4.7.3056.0 сборка: NET472REL1   -  person jdweng    schedule 08.05.2020


Ответы (1)


Так что вроде починил сам. В любом случае спасибо всем за полезные ответы. :)

Вы устанавливали локальную базу данных? Какую ошибку вы получаете в какой строке какого кода?

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

person Tom    schedule 13.05.2020