Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们能否在SQL Server table@Production environment中删除并重新创建主键?我们是必须关闭服务器,还是可以现场操作?_Sql_Sql Server_Sql Server 2005_Sql Server 2008 R2_Sql Server 2012 - Fatal编程技术网

我们能否在SQL Server table@Production environment中删除并重新创建主键?我们是必须关闭服务器,还是可以现场操作?

我们能否在SQL Server table@Production environment中删除并重新创建主键?我们是必须关闭服务器,还是可以现场操作?,sql,sql-server,sql-server-2005,sql-server-2008-r2,sql-server-2012,Sql,Sql Server,Sql Server 2005,Sql Server 2008 R2,Sql Server 2012,我们能否在生产环境中删除并重新创建SQL Server表中的复合主键?我们是要关闭服务器,还是可以现场操作 因为我们必须向主键添加更多列。如果我们在live中这样做,我们必须面对哪些问题?您可以从表中删除主键。如果您没有在其他列中明确提到,这也将删除该表的聚集索引 要删除主键,请运行下面的查询 -- Drop CHECK CONSTRAINT from the table ALTER TABLE /*schema*/./*table*/ DROP CONSTRAINT

我们能否在生产环境中删除并重新创建SQL Server表中的复合主键?我们是要关闭服务器,还是可以现场操作


因为我们必须向主键添加更多列。如果我们在live中这样做,我们必须面对哪些问题?

您可以从表中删除主键。如果您没有在其他列中明确提到,这也将删除该表的聚集索引

要删除主键,请运行下面的查询

-- Drop CHECK CONSTRAINT from the table
     ALTER TABLE /*schema*/./*table*/
        DROP CONSTRAINT /*constraint_name*/
     GO
要添加主键,请运行以下代码

-- Add a new CHECK CONSTRAINT to the table
ALTER TABLE /*schema*/./*table*/
    ADD CONSTRAINT /*contraint_name*/ /*constraint_type*/ (/*constraint_column_name*/ /*logical_expression*/)
GO

关于这个主题有更多的文章。你为什么不能用谷歌搜索它?当索引丢失时,这当然会使查询速度变慢+有人可能会创建一个违反它的行-这对你来说是不是一个问题,我们无法真正回答,而你甚至没有提到表有多大。没有真正检查创建什么。。。由于drop_existing=on在后台运行,可能helpstable有5亿多条记录我们可以做到。但我担心的是,这必须在生产环境中完成。那么对另一个处于活动状态的操作有什么影响呢?我运行了一个快速测试,打开一个事务,从表中选择所有行,然后休眠10秒,运行drop和create约束语句,然后再次选择并休眠10秒,然后回滚该事务。没有阻塞,选择代码不受影响。然后我试着从。。。改为使用xlock,alter脚本在运行之前等待了整整20秒,即它们确实在我显式打开的锁上被阻止。注意:我没有测试任何写案例。