有人在我们的数据库中创建了一个列,最初只允许使用10位数的电话号码(因此,使用了数据类型CHAR(10)
)。
我们现在正在尝试更改数据库以允许我们的系统无法处理的东西 - 具有可变长度的电话号码的国际号码。
最初,该数据库仅处理仅通过NANP号码的PBX请求(所有国际号码在到达平台之前都被转换为终止号码)。现在会有网络请求显示预翻译号码,我们没有资源(时间/人员)来做我们想要的事情,这将创建一个新表来处理前端,然后在后端表中创建关系。
我们的数据库被复制到另外三台服务器(一台在现场,两台在场外,在VPN上),过去这有时会给我们造成问题(所以我告诉)。此外,所有值当前都是10位数字,表格中有大约100,000条记录。重申一下,我们正在使用SQL Server(我相信2008年)。
我们是否可以使用VARCHAR
语句将此数据类型更改为INT
或ALTER
,而不使用LOSING DATA,其次,我们是否可以在不关闭复制的情况下执行此操作?
此外,正确的代码是否是以下两个SQL命令之一,其中列名为DNIS
?
ALTER DNISConfig
ALTER COLUMN [DNIS] VARCHAR(50)
或
ALTER DNISConfig
ALTER COLUMN [DNIS] INT
答案 0 :(得分:2)
你是对的:
ALTER TABLE DNISConfig
ALTER COLUMN [DNIS] VARCHAR(50) NOT NULL
将列更改为VARCHAR。
我认为,电话号码不是INT,因此VARCHAR选项更可取。