Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 在合并复制中重命名SQL Server 2000表中没有默认值的NOT NULL列_Sql Server_Sql Server 2000_Merge Replication - Fatal编程技术网

Sql server 在合并复制中重命名SQL Server 2000表中没有默认值的NOT NULL列

Sql server 在合并复制中重命名SQL Server 2000表中没有默认值的NOT NULL列,sql-server,sql-server-2000,merge-replication,Sql Server,Sql Server 2000,Merge Replication,使用sp\u repladdcolumn我可以: 1) 添加允许空值的列;或 2) 添加一个默认值不允许为空的列 在不删除并重新创建整个订阅的情况下,我希望: 3) 添加没有默认值且不允许为null的列 这可能吗 我意识到我需要先用数据填充列,然后才能将其设置为NOTNULL。正如标题所示,我真正想做的是重命名一个现有列:a)其中包含数据,b)设置为NOTNULL,c)没有默认值 若要重命名列,为什么不直接使用?失败,出现以下错误:Msg 15051,级别11,状态1,过程sp_rename,

使用
sp\u repladdcolumn
我可以:
1) 添加允许空值的列;或
2) 添加一个默认值不允许为空的列

在不删除并重新创建整个订阅的情况下,我希望:
3) 添加没有默认值且不允许为null的列

这可能吗



我意识到我需要先用数据填充列,然后才能将其设置为NOTNULL。正如标题所示,我真正想做的是重命名一个现有列:a)其中包含数据,b)设置为NOTNULL,c)没有默认值

若要重命名列,为什么不直接使用?

失败,出现以下错误:Msg 15051,级别11,状态1,过程sp_rename,第172行无法重命名该表,因为该表是为复制而发布的。很抱歉,如果可以的话,我会对自己没有仔细阅读该问题而注意到有关复制的部分表示失望。我不太了解复制,但在标准表上,如果我想添加一个新的不可为null的列,我会添加一个默认列,然后删除默认约束。。。这是一个选项吗?似乎没有任何方法可以在不关闭合并复制、进行更改然后重新打开的情况下更改列(包括删除默认约束)。不幸的是,关闭和打开复制并非易事。它可以很容易地编写脚本,但是重新生成快照需要几个小时,所有这些工作都必须在用户不在的时候完成(例如,晚上/周末),如果可能的话,我希望避免这样做。我可以通过前端强制NOTNULL,但我更愿意让数据库引擎自己处理它。