diff --git a/APL.txt b/APL.txt
index 8dada3eda..dcb926a55 100644
--- a/APL.txt
+++ b/APL.txt
@@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.
- Copyright {yyyy} {name of copyright owner}
+ Copyright (c) 2016-2023 EMQ Technologies Co., Ltd.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/apps/emqx_bridge_kafka/README.md b/apps/emqx_bridge_kafka/README.md
index f1b0d1f9a..07cae256b 100644
--- a/apps/emqx_bridge_kafka/README.md
+++ b/apps/emqx_bridge_kafka/README.md
@@ -12,14 +12,11 @@ not used by authentication and authorization applications.
# Documentation links
-For more information on Apache Kafka, please see its [official
-site](https://kafka.apache.org/).
+For more information about Apache Kafka, please see its [official site](https://kafka.apache.org/).
# Configurations
-Please see [our official
-documentation](https://www.emqx.io/docs/en/v5.0/data-integration/data-bridge-kafka.html)
-for more detailed info.
+Please see [Ingest data into Kafka](https://www.emqx.io/docs/en/v5.0/data-integration/data-bridge-kafka.html) for more detailed info.
# Contributing
diff --git a/apps/emqx_bridge_sqlserver/BSL.txt b/apps/emqx_bridge_sqlserver/BSL.txt
new file mode 100644
index 000000000..0acc0e696
--- /dev/null
+++ b/apps/emqx_bridge_sqlserver/BSL.txt
@@ -0,0 +1,94 @@
+Business Source License 1.1
+
+Licensor: Hangzhou EMQ Technologies Co., Ltd.
+Licensed Work: EMQX Enterprise Edition
+ The Licensed Work is (c) 2023
+ Hangzhou EMQ Technologies Co., Ltd.
+Additional Use Grant: Students and educators are granted right to copy,
+ modify, and create derivative work for research
+ or education.
+Change Date: 2027-02-01
+Change License: Apache License, Version 2.0
+
+For information about alternative licensing arrangements for the Software,
+please contact Licensor: https://www.emqx.com/en/contact
+
+Notice
+
+The Business Source License (this document, or the “License”) is not an Open
+Source license. However, the Licensed Work will eventually be made available
+under an Open Source License, as stated in this License.
+
+License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.
+“Business Source License” is a trademark of MariaDB Corporation Ab.
+
+-----------------------------------------------------------------------------
+
+Business Source License 1.1
+
+Terms
+
+The Licensor hereby grants you the right to copy, modify, create derivative
+works, redistribute, and make non-production use of the Licensed Work. The
+Licensor may make an Additional Use Grant, above, permitting limited
+production use.
+
+Effective on the Change Date, or the fourth anniversary of the first publicly
+available distribution of a specific version of the Licensed Work under this
+License, whichever comes first, the Licensor hereby grants you rights under
+the terms of the Change License, and the rights granted in the paragraph
+above terminate.
+
+If your use of the Licensed Work does not comply with the requirements
+currently in effect as described in this License, you must purchase a
+commercial license from the Licensor, its affiliated entities, or authorized
+resellers, or you must refrain from using the Licensed Work.
+
+All copies of the original and modified Licensed Work, and derivative works
+of the Licensed Work, are subject to this License. This License applies
+separately for each version of the Licensed Work and the Change Date may vary
+for each version of the Licensed Work released by Licensor.
+
+You must conspicuously display this License on each original or modified copy
+of the Licensed Work. If you receive the Licensed Work in original or
+modified form from a third party, the terms and conditions set forth in this
+License apply to your use of that work.
+
+Any use of the Licensed Work in violation of this License will automatically
+terminate your rights under this License for the current and all other
+versions of the Licensed Work.
+
+This License does not grant you any right in any trademark or logo of
+Licensor or its affiliates (provided that you may use a trademark or logo of
+Licensor as expressly required by this License).
+
+TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON
+AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS,
+EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND
+TITLE.
+
+MariaDB hereby grants you permission to use this License’s text to license
+your works, and to refer to it using the trademark “Business Source License”,
+as long as you comply with the Covenants of Licensor below.
+
+Covenants of Licensor
+
+In consideration of the right to use this License’s text and the “Business
+Source License” name and trademark, Licensor covenants to MariaDB, and to all
+other recipients of the licensed work to be provided by Licensor:
+
+1. To specify as the Change License the GPL Version 2.0 or any later version,
+ or a license that is compatible with GPL Version 2.0 or a later version,
+ where “compatible” means that software provided under the Change License can
+ be included in a program with software provided under GPL Version 2.0 or a
+ later version. Licensor may specify additional Change Licenses without
+ limitation.
+
+2. To either: (a) specify an additional grant of rights to use that does not
+ impose any additional restriction on the right granted in this License, as
+ the Additional Use Grant; or (b) insert the text “None”.
+
+3. To specify a Change Date.
+
+4. Not to modify this License in any other way.
diff --git a/apps/emqx_bridge_sqlserver/README.md b/apps/emqx_bridge_sqlserver/README.md
new file mode 100644
index 000000000..ccb1267d8
--- /dev/null
+++ b/apps/emqx_bridge_sqlserver/README.md
@@ -0,0 +1,36 @@
+# EMQX SQL Server Bridge
+
+[Microsoft SQL Server](https://www.microsoft.com/en-us/sql-server) is a relational database management system (RDBMS) that is developed and owned by Microsoft.
+Microsoft SQL Server offers a wide range of features, including support for high availability and disaster recovery,
+integration with other Microsoft products and services, and advanced security and encryption options.
+It also provides tools for data warehousing, business intelligence, and analytics, making it a versatile and powerful database platform.
+
+The application is used to connect EMQX and Microsoft SQL Server.
+User can create a rule and easily ingest IoT data into Microsoft SQL Server by leveraging
+[EMQX Rules](https://docs.emqx.com/en/enterprise/v5.0/data-integration/rules.html).
+
+
+## Documentation links
+
+For more information about Microsoft SQL Server, please see the [official site](https://learn.microsoft.com/en-us/sql/sql-server/?view=sql-server-ver16)
+
+# Configurations
+
+Please see [Ingest data into SQL Server](https://www.emqx.io/docs/en/v5.0/data-integration/data-bridge-sqlserver.html) for more detailed information.
+
+# HTTP APIs
+
+- Several APIs are provided for bridge management, which includes create bridge,
+ update bridge, get bridge, stop or restart bridge and list bridges etc.
+
+ Refer to [API Docs - Bridges](https://docs.emqx.com/en/enterprise/v5.0/admin/api-docs.html#tag/Bridges) for more detailed information.
+
+
+# Contributing
+
+Please see our [contributing.md](../../CONTRIBUTING.md).
+
+
+# License
+
+EMQ Business Source License 1.1, refer to [LICENSE](BSL.txt).
diff --git a/apps/emqx_bridge_sqlserver/docker-ct b/apps/emqx_bridge_sqlserver/docker-ct
new file mode 100644
index 000000000..6f046e2df
--- /dev/null
+++ b/apps/emqx_bridge_sqlserver/docker-ct
@@ -0,0 +1,2 @@
+toxiproxy
+sqlserver
diff --git a/apps/emqx_bridge_sqlserver/include/emqx_bridge_sqlserver.hrl b/apps/emqx_bridge_sqlserver/include/emqx_bridge_sqlserver.hrl
new file mode 100644
index 000000000..3aa78fdd8
--- /dev/null
+++ b/apps/emqx_bridge_sqlserver/include/emqx_bridge_sqlserver.hrl
@@ -0,0 +1,5 @@
+%%--------------------------------------------------------------------
+%% Copyright (c) 2023 EMQ Technologies Co., Ltd. All Rights Reserved.
+%%--------------------------------------------------------------------
+
+-define(SQLSERVER_DEFAULT_PORT, 1433).
diff --git a/apps/emqx_bridge_sqlserver/rebar.config b/apps/emqx_bridge_sqlserver/rebar.config
new file mode 100644
index 000000000..5f586f529
--- /dev/null
+++ b/apps/emqx_bridge_sqlserver/rebar.config
@@ -0,0 +1,10 @@
+%% -*- mode: erlang; -*-
+{erl_opts, [debug_info]}.
+{deps, [ {emqx_connector, {path, "../../apps/emqx_connector"}}
+ , {emqx_resource, {path, "../../apps/emqx_resource"}}
+ , {emqx_bridge, {path, "../../apps/emqx_bridge"}}
+ ]}.
+
+{shell, [
+ {apps, [emqx_bridge_sqlserver]}
+]}.
diff --git a/apps/emqx_bridge_sqlserver/src/emqx_bridge_sqlserver.app.src b/apps/emqx_bridge_sqlserver/src/emqx_bridge_sqlserver.app.src
new file mode 100644
index 000000000..a0b4e287b
--- /dev/null
+++ b/apps/emqx_bridge_sqlserver/src/emqx_bridge_sqlserver.app.src
@@ -0,0 +1,9 @@
+{application, emqx_bridge_sqlserver, [
+ {description, "EMQX Enterprise SQL Server Bridge"},
+ {vsn, "0.1.0"},
+ {registered, []},
+ {applications, [kernel, stdlib, odbc]},
+ {env, []},
+ {modules, []},
+ {links, []}
+]}.
diff --git a/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_sqlserver.erl b/apps/emqx_bridge_sqlserver/src/emqx_bridge_sqlserver.erl
similarity index 97%
rename from lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_sqlserver.erl
rename to apps/emqx_bridge_sqlserver/src/emqx_bridge_sqlserver.erl
index 49db815a6..8a97cb2ad 100644
--- a/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_sqlserver.erl
+++ b/apps/emqx_bridge_sqlserver/src/emqx_bridge_sqlserver.erl
@@ -1,7 +1,7 @@
%%--------------------------------------------------------------------
%% Copyright (c) 2022-2023 EMQ Technologies Co., Ltd. All Rights Reserved.
%%--------------------------------------------------------------------
--module(emqx_ee_bridge_sqlserver).
+-module(emqx_bridge_sqlserver).
-include_lib("typerefl/include/types.hrl").
-include_lib("hocon/include/hoconsc.hrl").
@@ -96,7 +96,7 @@ fields("config") ->
}
)}
] ++
- (emqx_ee_connector_sqlserver:fields(config) --
+ (emqx_bridge_sqlserver_connector:fields(config) --
emqx_connector_schema_lib:prepare_statement_fields());
fields("creation_opts") ->
emqx_resource_schema:fields("creation_opts");
diff --git a/lib-ee/emqx_ee_connector/src/emqx_ee_connector_sqlserver.erl b/apps/emqx_bridge_sqlserver/src/emqx_bridge_sqlserver_connector.erl
similarity index 99%
rename from lib-ee/emqx_ee_connector/src/emqx_ee_connector_sqlserver.erl
rename to apps/emqx_bridge_sqlserver/src/emqx_bridge_sqlserver_connector.erl
index f7e825783..ed8134051 100644
--- a/lib-ee/emqx_ee_connector/src/emqx_ee_connector_sqlserver.erl
+++ b/apps/emqx_bridge_sqlserver/src/emqx_bridge_sqlserver_connector.erl
@@ -2,14 +2,15 @@
%% Copyright (c) 2023 EMQ Technologies Co., Ltd. All Rights Reserved.
%%--------------------------------------------------------------------
--module(emqx_ee_connector_sqlserver).
+-module(emqx_bridge_sqlserver_connector).
-behaviour(emqx_resource).
+-include("emqx_bridge_sqlserver.hrl").
+
-include_lib("kernel/include/file.hrl").
-include_lib("emqx/include/logger.hrl").
-include_lib("emqx_resource/include/emqx_resource.hrl").
--include_lib("emqx_ee_connector/include/emqx_ee_connector.hrl").
-include_lib("typerefl/include/types.hrl").
-include_lib("hocon/include/hoconsc.hrl").
@@ -51,7 +52,7 @@
-define(SYNC_QUERY_MODE, handover).
-define(SQLSERVER_HOST_OPTIONS, #{
- default_port => 1433
+ default_port => ?SQLSERVER_DEFAULT_PORT
}).
-define(REQUEST_TIMEOUT(RESOURCE_OPTS),
diff --git a/lib-ee/emqx_ee_bridge/test/emqx_ee_bridge_sqlserver_SUITE.erl b/apps/emqx_bridge_sqlserver/test/emqx_bridge_sqlserver_SUITE.erl
similarity index 96%
rename from lib-ee/emqx_ee_bridge/test/emqx_ee_bridge_sqlserver_SUITE.erl
rename to apps/emqx_bridge_sqlserver/test/emqx_bridge_sqlserver_SUITE.erl
index 68bf7a057..fcf20da8f 100644
--- a/lib-ee/emqx_ee_bridge/test/emqx_ee_bridge_sqlserver_SUITE.erl
+++ b/apps/emqx_bridge_sqlserver/test/emqx_bridge_sqlserver_SUITE.erl
@@ -2,11 +2,12 @@
% Copyright (c) 2022-2023 EMQ Technologies Co., Ltd. All Rights Reserved.
%%--------------------------------------------------------------------
--module(emqx_ee_bridge_sqlserver_SUITE).
+-module(emqx_bridge_sqlserver_SUITE).
-compile(nowarn_export_all).
-compile(export_all).
+-include("emqx_bridge_sqlserver/include/emqx_bridge_sqlserver.hrl").
-include_lib("eunit/include/eunit.hrl").
-include_lib("common_test/include/ct.hrl").
-include_lib("snabbkaffe/include/snabbkaffe.hrl").
@@ -59,24 +60,30 @@
%% How to run it locally (all commands are run in $PROJ_ROOT dir):
%% A: run ct on host
%% 1. Start all deps services
+%% ```bash
%% sudo docker compose -f .ci/docker-compose-file/docker-compose.yaml \
%% -f .ci/docker-compose-file/docker-compose-sqlserver.yaml \
%% -f .ci/docker-compose-file/docker-compose-toxiproxy.yaml \
%% up --build
+%% ```
%%
%% 2. Run use cases with special environment variables
%% 11433 is toxiproxy exported port.
%% Local:
-%% ```
+%% ```bash
%% SQLSERVER_HOST=toxiproxy SQLSERVER_PORT=11433 \
%% PROXY_HOST=toxiproxy PROXY_PORT=1433 \
-%% ./rebar3 as test ct -c -v --readable true --name ct@127.0.0.1 --suite lib-ee/emqx_ee_bridge/test/emqx_ee_bridge_sqlserver_SUITE.erl
+%% ./rebar3 as test ct -c -v --readable true --name ct@127.0.0.1 \
+%% --suite apps/emqx_bridge_sqlserver/test/emqx_bridge_sqlserver_SUITE.erl
%% ```
%%
%% B: run ct in docker container
%% run script:
-%% ./scripts/ct/run.sh --ci --app lib-ee/emqx_ee_bridge/ \
-%% -- --name 'test@127.0.0.1' -c -v --readable true --suite lib-ee/emqx_ee_bridge/test/emqx_ee_bridge_sqlserver_SUITE.erl
+%% ```bash
+%% ./scripts/ct/run.sh --ci --app apps/emqx_bridge_sqlserver/ -- \
+%% --name 'test@127.0.0.1' -c -v --readable true \
+%% --suite apps/emqx_bridge_sqlserver/test/emqx_bridge_sqlserver_SUITE.erl
+%% ````
%%------------------------------------------------------------------------------
%% CT boilerplate
@@ -391,7 +398,7 @@ t_bad_parameter(Config) ->
common_init(ConfigT) ->
Host = os:getenv("SQLSERVER_HOST", "toxiproxy"),
- Port = list_to_integer(os:getenv("SQLSERVER_PORT", "1433")),
+ Port = list_to_integer(os:getenv("SQLSERVER_PORT", str(?SQLSERVER_DEFAULT_PORT))),
Config0 = [
{sqlserver_host, Host},
@@ -631,7 +638,7 @@ conn_str([], Acc) ->
conn_str([{driver, Driver} | Opts], Acc) ->
conn_str(Opts, ["Driver=" ++ str(Driver) | Acc]);
conn_str([{host, Host} | Opts], Acc) ->
- Port = proplists:get_value(port, Opts, "1433"),
+ Port = proplists:get_value(port, Opts, str(?SQLSERVER_DEFAULT_PORT)),
NOpts = proplists:delete(port, Opts),
conn_str(NOpts, ["Server=" ++ str(Host) ++ "," ++ str(Port) | Acc]);
conn_str([{port, Port} | Opts], Acc) ->
diff --git a/lib-ee/emqx_ee_bridge/docker-ct b/lib-ee/emqx_ee_bridge/docker-ct
index aa19a495f..469271541 100644
--- a/lib-ee/emqx_ee_bridge/docker-ct
+++ b/lib-ee/emqx_ee_bridge/docker-ct
@@ -10,4 +10,3 @@ tdengine
clickhouse
dynamo
rocketmq
-sqlserver
diff --git a/lib-ee/emqx_ee_bridge/rebar.config b/lib-ee/emqx_ee_bridge/rebar.config
index 358ff3bc8..3b3be6ccf 100644
--- a/lib-ee/emqx_ee_bridge/rebar.config
+++ b/lib-ee/emqx_ee_bridge/rebar.config
@@ -1,3 +1,4 @@
+%% -*- mode: erlang; -*-
{erl_opts, [debug_info]}.
{deps, [ {emqx_connector, {path, "../../apps/emqx_connector"}}
, {emqx_resource, {path, "../../apps/emqx_resource"}}
diff --git a/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge.app.src b/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge.app.src
index 825175038..d0317cbc9 100644
--- a/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge.app.src
+++ b/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge.app.src
@@ -11,7 +11,8 @@
emqx_bridge_gcp_pubsub,
emqx_bridge_cassandra,
emqx_bridge_opents,
- emqx_bridge_pulsar
+ emqx_bridge_pulsar,
+ emqx_bridge_sqlserver
]},
{env, []},
{modules, []},
diff --git a/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge.erl b/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge.erl
index b18872cf1..c3032590e 100644
--- a/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge.erl
+++ b/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge.erl
@@ -35,7 +35,7 @@ api_schemas(Method) ->
ref(emqx_ee_bridge_clickhouse, Method),
ref(emqx_ee_bridge_dynamo, Method),
ref(emqx_ee_bridge_rocketmq, Method),
- ref(emqx_ee_bridge_sqlserver, Method),
+ ref(emqx_bridge_sqlserver, Method),
ref(emqx_bridge_opents, Method),
ref(emqx_bridge_pulsar, Method ++ "_producer"),
ref(emqx_bridge_oracle, Method)
@@ -58,7 +58,7 @@ schema_modules() ->
emqx_ee_bridge_clickhouse,
emqx_ee_bridge_dynamo,
emqx_ee_bridge_rocketmq,
- emqx_ee_bridge_sqlserver,
+ emqx_bridge_sqlserver,
emqx_bridge_opents,
emqx_bridge_pulsar,
emqx_bridge_oracle
@@ -100,7 +100,7 @@ resource_type(tdengine) -> emqx_ee_connector_tdengine;
resource_type(clickhouse) -> emqx_ee_connector_clickhouse;
resource_type(dynamo) -> emqx_ee_connector_dynamo;
resource_type(rocketmq) -> emqx_ee_connector_rocketmq;
-resource_type(sqlserver) -> emqx_ee_connector_sqlserver;
+resource_type(sqlserver) -> emqx_bridge_sqlserver_connector;
resource_type(opents) -> emqx_bridge_opents_connector;
resource_type(pulsar_producer) -> emqx_bridge_pulsar_impl_producer;
resource_type(oracle) -> emqx_oracle.
@@ -295,7 +295,7 @@ sqlserver_structs() ->
[
{sqlserver,
mk(
- hoconsc:map(name, ref(emqx_ee_bridge_sqlserver, "config")),
+ hoconsc:map(name, ref(emqx_bridge_sqlserver, "config")),
#{
desc => <<"Microsoft SQL Server Bridge Config">>,
required => false
diff --git a/lib-ee/emqx_ee_connector/docker-ct b/lib-ee/emqx_ee_connector/docker-ct
index cb2f6f028..3db090939 100644
--- a/lib-ee/emqx_ee_connector/docker-ct
+++ b/lib-ee/emqx_ee_connector/docker-ct
@@ -1,4 +1,3 @@
toxiproxy
influxdb
clickhouse
-sqlserver
diff --git a/lib-ee/emqx_ee_connector/src/emqx_ee_connector.app.src b/lib-ee/emqx_ee_connector/src/emqx_ee_connector.app.src
index baf54eff1..68e36f48a 100644
--- a/lib-ee/emqx_ee_connector/src/emqx_ee_connector.app.src
+++ b/lib-ee/emqx_ee_connector/src/emqx_ee_connector.app.src
@@ -11,8 +11,7 @@
tdengine,
clickhouse,
erlcloud,
- rocketmq,
- odbc
+ rocketmq
]},
{env, []},
{modules, []},
diff --git a/mix.exs b/mix.exs
index a24068f49..0323c7896 100644
--- a/mix.exs
+++ b/mix.exs
@@ -170,6 +170,7 @@ defmodule EMQXUmbrella.MixProject do
:emqx_bridge_rocketmq,
:emqx_bridge_tdengine,
:emqx_bridge_timescale,
+ :emqx_bridge_sqlserver,
:emqx_bridge_pulsar,
:emqx_oracle,
:emqx_bridge_oracle
@@ -379,6 +380,7 @@ defmodule EMQXUmbrella.MixProject do
emqx_bridge_rocketmq: :permanent,
emqx_bridge_tdengine: :permanent,
emqx_bridge_timescale: :permanent,
+ emqx_bridge_sqlserver: :permanent,
emqx_oracle: :permanent,
emqx_bridge_oracle: :permanent,
emqx_ee_schema_registry: :permanent
diff --git a/rebar.config.erl b/rebar.config.erl
index 61d420e48..524afe5bf 100644
--- a/rebar.config.erl
+++ b/rebar.config.erl
@@ -95,6 +95,7 @@ is_community_umbrella_app("apps/emqx_bridge_rocketmq") -> false;
is_community_umbrella_app("apps/emqx_bridge_tdengine") -> false;
is_community_umbrella_app("apps/emqx_bridge_timescale") -> false;
is_community_umbrella_app("apps/emqx_bridge_oracle") -> false;
+is_community_umbrella_app("apps/emqx_bridge_sqlserver") -> false;
is_community_umbrella_app("apps/emqx_oracle") -> false;
is_community_umbrella_app(_) -> true.
@@ -470,6 +471,7 @@ relx_apps_per_edition(ee) ->
emqx_bridge_rocketmq,
emqx_bridge_tdengine,
emqx_bridge_timescale,
+ emqx_bridge_sqlserver,
emqx_oracle,
emqx_bridge_oracle,
emqx_ee_schema_registry
diff --git a/rel/i18n/emqx_ee_bridge_sqlserver.hocon b/rel/i18n/emqx_bridge_sqlserver.hocon
similarity index 97%
rename from rel/i18n/emqx_ee_bridge_sqlserver.hocon
rename to rel/i18n/emqx_bridge_sqlserver.hocon
index 396126622..0e0801f42 100644
--- a/rel/i18n/emqx_ee_bridge_sqlserver.hocon
+++ b/rel/i18n/emqx_bridge_sqlserver.hocon
@@ -1,4 +1,4 @@
-emqx_ee_bridge_sqlserver {
+emqx_bridge_sqlserver {
config_enable.desc:
"""Enable or disable this bridge"""
diff --git a/rel/i18n/emqx_ee_connector_sqlserver.hocon b/rel/i18n/emqx_bridge_sqlserver_connector.hocon
similarity index 87%
rename from rel/i18n/emqx_ee_connector_sqlserver.hocon
rename to rel/i18n/emqx_bridge_sqlserver_connector.hocon
index ef68865fe..882b755eb 100644
--- a/rel/i18n/emqx_ee_connector_sqlserver.hocon
+++ b/rel/i18n/emqx_bridge_sqlserver_connector.hocon
@@ -1,4 +1,4 @@
-emqx_ee_connector_sqlserver {
+emqx_bridge_sqlserver_connector {
server.desc:
"""The IPv4 or IPv6 address or the hostname to connect to.
diff --git a/rel/i18n/zh/emqx_ee_bridge_sqlserver.hocon b/rel/i18n/zh/emqx_bridge_sqlserver.hocon
similarity index 96%
rename from rel/i18n/zh/emqx_ee_bridge_sqlserver.hocon
rename to rel/i18n/zh/emqx_bridge_sqlserver.hocon
index 0958d4b7a..b4750ac0d 100644
--- a/rel/i18n/zh/emqx_ee_bridge_sqlserver.hocon
+++ b/rel/i18n/zh/emqx_bridge_sqlserver.hocon
@@ -1,4 +1,4 @@
-emqx_ee_bridge_sqlserver {
+emqx_bridge_sqlserver {
config_enable.desc:
"""启用/禁用桥接"""
diff --git a/rel/i18n/zh/emqx_ee_connector_sqlserver.hocon b/rel/i18n/zh/emqx_bridge_sqlserver_connector.hocon
similarity index 87%
rename from rel/i18n/zh/emqx_ee_connector_sqlserver.hocon
rename to rel/i18n/zh/emqx_bridge_sqlserver_connector.hocon
index 44377c86d..c326d153c 100644
--- a/rel/i18n/zh/emqx_ee_connector_sqlserver.hocon
+++ b/rel/i18n/zh/emqx_bridge_sqlserver_connector.hocon
@@ -1,4 +1,4 @@
-emqx_ee_connector_sqlserver {
+emqx_bridge_sqlserver_connector {
server.desc:
"""将要连接的 IPv4 或 IPv6 地址,或者主机名。
diff --git a/scripts/ct/run.sh b/scripts/ct/run.sh
index 3e4e3d44b..89082a4bd 100755
--- a/scripts/ct/run.sh
+++ b/scripts/ct/run.sh
@@ -193,7 +193,7 @@ for dep in ${CT_DEPS}; do
;;
pulsar)
FILES+=( '.ci/docker-compose-file/docker-compose-pulsar.yaml' )
- ;;
+ ;;
oracle)
FILES+=( '.ci/docker-compose-file/docker-compose-oracle.yaml' )
;;