Строка подключения .Net core к MSSQL из OSX

#sql-server #macos #asp.net-core

#sql-сервер #macos #asp.net-core

Вопрос:

Я пытаюсь подключиться к серверу MSSQL с C # ASP.Net основное приложение, работающее в OSX. MSSQL находится на отдельном компьютере, брандмауэр которого настроен на разрешение подключений через TCP к порту 1433 и через UDP к порту 1434.

Строка подключения, которую я использую, является:

Server=IPSQLEXPRESS;Database=DB_NAME;user id=****;password=*****

Что очень сбивает с толку на данный момент, так это то, что одна и та же строка подключения работает безупречно как из Windows, так и из кода Visual Studio и Visual Studio. В тот момент, когда я перезагружаюсь в своей OSX, VS Code открывает проект, но вызывает страшную

 System.Data.SqlClient.SqlException: A network-related or 
instance-specific error occurred while establishing a connection
to 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 allow remote connections. (provider: TCP Provider, 
error: 40 - Could not open a connection to SQL Server) 
 

исключение. Я понятия не имею, что делать, так как этот код должен работать. Что делает OSX-реализация соединителя SQL Server, которая так отличается?

Комментарии:

1. попробуйте добавить номер порта в конце

2. @TheGameiswar, к сожалению, я продолжаю получать ту же ошибку. Я перепробовал все комбинации, такие как: IP,1433 , IP,1434 , IPSQLEXPRESS,1433 и т.д., Которые я могу придумать, но всегда с тем же результатом…

3. Является ли это строковым литералом в коде? Однажды у меня была похожая проблема, потому что я не сбежал `. Если это не так, я бы начал с того, что убедился, что вы действительно можете подключиться к порту 1433 на целевом сервере (например, с помощью telnet)

Ответ №1:

Как сказал Джузеппе, вам нужно использовать IP, порт. Именованные экземпляры могут запускаться на разных портах, а клиенты Windows (т. Е. SQL Management Studio) Определяют порт, запрашивая службу браузера SQL. В вашем случае вам следует открыть диспетчер конфигурации SQL, перейти к конфигурации сети SQL Server -> Протоколы для SQLExpress (или как там называется экземпляр) -> TCP / IP (щелкните правой кнопкой мыши) -> Свойства -> Вкладка Ip-адреса, прокрутите вниз и посмотрите (и / или) setтекущий порт.

Комментарии:

1. Я Джузеппе (как спрашивающий, так и отвечающий) 🙂


Ответ №2:

По-видимому, реализация UseSQLServer метода * nix не поддерживает имена экземпляров. Поэтому IP,port так и нужно поступить.