代码之家  ›  专栏  ›  技术社区  ›  lmsasu

将主键添加到包含多条记录的表中

  •  17
  • lmsasu  · 技术社区  · 14 年前

    “更改包含大量数据的表可能需要相当长的时间。保存更改时,将无法访问表数据。“

    " 超时已过期。操作完成前已过超时时间,或者服务器没有响应。 "

    我如何添加它?

    6 回复  |  直到 12 年前
        1
  •  9
  •   Dori Nimit Parekh    13 年前

    创建一个具有精确模式的新表,并将所需列作为主键。现在使用select将记录从一个表插入到另一个表。

        2
  •  32
  •   Chris    14 年前

    如果在Management Studio中,您在“设计”视图中设置了主键(未保存),则下一次右键单击时,您将有一个选项“生成更改脚本”-此选项也可在顶部的“表设计器”菜单中使用。

    它提供了原始SQL(安全地包装在事务中),您可以将其复制到剪贴板,然后将其作为新查询运行(按钮左上角,或文件>新>查询当前连接),粘贴它,选择正确的数据库并执行查询。

        3
  •  17
  •   dpimente    5 年前

    工具 --&燃气轮机; 选择权

    “那么” 表和数据库设计器 “,更改” 后事务超时 价值默认值为30,0表示无限。尝试在增加值后创建主键。

    这往往比以前快得多;创建新数据库、复制数据、删除旧数据库并将新数据库重命名为旧数据库。在应用完主键后,您也可以将超时设置回30-如果您愿意,您可以选择。

    添加屏幕截图 enter image description here

        4
  •  2
  •   Lucero    14 年前

    尝试生成SQL脚本并从SQL查询窗口发出它。

        5
  •  0
  •   masoud ramezani    14 年前

    使用此解决方案,您可以插入带有标识信息的数据。

        6
  •  0
  •   momobo    14 年前

    从您对David的回复中,我了解到您没有合适的主键列。在这种情况下,您可以添加一个int标识作为表的最后一列,大容量插入将继续工作。

    由于该表是使用大容量插入加载的,因此最好的选择是截断该表(TRUNCATETABLE MYTBL);修改它,添加ID(alter table TBL add ID int identity主键)并重新发出批量加载。