2010-10-08 59 views
0

这很奇怪。 我有这个字符串连接到与计算机正在运行的同一个域中的SQLServer,并将用户名与employeeID进行比较。然后取出该行并将其转储到lokal计算机注册表中。这在Windows XP中工作,但似乎没有Windows 7。VBscript - SQL连接失败SQL Server不存在或访问被拒绝

我得到这个确切的错误消息:

Line:39 
Char:1 
Error: [DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied. 
Code: 80004005 
Source: Microsoft OLE DB Provider for SQL Server. 

这是剧本本身。我已经删除了实际的服务器名称。估计没有人需要这些。

Set oConn = CreateObject("ADODB.Connection") 
oConn.Open "Provider=sqloledb;Data Source=mysqlserver04\mysqlserver04;Initial Catalog=orginfo;Integrated Security=SSPI" 
sSQL = "select top 1 * from dbo.Mal_personinfo where empid = '" & EID & "'" 
'wscript.echo sSQL 
set rs = oConn.Execute(sSQL) 

set oSystem = CreateObject("WScript.Shell") 
for iTeller = 0 to rs.fields.count - 1 
    Text = Text & rs.fields(iTeller).Name & "=" & rs.fields(iTeller).Value & " - " 
    oSystem.RegWrite "HKCU\Software\MalData\" & rs.fields(iTeller).Name,rs.fields(iTeller).Value,"REG_SZ" 
next 
'wscript.echo Text 

为什么它可以在Windows XP上运行但不在Windows 7上运行?

+0

我认为你可以彻底删除脚本示例中的所有内容,除了失败的行+一行或两行上下文。整个LDAP与您的问题无关。 – Tomalak 2010-10-08 09:20:24

+0

现在已经删除了大部分脚本,它可能与Windows 7中的不同安全结构有关? – 2010-10-08 10:23:58

回答

1

由于您使用的是集成安全性,因此请允许我询问运行该应用程序的帐户。您是否将该帐户作为用户添加到数据库?如果没有,并且它是一个管理员帐户,那么您可能依赖于旧的“管理员可以完成所有工作”,而在Windows 7下,这不再是真的。

要测试这一点,请尝试运行提升的应用程序(右键单击exe文件并以管理员身份运行。)这将导致它保留您的“管理员”并可能将其放入数据库。如果可行,请不要继续运行它,而是转到SQL并将自己添加为用户。然后,应用程序应该可以正常工作。

+0

对,这很有道理。所以,这基本上意味着我应该添加一个用户和密码到脚本本身?这应该在域中的每个用户上运行,大约有2000个。其中一半有Windows 7以及更多。他们都是本地管理员,所以这可能解释了为什么它在XP中工作。 – 2010-10-08 11:39:34

+0

可能最好的办法是创建一个Windows组并将所有这些人添加到它,然后使用SQL Server Management Studio将该组作为用户添加到数据库本身。或者,您可以将SQL用户名和密码添加到连接字符串中,但存在安全问题,可能会发现用户名和密码的人,以及任何可以运行该exe的人都可以访问数据库而不是能够控制它的人想。 – 2010-10-08 13:43:18

+0

只是一个快速评论。如果这是问题,那么Windows XP无法正常工作?我不认为这是数据库和安全设置的问题。我认为这是停止执行脚本的Windows 7本身。 – 2010-10-11 12:28:50

相关问题