SQL 服务器的 Flyway 连接字符串的正确语法是什么?
What is the correct syntax for a Flyway connection string to SQL Server?
运行 SQL 远程计算机上的 Server 2012 Express,试图启动 Flyway 和 运行。我在 pcesqldev.pce.local
上有一个名为 Hawk
的数据库(dbo.Hawk
,如果这很重要)我想连接到它,配置文件中的模板如下所示:
SQL Server : jdbc:jtds:sqlserver://<host>:<port>/<database>
请注意,这与我在其他产品中使用的其他 jdbc 连接字符串不同 - 大多数产品不包含 jtds 部分,但包含实例名称。
下面是我试过的几个连接字符串,都失败了:
flyway.url=jdbc:jtds:sqlserver://pcesqldev.pce.local:1433/Hawk
Network error IOException: Connection refused: connect
flyway.url=jdbc:jtds:sqlserver://pcesqldev.pce.local\SQLEXPRESS:1433/Hawk
Unknown server host name 'pcesqldev.pce.local\SQLEXPRESS'
flyway.url=jdbc:jtds:sqlserver://pcesqldev.pce.local/SQLEXPRESS:1433/Hawk
Network error IOException: Connection refused: connect
flyway.url=jdbc:jtds:sqlserver://pcesqldev.pce.local:1433/SQLEXPRESS\Hawk
Network error IOException: Connection refused: connect
我错过了什么?一定有明显的东西,但我看不到。
在任何人问之前,是的,我们确实启用了对数据库的 TCP 访问,并且它正在使用端口 1433。
以防万一,正确的连接字符串如下:
flyway.url=jdbc:jtds:sqlserver://SERVER_INSTANCE_NAME:1433/DB_NAME
我花了一些时间才意识到这一点,但也许它会对某些人有所帮助:)
这个让我明白了,关于如何使用实例名称格式化连接字符串的答案并不多。
以下是对我有用的方法:
flyway.url=jdbc:jtds:sqlserver://<host>:<port>/<database>;instance=<instance_name>
这让我有点头疼。
我使用的连接字符串是这个(在命令行上作为参数传递给 flyway)。
另请注意,mydatabasename 需要已经存在。
./flyway migrate -url=jdbc:jtds:sqlserver://localhost:1433/mydatabasename -user=myuser -password=mypassword -baselineVersion=269 -baselineDescription="Base version" -outOfOrder=true -baselineOnMigrate=
虽然缺少一点,但我不是 运行 SQL 服务器浏览器,可能没有正确设置 TCP:
来自 SQL 服务器部分 here。
安装完成后,启用TCP/IP:
启动 Sql 服务器配置管理器
转到 SQL 服务器网络配置 -> SQLEXPRESS 的协议
启用 TCP/IP
TCP/IP 属性 -> IP 地址 -> IPAll
TCP 动态端口:空白
TCP端口:1433
然后启用远程访问:
启动 Sql 服务器配置管理器
SQL 服务器服务 -> SQL 服务器浏览器 -> 属性 -> 服务选项卡
启动方式:自动
好的
SQL 服务器浏览器 -> 开始
SQL 服务器 -> 重启
启动服务我的问题已解决"SQL Server Agent (SQLEXPRESS)"
步数:
- Windows + R -> 它会打开 "Run" window
- 键入 "services.msc" 不带双引号 ("")
- 搜索 SQL 服务器代理服务
- 右键单击 "SQL Server Agent" 并转到“属性”
- 将 "Startup type" 更改为 "Automatic" 并应用配置
- 点击"Apply"按钮后,会启用"Start"按钮,点击此按钮
- 服务启动后,再次尝试执行flyway
运行 SQL 远程计算机上的 Server 2012 Express,试图启动 Flyway 和 运行。我在 pcesqldev.pce.local
上有一个名为 Hawk
的数据库(dbo.Hawk
,如果这很重要)我想连接到它,配置文件中的模板如下所示:
SQL Server : jdbc:jtds:sqlserver://<host>:<port>/<database>
请注意,这与我在其他产品中使用的其他 jdbc 连接字符串不同 - 大多数产品不包含 jtds 部分,但包含实例名称。
下面是我试过的几个连接字符串,都失败了:
flyway.url=jdbc:jtds:sqlserver://pcesqldev.pce.local:1433/Hawk
Network error IOException: Connection refused: connect
flyway.url=jdbc:jtds:sqlserver://pcesqldev.pce.local\SQLEXPRESS:1433/Hawk
Unknown server host name 'pcesqldev.pce.local\SQLEXPRESS'
flyway.url=jdbc:jtds:sqlserver://pcesqldev.pce.local/SQLEXPRESS:1433/Hawk
Network error IOException: Connection refused: connect
flyway.url=jdbc:jtds:sqlserver://pcesqldev.pce.local:1433/SQLEXPRESS\Hawk
Network error IOException: Connection refused: connect
我错过了什么?一定有明显的东西,但我看不到。
在任何人问之前,是的,我们确实启用了对数据库的 TCP 访问,并且它正在使用端口 1433。
以防万一,正确的连接字符串如下:
flyway.url=jdbc:jtds:sqlserver://SERVER_INSTANCE_NAME:1433/DB_NAME
我花了一些时间才意识到这一点,但也许它会对某些人有所帮助:)
这个让我明白了,关于如何使用实例名称格式化连接字符串的答案并不多。
以下是对我有用的方法:
flyway.url=jdbc:jtds:sqlserver://<host>:<port>/<database>;instance=<instance_name>
这让我有点头疼。
我使用的连接字符串是这个(在命令行上作为参数传递给 flyway)。
另请注意,mydatabasename 需要已经存在。
./flyway migrate -url=jdbc:jtds:sqlserver://localhost:1433/mydatabasename -user=myuser -password=mypassword -baselineVersion=269 -baselineDescription="Base version" -outOfOrder=true -baselineOnMigrate=
虽然缺少一点,但我不是 运行 SQL 服务器浏览器,可能没有正确设置 TCP:
来自 SQL 服务器部分 here。 安装完成后,启用TCP/IP:
启动 Sql 服务器配置管理器 转到 SQL 服务器网络配置 -> SQLEXPRESS 的协议 启用 TCP/IP TCP/IP 属性 -> IP 地址 -> IPAll TCP 动态端口:空白 TCP端口:1433 然后启用远程访问:
启动 Sql 服务器配置管理器 SQL 服务器服务 -> SQL 服务器浏览器 -> 属性 -> 服务选项卡 启动方式:自动 好的 SQL 服务器浏览器 -> 开始 SQL 服务器 -> 重启
启动服务我的问题已解决"SQL Server Agent (SQLEXPRESS)"
步数:
- Windows + R -> 它会打开 "Run" window
- 键入 "services.msc" 不带双引号 ("")
- 搜索 SQL 服务器代理服务
- 右键单击 "SQL Server Agent" 并转到“属性”
- 将 "Startup type" 更改为 "Automatic" 并应用配置
- 点击"Apply"按钮后,会启用"Start"按钮,点击此按钮
- 服务启动后,再次尝试执行flyway