AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 6450
Accepted
Radek Stromský
Radek Stromský
Asked: 2011-10-04 06:57:21 +0800 CST2011-10-04 06:57:21 +0800 CST 2011-10-04 06:57:21 +0800 CST

sp_unbinddefault 的替代方案

  • 772

我有一个绑定了默认值的列,UW_ZeroDefault我正在尝试摆脱它。

据我了解,此默认值是通过使用CREATE DEFAULT创建的,然后该列已通过使用绑定到此默认值sp_bindefault。

通常要删除此默认值,您会使用sp_unbinddefault,但由于 SQL Server 2008 中存在错误(请参阅知识库文章),我收到错误消息:

对象名称“ ”无效。

我无法对 SQL Server 安装进行任何更改,因此我正在寻找一些解决方法来删除这个东西。

以下讨论摘要:

解决方案 1:

正如@gbn 所建议的那样,如果您可以将数据库恢复到 SQL Server 2000,那就去做并sp_unbindefault在那里使用。那应该有效。

但是如果你不能移动它(那是我的情况)......

解决方案 2:

制作表格的副本并用于CONSTRAINT设置默认值而不是绑定默认值。这包括删除所有类型的约束、FK 等,然后重新创建它们。这是一个糟糕的解决方案,但我找不到更好的解决方案。

sql-server-2008 default-value
  • 1 1 个回答
  • 1338 Views

1 个回答

  • Voted
  1. Best Answer
    gbn
    2011-10-04T06:58:49+08:002011-10-04T06:58:49+08:00

    根据BOL 而不是 KB,使用 ALTER TABLE

    ALTER TABLE Mytable DROP <defaultname>;
    

    默认名称可以是用户提供的或系统生成的。
    要找到它并生成所需的 SQL:

    SELECT
        OBJECT_NAME(c.object_id), dc.name,
        'ALTER TABLE ' + QUOTENAME(OBJECT_NAME(c.object_id)) + ' DROP ' + QUOTENAME(dc.name);
    FROM
        sys.columns c
        JOIN
        sys.default_constrainst dc ON c.columnid = dc.parent_column_id AND c.object_id = dc.parent_object_id
    WHERE
        c.name = 'UW_ZeroDefault';
    
    • 3

相关问题

  • 连接不同地理区域的数据库的最佳实践

  • 死锁的主要原因是什么,可以预防吗?

  • 我在索引上放了多少“填充”?

  • 是否有开发人员遵循数据库更改的“最佳实践”类型流程?

  • 从 SQL Server 2008 降级到 2005

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    您如何显示在 Oracle 数据库上执行的 SQL?

    • 2 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    我可以查看在 SQL Server 数据库上运行的历史查询吗?

    • 6 个回答
  • Marko Smith

    如何在 PostgreSQL 中使用 currval() 来获取最后插入的 id?

    • 10 个回答
  • Marko Smith

    如何在 Mac OS X 上运行 psql?

    • 11 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Marko Smith

    将数组参数传递给存储过程

    • 12 个回答
  • Martin Hope
    Manuel Leduc PostgreSQL 多列唯一约束和 NULL 值 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler 什么时候应该将主键声明为非聚集的? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - 哪个更好作为主键? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick 如何优化大型数据库的 mysqldump? 2011-01-04 13:13:48 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve