Здесь, в компании, в которой я работаю, мы перенесли текущую структуру таблицы БД и хранимые процедуры в новую БД;работает до сих пор.
Проблема, с которой мы сталкиваемся, заключается в том, что нет никакого способа подключить наше приложение к новой БД. Причина? Возможно, возникла некоторая проблема со строками соединения, сохраненными в файле App.config (xml).
Это странно, потому что даже если мы предоставили такой же источник данных, идентификатор пользователя, пароль и структуру сервера, как и в случае сстарая БД, она просто отказывается подключаться и делать что-либо со своими функциями.
База данных работает на SQL Server 2017 (так же, как и раньше), а наше приложение разработано в Winforms C # с использованием Entity Framework 6 иEXECSQLSERVERPROCEDURE Плагин NuGet.
Этот плагин, в частности, использует специальную строку соединения (подробно описано ниже с остальными), которая использует не "connectionString", а "value" вместо этого, и это одна из частей, которая также не работаеткак заполненный DataGridViews на основе TableAdapter. Только соединения и функции EF6 работают правильно.
Я пытался изменить имя экземпляра сервера в соответствии с: https://sqldbpool.com/2008/09/03/how-to-change-sql-server-instance-name/
Поэтому мне не приходилось иметь дело со специальными символами вApp.config;используя коды HTML и сущности для экземпляра именованного сервера в источнике данных (даже в пароле со звездочкой, который мы изменили позже без какого-либо эффекта), используя это в качестве ссылки: https://www.toptal.com/designers/htmlarrows/
И, изменил ссылку наспециальная строка подключения для обычной строки, вызываемая по «имени» вместо «ключа», потому что она не существует в обычном определении строки подключения (да, попытался добавить ее, но не сработало).
Просто чтобы получить большое количество ничего и разочарования (быть на этом с пятницы, просто чтобы представить вас всех в контексте).
Строки подключения (в App.config):
<connectionStrings>
<add name="MYAPP.Properties.Settings.MYAPP" connectionString="Data Source=MYAPPSERVER;Initial Catalog=MYAPP;User ID=sa;Password=MYAPP2019;Server=192.168.*.*"
providerName="System.Data.SqlClient" />
<add name="MYAPPBD" connectionString="metadata=res://*/MYAPP.csdl|res://*/MYAPP.ssdl|res://*/MYAPP.msl;provider=System.Data.SqlClient;provider connection string="data source=192.168.*.*\MYAPP;initial catalog=MYAPP;user id=sa;password=MYAPP2019;multipleactiveresultsets=True;application name=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
<appSettings>
<add key="DBSQL" value="workstation id=server;packet size=4096;data source=MYAPPSERVER;initial catalog=MYAPP;user id=sa;password=MYAPP2019;server=192.168.*.*" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
Определение функции, которая использует эту специальную строку соединения «DBSQL» (для получения привилегий пользователя):
Dictionary<string, object> param = new Dictionary<string, object>();
DataTable dt = new DataTable();
param.Add(new SqlParameter("@profile", profile));
dt = SQLSERVERPROCEDURE.SQLSERVER.Exec("DBSQL", "spRec_Privileges", param, dt);
Вы можете увидеть исходный код этого плагина здесь, для справки: https://www.nuget.org/packages/EXECSQLSERVERPROCEDURE/
Ожидается подключение к БД со всеми функциями, а не только с EF6, потому что мы не можем проанализировать возвращающие функции DataTable / DataSet, чтобы сделать то же самое, что они делают с EF LIST-х. Что касается автозаполнения DataGridViews TableAdapters, мы можем сделать SP для загрузки и сохранения изменений, но это потребовало бы времени, которое мы не можем потратить на это.
Это ошибка, даже если идентификатор пользователя иПароль правильно введен:
System.Data.SqlClient.SqlException
HResult = 0x80131904
Message = Network-related or instance-specific error while establishing a connection to the SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to support remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection with SQL Server)
Source = .Net SqlClient Data Provider
Battery Tracking:
in SQLSERVERPROCEDURE.SQLSERVER.Exec (String ConnectionName, String Procedure, Dictionary`2 Variable and Values, DataTable dt)
in MYAPP.Class.User.GET_Usu_Privileges (Int32 profile) in C: \ Users \ User \ source \ repos \ MYAPP - EF Integration \ MYAPP \ Class \ Users.cs: line 107
Internal Exception 1:
Win32Exception: Username or password are not correct
Редактировать: Запросы между БД работают хорошо. Даже если использовать полный формат Server-Name \ Instance, который является оригинальным, не работает. Мы не используем аутентификацию Windows (это используется только на сервере);только аутентификация SQL Server.