我有一个到SQL Server数据库的ADODB连接。我试图删除由SQL Server迁移助手创建的表中的一个自动生成的约束。
要删除约束的代码如下:
conn.Execute "ALTER TABLE [dbo].[PROD] DROP CONSTRAINT [PROD$[C:\Users\Dave\Desktop\PROD.accdb]].{K2K214-423232-1231-CSD9-ASD}]"
我收到的错误消息是
语法错误或访问冲突
如果我将约束名称更改为随机
conn.Execute "ALTER TABLE [dbo].[PROD] DROP CONSTRAINT random"
我收到运行时错误:
“随机”不是一个约束条件
错误似乎是由该名称引起的,但我不知道为什么
[PROD$[C:\Users\Dave\Desktop\PROD.accdb]].{K2K214-423232-1231-CSD9-ASD}]
我也知道T-SQL没错,因为如果我在SQL Server Management Studio中运行查询:
ALTER TABLE [dbo].[PROD] DROP CONSTRAINT [PROD$[C:\Users\Dave\Desktop\PROD.accdb]].{K2K214-423232-1231-CSD9-ASD}]
执行成功
答案 0 :(得分:0)
我不知道为什么会这样,但是由于某种原因,重命名了约束并删除了它。如果有人有主意,请解释原因
conn.Execute "sp_rename '[PROD$[C:\Users\Dave\Desktop\PROD.accdb]].{K2K214-423232-1231-CSD9-ASD}]', 'FK_delete';
“
conn.Execute "ALTER TABLE [dbo].[PROD] DROP CONSTRAINT FK_delete"