同一台电脑运行了两个相同的SQL SERVER数据客户端,可否操作同一个SQL数据库

liuhuan992 2018-09-06 02:36:15
同一台电脑运行了两个相同的SQL SERVER数据客户端,可否分别操作同一个SQL数据库
在同一时间里对同一个SQL SERVER数据库进行添加数据,删除等操作。
...全文
2274 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
E树ERP 2019-05-16
  • 打赏
  • 举报
回复
当然可以. 多用户并发操作!!!
kmbrkj 2019-05-13
  • 打赏
  • 举报
回复
可以,在数据提交代码中处理好并发冲突就没问题
浪子家园 2019-04-13
  • 打赏
  • 举报
回复
理论上不存在问题的,只存在什么呢?不同客户端同时删除相同的一条记录,会发生并发冲突,而且也是可以由数据库返回错误标识的,所以,其实是并不存在问题,只是你需要程序中识别这种不应该发生的错误就可以了。
sczyq 2019-04-10
  • 打赏
  • 举报
回复
引用 1 楼 lyhoo163 的回复:
DataSnap三层,通过IP地址和端口号,登记的,同一台电脑连接远程服务而言,是不能区别IP地址的。因此,一台电脑只使用一个客户端。
DataSnap 还有这样的限制?
建军黄 2019-02-13
  • 打赏
  • 举报
回复
delphi用 ADOConnection1 连接,不用担心这个问题,我现在主界面就有三个 ADOConnection 连接三个数据库,而客户端就更多,可以说是 N对N的关系,完全没问题。
秋天之落叶 2019-01-28
  • 打赏
  • 举报
回复
什么叫两个相同的sql server数据客户端?
1、一个SQL server2014,一个SQL server2017,同时运行,设置相同路径,使用同一个数据库,可以。我就是这么干的。
2、两个2014或2017也行,只要你能运行起来。我的32位win7+2014没问题。
3、一个VB.net,一个delphi,两个应用对一个数据库,没问题,我就是一个数据库对了三个不同应用程序,还有一个PB。
4、两个都是delphi,对应一个数据库,3都没问题,这个更问题了。
victor_yang 2019-01-28
  • 打赏
  • 举报
回复
绝对可以,我开发的客户端在同一台电脑是同时可以开多个的,只需要在保存时用事务来提交就没问题
下面是D7 + ADO的例子

try
if PubData1.Con1.InTransaction then //ADOConnection清除当前事务
PubData1.Con1.RollbackTrans;
PubData1.Con1.BeginTrans; //ADOConnection开始事务
// 开始写你的保存语句

//此时还没有真正提交到数据库
PubData1.Con1.CommitTrans; //这句才表示提交
MessageDlg('保存成功!',mtInformation,[mbOK],0);
except
on E:Exception do
begin
PubData1.Con1.RollbackTrans; //如果提交数据出错就要回滚,这句很重要
MessageDlg('数据保存失败!原因是:'+#13#10+E.Message,mtWarning,[mbOK],0); //报告出错的内容
end;
end;

weixin_44544555 2019-01-28
  • 打赏
  • 举报
回复
理论上应该可以的
zqycn 2019-01-14
  • 打赏
  • 举报
回复
可以,但是先提交先入,事物处理,锁处理好,其实MSSQL别说两个几千个都行
lyhoo163 2019-01-04
  • 打赏
  • 举报
回复
此问题,归纳一句话:可以。
morninggood 2019-01-04
  • 打赏
  • 举报
回复
完全没问题!
doloopcn 2018-12-28
  • 打赏
  • 举报
回复
答案:可以。

这是一个多用户、并发、共享的概念。
你要准备好的是处理资源的并发和数据共享的思路。
比如:删除。
一个客户端删除了数据,另一个客户端没有及时更新,也要删除同样的数据,就会产生不可预料的错误。
又如:查询。
一个客户端增加了新的数据,但另一个客户端没有及时更新,就会提示找不到数据。
还有:更新。
一个客户端更新了数据,另一个客户也对同一条数据进行更新,那么前一个客户端看到的数据就不是最新的了。
......

总结:你对数据操作完成后,如果有必要你得告诉其他客户端进行更新或其他操作。

建议:1.尽量使用结构化SQL语句对数据进行操作(如:使用Query.Execut来完成数据插入),尽量避免使用Query.Edit;。。。Query.Post;之类的语句。
2.尽量使用事务。就是Connection.BeginTran;...Connection.CommitTran;
想到才能做到 2018-12-27
  • 打赏
  • 举报
回复
为什么会不行呢,sql 强大到你难以致信。
BlueStorm 2018-09-27
  • 打赏
  • 举报
回复
识别码是什么东西?
伯约冰橙 2018-09-27
  • 打赏
  • 举报
回复
楼上的朋友回答很详细了,是可以的,关键在于识别码的区别。
Frank.WU 2018-09-22
  • 打赏
  • 举报
回复
可以,操作数据注意加锁。
jjpweb 2018-09-21
  • 打赏
  • 举报
回复
可以,跟两台电脑各运行一个无差别
liuhengwinner 2018-09-17
  • 打赏
  • 举报
回复
delphi的话, remobject不错!
lyhoo163 2018-09-09
  • 打赏
  • 举报
回复
1、B/S 模式,通过浏览器访问,对于同一台电脑二个浏览器的访问,通常使用cookie,来区别。
2、C/S 模式,通过客户端访问,对于同一台电脑二个客户端的访问,就是同一人的访问,使用上是无区别的。
3、正常情况下,二个客户端的访问,如同一个客户端的访问。此时,同一台电脑运行了两个相同的SQL SERVER数据客户端,可以分别操作同一个SQL数据库进行操作,但意义不大。
4、如果要让同一台电脑二个客户端的访问,视如不同的客户,就得在服务器端的处理数据时,每条语句都得加入客户的识别码。这样,通过SQL语句操作时,加入识别码。
lyhoo163 2018-09-07
  • 打赏
  • 举报
回复
主要取决于连接方式。
加载更多回复(2)

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