Sql server 多步骤OLEDB操作生成错误

Sql server 多步骤OLEDB操作生成错误,sql-server,database,vbscript,Sql Server,Database,Vbscript,我需要获取数据库中的所有表名。 我总是以错误告终 关闭对象时不允许执行操作 我四处搜索,发现很多人说他们应该添加SET NOCOUNT ON或SET objRecords=objRecords.NextRecordset(),这导致了错误: 多步骤ole db操作生成错误。检查每个OLE DB状态值(如果可用)。没有做任何工作 这就是我被困的地方,无论我在做什么,我都会在这些错误之间转换 我想问的问题 SET NOCOUNT ON Use{Database}从信息_SCHEMA.TABLES中选

我需要获取数据库中的所有表名。 我总是以错误告终

关闭对象时不允许执行操作

我四处搜索,发现很多人说他们应该添加
SET NOCOUNT ON
SET objRecords=objRecords.NextRecordset()
,这导致了错误:

多步骤ole db操作生成错误。检查每个OLE DB状态值(如果可用)。没有做任何工作

这就是我被困的地方,无论我在做什么,我都会在这些错误之间转换

我想问的问题

SET NOCOUNT ON Use{Database}从信息_SCHEMA.TABLES中选择*,其中TABLE_CATALOG='{Database}'
我的连接字符串
“Provider=SQLOLEDB;数据源={Server};初始目录={Database};用户ID={Login};密码={Password};”

我的SQL server位于Windows server 2012上

我在其中获取错误的函数:

函数LoadTableData()
Dim objSqlConnection:Set objSqlConnection=CreateObject(“ADODB.Connection”)
Dim objRecords:Set objRecords=CreateObject(“ADODB.RecordSet”)
objSqlConnection.openreplaceinfo()
Dim ReplacedText:ReplacedText=Replace(SelectAllDatabaseTables,“{Database}”,SelectedDatabase)
打开ReplacedText,objSqlConnection,3,3
Set objRecords=objRecords.NextRecordset()
不执行objRecords.EOF时执行
警报(“测试”)
objRecords.MoveNext()
环
端函数

就我所见,这应该没有问题,但我认为这与查询有关,因为我可以从{Database}执行
SELECT*FROM{Database}
而没有任何问题。

我不完全确定这是如何解决的,但我移动了{Database}退出查询并在连接上执行它,从而修复了我的问题

尝试注释这一行:
Set objRecords=objRecords.NextRecordset()
。我相信这是您的
操作在对象关闭时不允许出现错误的根源。当您在查询中使用SET-NOCOUNT ON时,只需将其注释掉并获取
操作在对象关闭时不允许出现错误,这意味着您只获取一个记录集,并将objRecords=objRecords.NextRecordset()设置为关闭当前RS-oblect已关闭“多步骤操作”是由于查询。您需要在
使用数据库名称
和其他语句之间执行
GO
,或者在每个单独的语句末尾使用