用VB连SQL为什么会出错?访问(运行)服务器后就不会出错了?在线等

时间:2022-06-04 17:21:39
ConnectionString = "Provider=SQLOLEDB;" & _
                               "Server=" & ServerName & ";" & _
                               "Database=" & db & ";" & _
                               "UID=" & user & ";PWD=" & Password & ";"
OpenConnection.Open ConnectionString
我用如上ADO控件连SQL服务器时会出现如下错误:
〔DBNMPNTW〕ConnectionOpen(createfile())

当我访问服务器后就不会出错了,能正常连接。

17 个解决方案

#1


--用这个呢?
ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名"


#2


如果还是有问题,尝试用下面的方法解决.

1.安装客户端,配置一下:
开始--程序--Microsoft SQL Server--客户端网络实用工具
--别名--添加
--网络库选择"tcp/ip"--服务器别名输入SQL服务器名
--连接参数--服务器名称中输入SQL服务器ip地址
--如果你修改了SQL的端口,取消选择"动态决定端口",并输入对应的端口号

#3


2.安装最新的mdac2.8

Microsoft Data Access Components (MDAC) 2.8
http://download.microsoft.com/download/8/b/6/8b6198c0-fe96-4811-9d81-d5c76dd5fea8/MDAC_TYP.EXE

#4


还是不行啊!
程序在本地电脑能正常运行,到了终端没访问服务器之前,就是不行啊!


但是有一点很奇怪,我把服务器与客户端的用户名与密码都设置成一样的就可以了。


难道你们都没有碰到吗?

#5


在SQL的机器上将SQL的认证方式改成混合认证试试

#6


to 左手:
在SQL的机器上将SQL的认证方式改成混合认证试试


请问在哪改,能详细说明吗?

#7


方法1:
管理工具->服务->MSSQLSERVER->属性->启动->修改用户和密码或改为本地系统帐号
再重新启动服务。

方法2:在查询分析器中直接执行 
xp_instance_regwrite  N'HKEY_LOCAL_MACHINE',  N'SOFTWARE\Microsoft\MSSQLServer\MSSQLServer',  'LoginMode',  N'REG_DWORD', 2 
即可 
 
1---Windows认证模式  
2---SQL和Windows认证模式

#8


你指是的身份验证吗?
我已经把它设为‘sql server和windows’身份验证

#9


to 小马可:
那个服务我是已把它设为本地系统帐号。

对了,我还想问个问题:
ConnectionString = "Provider=SQLOLEDB;" & _
                               "Server=" & ServerName & ";" & _
                               "Database=" & db & ";" & _
                               "UID=" & user & ";PWD=" & Password & ";"

这里的用户uid应该是SQL用户对吗?
假如我把‘server=sql服务器ip地址’就可以连上,但我想用SQL服务器名来连就不行?
这个问题已经想了很久了,就是不知为什么?

#10


这是网络问题,用文件查找的方法,找到一个名叫"hosts"的文件名,用记事本打来,在里面有一个例子,是"127.0.0.1

#11


这是网络问题,用文件查找的方法,找到一个名叫"hosts"的文件名,用记事本打来,在里面有一个例子,是"127.0.0.1    本机名",此时,你依类似格式,另起一行将SQL服务器IP地址和SQL服务名字写进去,就可以了。
如:"192.168.0.1   SQL服务器名",
保存hosts文件。 

#12


服务器的数据库需要设制一下

改成通过  用户连(SA)
而不用NT方式

#13


up up

#14


to 热狗:
127.0.0.1       localhost
100.10.140.43   server
是改成这样了吗?改了还是不行,我不明白为什么要这么改?
这应该不是网络问题吧。因为我试了好几台服务器都一样,

to 狂刀侠:
你说改成SA登入,你是指MSSQLSERVER服务的登入身份吗?
我如把它设成SA,它提示说无效的帐号,好像一定要windows帐号。




#15


TO:雪儿
你改的是服务器还是客户机的hosts文件,要改的是客户机的哦。
另还有,你的服务器IP是100.10.140.43吗?你的网络有没有上公网?

#16


to :Paul
改客户机的IP啊(你能告诉我这样改有什么作用吗?),这样子不是很不方便,客户机很多的。其实现在只是把我的电脑当服务器做试验,我电脑的IP是动态的(有上公网),等以后真的系统做起来就有一个专门的服务器也就有固定的IP了,算了,我就用IP地址吧,只是连接速度有所下降。

