diff --git a/backend/apps/datasource/models/datasource.py b/backend/apps/datasource/models/datasource.py index ddd37c7f..2f5f4a45 100644 --- a/backend/apps/datasource/models/datasource.py +++ b/backend/apps/datasource/models/datasource.py @@ -120,6 +120,7 @@ class DatasourceConf(BaseModel): sheets: List = '' mode: str = '' timeout: int = 30 + lowVersion: bool = False def to_dict(self): return { @@ -134,7 +135,8 @@ def to_dict(self): "filename": self.filename, "sheets": self.sheets, "mode": self.mode, - "timeout": self.timeout + "timeout": self.timeout, + "lowVersion": self.lowVersion } diff --git a/backend/apps/db/db.py b/backend/apps/db/db.py index 1d0477c0..0334b060 100644 --- a/backend/apps/db/db.py +++ b/backend/apps/db/db.py @@ -108,16 +108,28 @@ def get_extra_config(conf: DatasourceConf): def get_origin_connect(type: str, conf: DatasourceConf): extra_config_dict = get_extra_config(conf) if equals_ignore_case(type, "sqlServer"): - return pymssql.connect( - server=conf.host, - port=str(conf.port), - user=conf.username, - password=conf.password, - database=conf.database, - timeout=conf.timeout, - tds_version='7.0', # options: '4.2', '7.0', '8.0' ..., - **extra_config_dict - ) + # none or true, set tds_version = 7.0 + if conf.lowVersion is None or conf.lowVersion: + return pymssql.connect( + server=conf.host, + port=str(conf.port), + user=conf.username, + password=conf.password, + database=conf.database, + timeout=conf.timeout, + tds_version='7.0', # options: '4.2', '7.0', '8.0' ..., + **extra_config_dict + ) + else: + return pymssql.connect( + server=conf.host, + port=str(conf.port), + user=conf.username, + password=conf.password, + database=conf.database, + timeout=conf.timeout, + **extra_config_dict + ) # use sqlalchemy diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index 9b395f21..d987f221 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -348,7 +348,8 @@ "failed": "Connect failed" }, "timeout": "Timeout(second)", - "address": "Address" + "address": "Address", + "low_version": "Compatible with lower versions" }, "sync_fields": "Sync Fields" }, diff --git a/frontend/src/i18n/ko-KR.json b/frontend/src/i18n/ko-KR.json index 115d0ff5..4d957b5c 100644 --- a/frontend/src/i18n/ko-KR.json +++ b/frontend/src/i18n/ko-KR.json @@ -348,7 +348,8 @@ "failed": "연결 실패" }, "timeout": "쿼리 시간 초과(초)", - "address": "주소" + "address": "주소", + "low_version": "낮은 버전 호환" }, "sync_fields": "동기화된 테이블 구조" }, diff --git a/frontend/src/i18n/zh-CN.json b/frontend/src/i18n/zh-CN.json index 7917701e..4c13744d 100644 --- a/frontend/src/i18n/zh-CN.json +++ b/frontend/src/i18n/zh-CN.json @@ -348,7 +348,8 @@ "failed": "连接失败" }, "timeout": "查询超时(秒)", - "address": "地址" + "address": "地址", + "low_version": "兼容低版本" }, "sync_fields": "同步表结构" }, diff --git a/frontend/src/views/ds/DatasourceForm.vue b/frontend/src/views/ds/DatasourceForm.vue index b8d99933..62d37bc7 100644 --- a/frontend/src/views/ds/DatasourceForm.vue +++ b/frontend/src/views/ds/DatasourceForm.vue @@ -116,6 +116,7 @@ const form = ref({ sheets: [], mode: 'service_name', timeout: 30, + lowVersion: false, }) const close = () => { @@ -159,6 +160,10 @@ const initForm = (item: any, editTable: boolean = false) => { form.value.sheets = configuration.sheets form.value.mode = configuration.mode form.value.timeout = configuration.timeout ? configuration.timeout : 30 + form.value.lowVersion = + configuration.lowVersion !== null && configuration.lowVersion !== undefined + ? configuration.lowVersion + : true } if (editTable) { @@ -230,6 +235,7 @@ const initForm = (item: any, editTable: boolean = false) => { sheets: [], mode: 'service_name', timeout: 30, + lowVersion: false, } } dialogVisible.value = true @@ -317,6 +323,7 @@ const buildConf = () => { sheets: form.value.sheets, mode: form.value.mode, timeout: form.value.timeout, + lowVersion: form.value.lowVersion, }) ) const obj = JSON.parse(JSON.stringify(form.value)) @@ -332,6 +339,7 @@ const buildConf = () => { delete obj.sheets delete obj.mode delete obj.timeout + delete obj.lowVersion return obj } @@ -671,6 +679,13 @@ defineExpose({ {{ t('ds.form.mode.sid') }} + + +