【问题标题】:SQL Server named instance connection string in AWS GlueAWS Glue 中的 SQL Server 命名实例连接字符串
【发布时间】:2021-01-02 13:10:29
【问题描述】:

我研究了一段时间,但没有找到任何针对这个特定问题的东西:

我正在尝试在 AWS Glue 中创建与命名实例 SQL Server(本地)的连接

我尝试了很多不同的连接字符串格式,但都没有奏效。例如:

  • jdbc:sqlserver://HOST\INSTANCE_NAME;databaseName=DB_NAME - AWS 控制台不允许我保存,因为它没有端口 (:port)
  • jdbc:sqlserver://HOST\INSTANCE_NAME:1433;databaseName=DB_NAME - AWS 控制台让我保存,但它无法连接,因为它转义了反斜杠之后的所有内容
  • jdbc:sqlserver://HOST\\INSTANCE_NAME:1433;databaseName=DB_NAME - 使用两个反斜杠解决了之前的问题,但现在 AWS 认为端口是实例名称的一部分,因此无法连接
  • jdbc:sqlserver://;instanceName=INSTANCE_NAME;serverName=HOST:PORT;databaseName=DB_NAME - 我真的认为这会起作用,因为 AWS 认识到我正在尝试连接到一个命名实例,但它不理解主机:端口(它认为它是一个 IPV6 地址)

我尝试了更多变体,但你明白了。

我认为这是关于 AWS Glue 如何在内部分解连接字符串的一个特殊问题

非常感谢任何有关寻找 AWS Glue 理解的工作连接字符串(使用命名实例)的帮助。

【问题讨论】:

  • 我认为您可以简单地从连接字符串中省略实例名称,但您需要指定您的命名实例正在侦听的实际端口号,可能不是 1433。例如jdbc:sqlserver://HOST:12345;databaseName=DB_NAME。端口号将列在 SQL Server 错误日志中的消息中,例如“服务器正在侦听 ['any' 12345]”
  • 如果您想在连接字符串中使用实例名称,那么防火墙规则(和 AWS 中的安全组)需要允许 SQL 浏览器服务的 udp/1434,用于实例名称解析,此外无论您的实际实例正在侦听哪个 tcp 端口。连接到实例的端口并忽略实例名称通常要容易得多。
  • @DanGuzman 我能够得到命名实例正在侦听的端口,并且确实有效。非常感谢你的芽!随时发布答案,以便我接受它
  • @AlwaysLearning 感谢您的解释,我可能会尝试设置所有这些以使其在将来正常工作,但现在我接受了另一个建议,它直接连接到命名实例端口。谢谢

标签: sql-server jdbc connection-string aws-glue


【解决方案1】:

您可以指定端口号而不是连接字符串中的实例名称。

命名实例通常配置为侦听 1433 以外的端口,因此您需要确定实例列出的连接字符串规范的实际端口号。该端口列在“SQL Server 网络配置-->协议-->TCP/IP-->IP 地址”下的服务器配置管理器中。端口号也列在 SQL Server 错误日志“服务器正在侦听...”消息中。

仅具有非默认端口号的示例连接字符串:

 jdbc:sqlserver://HOST:12345;databaseName=DB_NAME

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 2017-03-22
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多