【发布时间】:2014-05-05 23:17:44
【问题描述】:
有人在我们的数据库中创建了一个列,最初只允许使用 10 位电话号码(因此,使用了数据类型 CHAR(10))。
我们现在正在尝试更改数据库,以允许我们的系统无法处理的某些内容 - 具有可变电话号码长度的国际号码。
最初,该数据库仅处理仅通过 NANP 号码的 PBX 请求(所有国际号码在到达平台之前都被转换为终端号码)。现在会有显示预翻译编号的 Web 请求,而我们没有资源(时间/人员)来做我们想做的事,这将创建一个新表来处理前端,然后创建一个后端表中的关系。
我们的数据库被复制到另外三台服务器(一台在现场,两台在 VPN 上的异地),过去这有时会给我们带来问题(有人告诉我)。此外,所有值目前都是 10 位数字,表中有约 100,000 条记录。重申一下,我们使用的是 SQL Server(我相信是 2008 年)。
我们能否在不丢失数据的情况下使用ALTER 语句将此数据类型更改为VARCHAR 或INT 值,其次,我们是否能够在不关闭复制的情况下执行此操作?
另外,正确的代码是以下两个 SQL 命令之一,其中列名是DNIS?
ALTER DNISConfig
ALTER COLUMN [DNIS] VARCHAR(50)
或
ALTER DNISConfig
ALTER COLUMN [DNIS] INT
【问题讨论】:
-
您可以轻松地在您准备的桌子上尝试更改。对于您可以在几分钟内确认的内容,这是很多文章。这其中的复制部分取决于 SQL Server 的版本和复制的类型。
-
我没有权限在我们的服务器上创建新表,部门主管比我早 3 小时,所以我无法询问。这更快:)
标签: sql sql-server database constraints alter