【问题标题】:Execute sql from vbscript从 vbscript 执行 sql
【发布时间】:2015-04-07 18:28:15
【问题描述】:

我想在本地 SQL Express 服务器上执行以下 SQL 脚本:

Select *
from OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
'Excel 12.0;HDR=YES;Database=C:\localpath\file.xlsx;', 
[Sheet1$])

从 SQL Express 运行的查询运行良好。但是当我尝试从 vbscript 运行它时:

dim dbconn, ConnectionString
ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=compname\SQLEXPRESS;Database=DB;ID=username;Password="";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;"
Set dbconn = CreateObject("ADODB.Connection")
dbconn.Open ConnectionString
dbconn.Execute("\\path\query.sql")

它显示以下错误:

脚本: 脚本路径
行: 4
字符: 1
错误: 参数类型错误、超出可接受范围或相互冲突。
代码: 800A0BB9
来源: ADODB.Connection

【问题讨论】:

    标签: sql sql-server vbscript


    【解决方案1】:

    你的意思是用一个单引号作为密码,因为字符串中的两个引号被视为 1。

    ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=compname\SQLEXPRESS;Database=DB;ID=username;Password="";Extended Properties='Excel 12.0; HDR=YES;IMEX=1;"

    【讨论】:

    • 好点。我已将其更改为单引号,但仍然存在错误,但有所不同:错误: 初始化字符串的格式不符合 OLE DB 规范。
    • 我发现 Properties='Excel 12.0' 中缺少另一个撇号。填写完后,我得到“找不到可安装的 ISAM”。错误。有什么线索吗?
    • 这是一个连接字符串的网站。 connectionstrings.com/excel
    • 连接字符串正确。但现在我收到错误消息:“ActiveX 组件无法创建对象:OLEDB.Connection”
    • 在 Excel 中使用查询助手。 Alt + D、D、N,然后双击 Excel,浏览,选择选项,然后在向导结束时选择编辑查询。然后在编辑器文件中保存。该文本文件将包含一个连接字符串和 sql 字符串。
    【解决方案2】:

    正确的连接字符串:

    ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=dbname;Data Source=compname\SQLEXPRESS"
    

    【讨论】: