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是不是你试图修改密码的那一个。

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