ADO 再次执行 SQL 服务器不报告参照完整性约束
ADO execute againt SQL Server does not report on referential integrity constraints
证据表明,当使用 ADO 删除 SQL 服务器中的记录时,它不会报告参照完整性约束。
- 大师 table :
tblMasterChecklist
- Child table :
tblMasterTopic
(参考文献 tblmasterchecklist.checklistid
)
代码:
Dim ado As New adodb.Connection
Dim sConnectionString As String
ON error goto eh
sConnectionString = "Provider=SQLOLEDB;Data Source=hillhead-100;Initial Catalog=XXXXXXXX;UID=XXXXXXXXXXXXX;PWD=XXXXXXXXXXXX;"
ado.Open (sConnectionString)
ado.execute "DELETE FROM tblMasterChecklist WHERE ChecklistID = 'DE'"
我收到这个错误:
Error = 3001, Application Error 3001, Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
只要不存在 child 条记录,同样的命令就可以正常工作
这似乎是驱动程序的限制。
任何人都可以对此提出建议吗?
其中之一,不要使用 SQLOLEDB
。该驱动程序是 MDAC 的一部分,自 Windows XP SP2 以来,它可以方便地安装在所有 Windows 机器上,但也可以追溯到 Windows XP SP2,并且非常过时。它已被弃用,并且没有实现许多基本功能,例如支持 "modern" 数据类型,例如 DateTime2
.
改为使用 MSOLEDBSQL
,这是 SQL 服务器当前支持的唯一 OLEDB 提供程序。
您应该可以下载最新版本 here。
或者,使用 ODBC 驱动程序,因为 ADO 同时支持 ODBC 和 OLEDB。
sConnectionString = "Provider=MSOLEDBSQL;Data Source=xxxxxxxxxxxx;Initial Catalog=xxxxxxxxxxxxx;UID=xxxxxxxxxxx;PWD=xxxxxxxxxxxx;"
错误被困:
2020 年 6 月 4 日 22:18:57; 4.19; xxxx;错误; 4.19;删除 MasterChecklist 信息时出现问题,clsMasterChecklist,mbDelete,错误 = -2147217873,应用程序错误 -2147217873,DELETE 语句与 REFERENCE 约束冲突 "FK_tblMasterTopic_tblMasterChecklist"。冲突发生在数据库 "xxxxxxxxxxxx"、table "dbo.tblMasterTopic"、列 'checklistid'。
证据表明,当使用 ADO 删除 SQL 服务器中的记录时,它不会报告参照完整性约束。
- 大师 table :
tblMasterChecklist
- Child table :
tblMasterTopic
(参考文献tblmasterchecklist.checklistid
)
代码:
Dim ado As New adodb.Connection
Dim sConnectionString As String
ON error goto eh
sConnectionString = "Provider=SQLOLEDB;Data Source=hillhead-100;Initial Catalog=XXXXXXXX;UID=XXXXXXXXXXXXX;PWD=XXXXXXXXXXXX;"
ado.Open (sConnectionString)
ado.execute "DELETE FROM tblMasterChecklist WHERE ChecklistID = 'DE'"
我收到这个错误:
Error = 3001, Application Error 3001, Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
只要不存在 child 条记录,同样的命令就可以正常工作
这似乎是驱动程序的限制。
任何人都可以对此提出建议吗?
其中之一,不要使用 SQLOLEDB
。该驱动程序是 MDAC 的一部分,自 Windows XP SP2 以来,它可以方便地安装在所有 Windows 机器上,但也可以追溯到 Windows XP SP2,并且非常过时。它已被弃用,并且没有实现许多基本功能,例如支持 "modern" 数据类型,例如 DateTime2
.
改为使用 MSOLEDBSQL
,这是 SQL 服务器当前支持的唯一 OLEDB 提供程序。
您应该可以下载最新版本 here。
或者,使用 ODBC 驱动程序,因为 ADO 同时支持 ODBC 和 OLEDB。
sConnectionString = "Provider=MSOLEDBSQL;Data Source=xxxxxxxxxxxx;Initial Catalog=xxxxxxxxxxxxx;UID=xxxxxxxxxxx;PWD=xxxxxxxxxxxx;"
错误被困: 2020 年 6 月 4 日 22:18:57; 4.19; xxxx;错误; 4.19;删除 MasterChecklist 信息时出现问题,clsMasterChecklist,mbDelete,错误 = -2147217873,应用程序错误 -2147217873,DELETE 语句与 REFERENCE 约束冲突 "FK_tblMasterTopic_tblMasterChecklist"。冲突发生在数据库 "xxxxxxxxxxxx"、table "dbo.tblMasterTopic"、列 'checklistid'。