以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 更换sql数据源 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=174653) |
-- 作者:lisangyu -- 发布时间:2022/1/25 14:10:00 -- 更换sql数据源 蓝总:您好! 之前已经已经发布了应用程序,后来考虑业务需要,原来的服务器配置跟不上需求,所以需要更换一台服务器作为数据源,现在两台服务器数据库一模一样,表也一样,怎么利用BeforeConnectOuterDataSource,直接更改系统数据源链接字符串,更换数据库地址、数据库、端口以及密码,实现一键更换所有用户端使用新数据源。把数据库链接信息放到表里可以吗?当然原数据库还有效,不然其他用户端就无法登陆了。 备用方法:我直接把程序更新好,发布后,利用ftp远程更新,感觉麻烦,尤其是不涉及程序更新,只是更换服务器。
|
-- 作者:有点蓝 -- 发布时间:2022/1/25 14:33:00 -- BeforeConnectOuterDataSource写了什么代码? |
-- 作者:lisangyu -- 发布时间:2022/1/25 15:34:00 -- 还没写呢?还没思路?蓝老师 |
-- 作者:有点蓝 -- 发布时间:2022/1/25 15:37:00 -- 那就参考BeforeConnectOuterDataSource帮助做,里面有各种用法。如果改数据源不想更新程序,就把IP地址放到配置文件里,读取文件更新数据源连接字符串即可 |
-- 作者:lisangyu -- 发布时间:2022/1/25 16:19:00 -- 蓝总: If e.Name = "知识" Then Tables("服务器设置").Position =0 \'移动到第一行,以免出错 Dim IP As String = e.User.ExtendedValues("trim(Tables("服务器设置").current("服务器IP"))") \'获得用户更新的IP Dim sjk As String = e.User.ExtendedValues("trim(Tables("服务器设置").current("数据库名"))") \'获得用户更新的数据库名 Dim user As String = e.User.ExtendedValues("trim(Tables("服务器设置").current("账户"))") \'获得用户更新的数据库名 Dim password As String = e.User.ExtendedValues("trim(Tables("服务器设置").current("密码"))") \'获得用户更新的数据库密码 Dim dk As String = e.User.ExtendedValues("trim(Tables("服务器设置").current("端口"))") \'获得用户更新的数据库密码 If IP > "" \'如果用户自己更新了IP \'则用用户输入的IP替换原来的IP Tables("服务器设置").Position =1 \'移动到第二行,以免出错 e.ConnectionString = e.ConnectionString.Replace("trim(Tables("FTP配置信息").current("地址"))", IP)用新 e.ConnectionString = e.ConnectionString.Replace("trim(Tables("服务器设置").current("数据库名"))", sjk)用新 e.ConnectionString = e.ConnectionString.Replace("trim(Tables("服务器设置").current("账户"))", user)用新 e.ConnectionString = e.ConnectionString.Replace("trim(Tables("服务器设置").current("密码"))", password)用新 e.ConnectionString = e.ConnectionString.Replace("trim(Tables("服务器设置").current("端口"))", dk)用新 End If End If 我把新数据库信息写在Tables("服务器设置")第一行,原数据库写在第二行。当我更新第一行时,数据源信息自动更新,可以吗?
|
-- 作者:有点蓝 -- 发布时间:2022/1/25 16:34:00 -- 不可以,这时候还没有连接数据源,表格还没有加载无法使用的。 如果是内置用户可以使用扩展属性 如果是外部用户,只能使用配置文件
|
-- 作者:lgzhao -- 发布时间:2022/1/25 17:05:00 -- 用foxtable服务端做个web服务,客户端beforeopenproject事件里访问该网址并验证,之后服务端发给客户端数据库字符串。将来有变动仅改服务端即可。 |