我正在使用在 Amazon EC2 机器上运行的 SQL 管理工作室 2008。我无法连接到我的 asp.net 应用程序中的数据库。EC2 实例已设置为通过 SQL 端口接受连接。我还可以远程控制机器以及查看服务器上托管的网站。下面列出了与此实例相关的部分连接字符串。当程序运行并调用此连接字符串时,它会返回 tcp 错误 0 - 无返回响应。它只是超时。
<add name="ProjectServer" connectionString="Data Source=*IP ADDRESS HERE*,1433;Initial Catalog=*Catalog Name*;User ID=IP-0A6ED514\Administrator;"/>
我删除了示例中的 ip 和目录名称,但我确信它们是正确的。
我认为唯一可能导致错误的事情是用户 ID 和服务器名称之间的名称差异 - 当我登录 EC2 实例上的 sql 服务器管理器时,服务器名称是 ip-0A6ED514\sharepoint,但用户名是 ip-0A6ED514\administrator。未使用密码。不确定我是否需要将密码留空 - 也不确定服务器名称和登录用户 ID 之间的差异是否会有所不同。任何帮助都值得感激。谢谢。
更新 - 当此连接字符串与端口一起使用时,我收到 tcp 提供程序错误 40 - 当端口在那里时,我收到错误 0
编辑- SQL Server 使用 Windows 身份验证 - 这有什么区别吗?通常我总是使用 SQL Server 身份验证
答案1
使用 Windows 身份验证时,远程 EC2 实例需要根据您本地的 PC 或域对您进行身份验证。除非您设置了某种 VPN 或其他东西,否则这将不起作用。
改为使用 SQL 身份验证。您需要在连接字符串中指定用户 ID 和密码。
确保端口 1433 在您的安全组中打开(最好仅从您的 Web 应用访问数据库的 IP 地址打开)。确保您的 SQL 服务器设置为接受 TCP/IP 网络连接。
您的 EC2 实例有一个公共 DNS 条目,如 ec2-xx-xx-xx-xx.compute-1.amazonaws.com。将其用作您的数据源。我不确定您是否可以使用“\sharepoint”部分。尝试使用和不使用来看看是否有效。
答案2
您的连接字符串看起来应该像这样。
Data Source=ip-0A6ED514\sharepoint;Initial Catalog=myDataBase;Integrated Security=SSPI;
另一个选择是让它看起来像这样
Data Source=.\sharepoint;Initial Catalog=myDataBase;Integrated Security=SSPI;
要使用 IP 地址,它应该是这样的。
Data Source=xxx.xxx.xxx.xxx\sharepoint;Initial Catalog=myDataBase;Integrated Security=SSPI;
为了使其正常工作,您需要在服务器上运行 SQL 浏览器,并且需要在服务器上打开 UDP 端口 1434 以及运行 SQL 实例的 TCP 端口。