2 aeawrgag aeawrgag 于 2015.06.11 20:50 提问

VBA访问局域网sql提问报错

访问本地没问题: conn.Open "Provider=SQLOLEDB; User ID=sa;Password=123456;Initial Catalog=report;Data Source=.\WINCC"
改为访问服务器
修改1:conn.Open "Driver={SQL Server};Server=192.168.0.158;uid=sa;pass=123456;database=report"
报错:
图片说明

修改2:
conn.Open "Driver={SQL Server};Server=192.168.0.158;uid=sa;pass=123456;database=report;Data Source=.\WINCC"
报错:
图片说明
修改3:
conn.Open "Provider=SQLOLEDB;Server=192.168.0.158;User ID=sa;Password=123456;Initial Catalog=report;Data Source=.\WINCC"
还是报错:
图片说明
PS:防火墙关闭,可以ping通,并且SQL开启了远程。
对了,服务器系统windows server 2008 r2,客户端系统XP SP3。

6个回答

albertbush
albertbush   2015.06.11 21:14

最后一个(修改3)最接近了。密码错,好好确认一下sa的密码是什么

aeawrgag
aeawrgag 服务器本地可以,说明密码没错啊。。。
2 年多之前 回复
danielinbiti
danielinbiti   Ds   Rxr 2015.06.11 21:50
先确认支持sa登录,然后改成
 provider=sqloledb;data source=192.168.0.158;uid=sa;pwd=123456;database=report
aeawrgag
aeawrgag Data Source呢?不需要写服务器名称?
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.06.11 21:52

最后一个离成功不远了,在你的sql server中检查下验证类型是否是混合验证,sa密码是不是12345

aeawrgag
aeawrgag 混合验证,密码也对,因为服务器本地可以。。。
2 年多之前 回复
frank_20080215
frank_20080215   2015.06.11 21:58

conn.Open "Provider=SQLOLEDB; User ID=sa;Password=123456;Initial Catalog=report;Data Source=.\WINCC"
Data Source=.\WINCC没有设对。本地装的是SQL Express.

服务器装的是SQL Serevr,默认实例名。所以Data Source=.。
又一个中招的:SQL Express默认实例名是SQLExpress,调试时必须写出。SQL Serevr,默认实例名为MSSQLSERVER。代码不需要写出。
只要这样 Data Source=.

aeawrgag
aeawrgag Data Source=.?按理说俩机子的实例名该一样的啊,都是同一个软件带的SQL,我试下。。。
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.06.11 22:25

看下你连的sql server是不是你试图修改密码的那一个。

aeawrgag
aeawrgag 连的sql server是不是你试图修改密码的那一个?不大懂这句话。。
2 年多之前 回复
frank_20080215
frank_20080215   2015.06.11 22:27

查查两台机器的实例名
。在服务那块查

aeawrgag
aeawrgag 好吧,发现自己没说清楚,说的本地可以访问,是说在服务器端,可以访问服务器的数据。到了客户端,读不到服务器了,不用查客户端的实例名吧?
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片