VBscript - SQL连接失败SQL Server不存在或访问被拒绝
这很奇怪。 我有这个字符串连接到与计算机正在运行的同一个域中的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上运行?
由于您使用的是集成安全性,因此请允许我询问运行该应用程序的帐户。您是否将该帐户作为用户添加到数据库?如果没有,并且它是一个管理员帐户,那么您可能依赖于旧的“管理员可以完成所有工作”,而在Windows 7下,这不再是真的。
要测试这一点,请尝试运行提升的应用程序(右键单击exe文件并以管理员身份运行。)这将导致它保留您的“管理员”并可能将其放入数据库。如果可行,请不要继续运行它,而是转到SQL并将自己添加为用户。然后,应用程序应该可以正常工作。
对,这很有道理。所以,这基本上意味着我应该添加一个用户和密码到脚本本身?这应该在域中的每个用户上运行,大约有2000个。其中一半有Windows 7以及更多。他们都是本地管理员,所以这可能解释了为什么它在XP中工作。 – 2010-10-08 11:39:34
可能最好的办法是创建一个Windows组并将所有这些人添加到它,然后使用SQL Server Management Studio将该组作为用户添加到数据库本身。或者,您可以将SQL用户名和密码添加到连接字符串中,但存在安全问题,可能会发现用户名和密码的人,以及任何可以运行该exe的人都可以访问数据库而不是能够控制它的人想。 – 2010-10-08 13:43:18
只是一个快速评论。如果这是问题,那么Windows XP无法正常工作?我不认为这是数据库和安全设置的问题。我认为这是停止执行脚本的Windows 7本身。 – 2010-10-11 12:28:50
我认为你可以彻底删除脚本示例中的所有内容,除了失败的行+一行或两行上下文。整个LDAP与您的问题无关。 – Tomalak 2010-10-08 09:20:24
现在已经删除了大部分脚本,它可能与Windows 7中的不同安全结构有关? – 2010-10-08 10:23:58