Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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 知道为什么运行altercolumn会导致column从“;不为空”;至“;空”;?_Sql Server_Sql Server 2005_Tsql_Sql Server 2008 - Fatal编程技术网

Sql server 知道为什么运行altercolumn会导致column从“;不为空”;至“;空”;?

Sql server 知道为什么运行altercolumn会导致column从“;不为空”;至“;空”;?,sql-server,sql-server-2005,tsql,sql-server-2008,Sql Server,Sql Server 2005,Tsql,Sql Server 2008,我正在批量更新SQL Server数据库。我正在将所有的numeric(38,0)列更改为int(是的,SQL Server脚本是从Oracle脚本创建的) 使用SMO和C#(我是一名软件工程师),我成功地生成了非常好的脚本,就像SQLServerManagementStudio一样 除了一个特殊问题外,所有这些都非常有效: 当我打电话给你的时候 ALTER TABLE [myTable] ALTER COLUMN [columnA] INT 它还决定将列从notnull更改为NULL。这当然

我正在批量更新SQL Server数据库。我正在将所有的
numeric(38,0)
列更改为
int
(是的,SQL Server脚本是从Oracle脚本创建的)

使用SMO和C#(我是一名软件工程师),我成功地生成了非常好的脚本,就像SQLServerManagementStudio一样

除了一个特殊问题外,所有这些都非常有效:

当我打电话给你的时候

ALTER TABLE [myTable] ALTER COLUMN [columnA] INT
它还决定将列从notnull更改为NULL。这当然是一个很大的问题,因为我需要为这些特定列上的大多数表重新生成主键

显然,我有很多选择使用SMO来找出哪些列是主键,并在更新数据类型之后或更新数据类型时强制它们不为NULL,但我真的很好奇是什么导致了这一点

问候,


Eric.

因为在缺少
NOT NULL
的情况下,默认值为NULL

ALTER TABLE [myTable] 
   ALTER COLUMN [columnA] INT NOT NULL

因为在缺少
NOT NULL
的情况下,默认值为NULL

ALTER TABLE [myTable] 
   ALTER COLUMN [columnA] INT NOT NULL

使用创建或更改表时 创建表或更改表 语句、数据库和会话 设置影响并可能 重写数据的可空性 在列中使用的类型 定义。我们建议您 始终将列显式定义为 对于未计算的,为NULL或不为NULL 列

使用创建或更改表时 创建表或更改表 语句、数据库和会话 设置影响并可能 重写数据的可空性 在列中使用的类型 定义。我们建议您 始终将列显式定义为 对于未计算的,为NULL或不为NULL 列


另外,在ALTERCOLUMN部分,ALTERCOLUMN的ANSI null默认值始终处于启用状态;如果未指定,则该列可为空。您是正确的。仔细检查后,我所有修改过的列都被重置为可空。结果证明这是一个很容易解决的问题。感谢您的帮助。另外,在ALTERCOLUMN部分-对于ALTERCOLUMN,ANSI null默认值始终处于启用状态;如果未指定,则该列可为空。您是正确的。仔细检查后,我所有修改过的列都被重置为可空。结果证明这是一个很容易解决的问题。谢谢你的帮助。