我需要在数据库中获取所有表名。 我一直以错误结束
关闭对象时不允许操作
我已经四处搜索并发现很多人说他们应该添加SET NOCOUNT ON
或Set objRecords = objRecords.NextRecordset()
,这会导致错误:
多步ole db操作生成错误。检查每个OLE DB状态值(如果可用)。没有工作
这就是我所做的一切,我在这些错误之间转换。
我试图做的查询
SET NOCOUNT ON Use {Database} SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_CATALOG='{Database}'
我的连接字符串"Provider=SQLOLEDB; Data Source={Server}; Initial Catalog={Database}; User ID={Login}; Password={Password};"
我的SQL服务器位于Windows Server 2012上。
我收到错误的函数:
Function LoadTableData()
Dim objSqlConnection : Set objSqlConnection = CreateObject("ADODB.Connection")
Dim objRecords : Set objRecords = CreateObject("ADODB.RecordSet")
objSqlConnection.Open ReplaceInfo()
Dim ReplacedText : ReplacedText = Replace(SelectAllDatabaseTables, "{Database}", SelectedDatabase)
objRecords.Open ReplacedText, objSqlConnection, 3, 3
Set objRecords = objRecords.NextRecordset()
Do While Not objRecords.EOF
alert("Test")
objRecords.MoveNext()
Loop
End Function
我能看到的不应该是一个问题,但我认为它与查询有关,因为我可以SELECT * FROM {Database}
没有任何问题。
答案 0 :(得分:0)
我并不完全确定如何修复它但是我将USE {DATABASE}从查询中移出并在连接上执行了而不是修复了我的问题