You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何SQL Server无法为指定表生成全部关系脚本?

SQL Server生成表脚本时未包含主键表关系的解决办法

问题原因

SQL Server默认生成的表创建脚本,只会包含当前表自身的结构和约束:比如列定义、主键约束,以及当前表作为外键表时引用其他表的外键约束。而那些以当前表(TableA)为主键表、由其他子表定义的外键关系,属于子表的对象,不会被自动包含在TableA的脚本里。

解决方法


方法1:通过Generate Scripts向导生成完整依赖脚本

  1. 右键目标数据库,选择Tasks > Generate Scripts
  2. 在向导中选择TableA,进入Set Scripting Options步骤
  3. 点击Advanced按钮,在高级选项中修改两项设置:
    • 将Script Foreign Keys设为True
    • 将Script Dependent Objects设为True
  4. 完成后续步骤生成脚本,此时会包含TableA的结构,以及所有引用它的子表和对应的外键约束

方法2:手动编写外键约束脚本

如果只需要特定子表的外键关系,可手动编写ALTER TABLE语句添加约束,示例如下:

-- 假设子表TableB通过TableA_ID字段引用TableA的主键ID
ALTER TABLE [dbo].[TableB]
ADD CONSTRAINT [FK_TableB_TableA] 
FOREIGN KEY ([TableA_ID]) REFERENCES [dbo].[TableA] ([ID])
ON DELETE NO ACTION -- 根据业务需求修改删除/更新规则
ON UPDATE NO ACTION;

注意:执行这类脚本前,要确保TableA和对应的子表都已创建完成。

内容的提问来源于stack exchange,提问作者Chicagoan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 22:47:09