可能ADO控件做远程连接只能用IP地址连。也就是‘Data Source=SQL服务器IP地址’,而不能用服务器名。

#17


在客户机上用ODBC连一次,再用服务器名就通。

#1


--用这个呢?
ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名"


#2


如果还是有问题,尝试用下面的方法解决.

1.安装客户端,配置一下:
开始--程序--Microsoft SQL Server--客户端网络实用工具
--别名--添加
--网络库选择"tcp/ip"--服务器别名输入SQL服务器名
--连接参数--服务器名称中输入SQL服务器ip地址
--如果你修改了SQL的端口,取消选择"动态决定端口",并输入对应的端口号

#3


2.安装最新的mdac2.8

Microsoft Data Access Components (MDAC) 2.8
http://download.microsoft.com/download/8/b/6/8b6198c0-fe96-4811-9d81-d5c76dd5fea8/MDAC_TYP.EXE

#4


还是不行啊!
程序在本地电脑能正常运行,到了终端没访问服务器之前,就是不行啊!


但是有一点很奇怪,我把服务器与客户端的用户名与密码都设置成一样的就可以了。


难道你们都没有碰到吗?

#5


在SQL的机器上将SQL的认证方式改成混合认证试试

#6


to 左手:
在SQL的机器上将SQL的认证方式改成混合认证试试


请问在哪改,能详细说明吗?

#7


方法1:
管理工具->服务->MSSQLSERVER->属性->启动->修改用户和密码或改为本地系统帐号
再重新启动服务。

方法2:在查询分析器中直接执行 
xp_instance_regwrite  N'HKEY_LOCAL_MACHINE',  N'SOFTWARE\Microsoft\MSSQLServer\MSSQLServer',  'LoginMode',  N'REG_DWORD', 2 
即可 
 
1---Windows认证模式  
2---SQL和Windows认证模式

#8


你指是的身份验证吗?
我已经把它设为‘sql server和windows’身份验证

#9


to 小马可:
那个服务我是已把它设为本地系统帐号。

对了,我还想问个问题:
ConnectionString = "Provider=SQLOLEDB;" & _
                               "Server=" & ServerName & ";" & _
                               "Database=" & db & ";" & _
                               "UID=" & user & ";PWD=" & Password & ";"

这里的用户uid应该是SQL用户对吗?
假如我把‘server=sql服务器ip地址’就可以连上,但我想用SQL服务器名来连就不行?
这个问题已经想了很久了,就是不知为什么?

#10


这是网络问题,用文件查找的方法,找到一个名叫"hosts"的文件名,用记事本打来,在里面有一个例子,是"127.0.0.1

#11


这是网络问题,用文件查找的方法,找到一个名叫"hosts"的文件名,用记事本打来,在里面有一个例子,是"127.0.0.1    本机名",此时,你依类似格式,另起一行将SQL服务器IP地址和SQL服务名字写进去,就可以了。
如:"192.168.0.1   SQL服务器名",
保存hosts文件。 

#12


服务器的数据库需要设制一下

改成通过  用户连(SA)
而不用NT方式

#13


up up

#14


to 热狗:
127.0.0.1       localhost
100.10.140.43   server
是改成这样了吗?改了还是不行,我不明白为什么要这么改?
这应该不是网络问题吧。因为我试了好几台服务器都一样,

to 狂刀侠:
你说改成SA登入,你是指MSSQLSERVER服务的登入身份吗?
我如把它设成SA,它提示说无效的帐号,好像一定要windows帐号。




#15


TO:雪儿
你改的是服务器还是客户机的hosts文件,要改的是客户机的哦。
另还有,你的服务器IP是100.10.140.43吗?你的网络有没有上公网?

#16


to :Paul
改客户机的IP啊(你能告诉我这样改有什么作用吗?),这样子不是很不方便,客户机很多的。其实现在只是把我的电脑当服务器做试验,我电脑的IP是动态的(有上公网),等以后真的系统做起来就有一个专门的服务器也就有固定的IP了,算了,我就用IP地址吧,只是连接速度有所下降。

可能ADO控件做远程连接只能用IP地址连。也就是‘Data Source=SQL服务器IP地址’,而不能用服务器名。

#17


在客户机上用ODBC连一次,再用服务器名就通。