问题描述
- 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。
解决方案
最后一个(修改3)最接近了。密码错,好好确认一下sa的密码是什么
解决方案二:
先确认支持sa登录,然后改成 provider=sqloledb;data source=192.168.0.158;uid=sa;pwd=123456;database=report
解决方案三:
最后一个离成功不远了,在你的sql server中检查下验证类型是否是混合验证,sa密码是不是12345
解决方案四:
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=.
解决方案五:
看下你连的sql server是不是你试图修改密码的那一个。
解决方案六:
查查两台机器的实例名
。在服务那块查