Я создал простую программу для иллюстрации проблемы. У меня есть консольное приложение, которое должно подключаться к внешнему экземпляру SQL Server.
Локально я могу прекрасно подключиться к этому хосту (независимо от того, установлен ли IP-адрес или внешний URL-адрес, с которым сервер связан через DNS). Когда я копирую скомпилированную версию приложения на сервер Ubuntu с установленным Mono и запускаю приложение с помощью mono ConsoleApplication1.exe
, я каждый раз получаю эту ошибку:
System.Data.SqlClient.SqlException: сервер не существует или в соединении отказано. at System.Data.SqlClient.SqlConnection.Open () ‹0x409d4e90 + 0x0053f> in :0 at ConsoleApplication1.Program.Main (System.String[] args) ‹0x409a7d50 + 0x00077> in :0 [ОШИБКА] НЕИСПРАВНОЕ НЕОБРАБОТАННОЕ ИСКЛЮЧЕНИЕ: Система .Data.SqlClient.SqlException: сервер не существует или в соединении отказано. в System.Data.SqlClient.SqlConnection.Open () ‹0x409d4e90 + 0x0053f> в :0 в ConsoleApplication1.Program.Main (System.String[] args) ‹0x409a7d50 + 0x00077> в :0
Я попытался использовать прямой IP-адрес для экземпляра SQL Server, а также внешний URL-адрес (вместо приведенного ниже), который, как я знаю, работает локально при запуске этого приложения.
Код, используемый для настройки в приложении:
App.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="Test" connectionString="data source=<Host>\<Instance Name>, 1069;database=<Database Name>;user id=<User>;password=<Password>;multipleactiveresultsets=True;"/>
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
</startup>
</configuration>
Код С#
class Program
{
static void Main(string[] args)
{
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["Test"].ConnectionString))
{
connection.Open();
Console.WriteLine("Connected");
}
}
}
Окружающая среда:
- SQL Server: Windows 2012 DC с экземпляром SQL Server 2014
- Mono Environment: Ubuntu 16.04 с последней версией Mono-Complete
- Версия .NET: 4.6.2 (также пробовал 4.5.2)
Обновление: я могу подтвердить, что с помощью FreeTDS я могу подключиться к экземпляру SQL Server из экземпляра Ubuntu, поэтому проблема кажется изолированной от запуска приложения.
C:\Windows\SysWOW64\SQLServerManager12.msc
- person Searching   schedule 18.11.2016