我正在尝试从OSX中运行的C#ASP.Net核心应用程序连接到MSSQL服务器。 MSSQL位于一台单独的计算机上,防火墙配置为允许通过TCP连接到端口1433,并通过UDP连接到端口1434.
我使用的连接字符串是:
Server=IP\SQLEXPRESS;Database=DB_NAME;user id=****;password=*****
此时令人困惑的是完全相同的连接字符串从Windows以及Visual Studio和Visual Studio Code完美地运行。我在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)
异常。我不知道该怎么做,因为这段代码应该有效。 SQL Server连接器的OSX实现有何不同之处?
答案 0 :(得分:1)
正如朱塞佩所说,你需要使用IP,端口。命名实例可以在各种端口上运行,Windows客户端(即SQL Management Studio)通过询问SQL浏览器服务来检测端口。 在您的情况下,您应该打开SQL配置管理器,转到SQL Server网络配置 - > SQLExpress的协议(或任何实例的名称) - > TCP / IP(右键单击) - >属性 - > Ip Adresses选项卡,滚动到底部并查看(和/或)设置当前端口。
答案 1 :(得分:-1)
显然UseSQLServer
方法的* nix实现不支持实例名称。因此,IP,port
是可行的方法。