相关疑难解决方法(0)

如何减少从数据类型更改的SQL Server表的大小

我有一个关于SQL Server 2005的表,大小约为4GB.

(约1700万条记录)

我将其中一个字段从数据类型更改char(30)char(60)(总共有25个字段,其中大部分都是char(10)如此,因此字符空间的数量加起来大约为300)

这导致表格尺寸翻倍(超过9gb)

然后我更改了char(60)to varchar(60)然后运行了一个函数来从数据中删除额外的空格(以便将字段中数据的平均长度减少到大约15)

这并没有减少表的大小.收缩数据库也没有帮助.

实际上没有重新创建表格结构并复制数据(这是1700万条记录!)是否有一种不那么激烈的方式让尺寸再次缩小?

sql-server types database-table

20
推荐指数
2
解决办法
5万
查看次数

将列添加到MSSQL Server中的特定位置

ALTER TABLE Log ADD log_id bigint IDENTITY BEFORE cust_id_fk
Run Code Online (Sandbox Code Playgroud)

上面的代码在最后一个位置添加了一个新列.我希望它被添加到第一个位置.我也希望将其作为主键.

sql-server

12
推荐指数
1
解决办法
2万
查看次数

更改SQL Server 2008中现有表的列顺序/添加新列

我有这样的情况,我需要更改列的顺序/为SQL Server 2008中的现有表添加新列.它不允许我没有删除和重新创建.但那是在生产系统中并且在该表中有数据.我可以备份数据,删除现有表并更改顺序/添加新列并重新创建它,将备份数据插入新表中.

有没有最好的方法来做到这一点,而不是删除和重新创建.我认为SQL Server 2005将允许此过程,而不会在更改为现有表结构时删除和重新创建.

谢谢

sql-server

5
推荐指数
2
解决办法
3万
查看次数

SQL Server 2005 - 达到表行大小限制

在向表添加新列并且不超过8060字节限制之前,是否有一种干净的方法来确定表的行大小?

例如,如果表行长度当前是8055字节,并且我想添加一个日期时间(8字节),那么它将会转到8063字节(不包括空映射).

但是,如果我添加一个整数(4个字节),这将给它8059个字节,这适合表大小(不包括空映射).

我目前能够获得表的大小,但是我发现很难创建SQL函数来获取数据类型的大小(int,datetime等)以及数据类型是否需要额外的字节用于null映射.

是否有一个我可以使用/开发的函数接受两个变量:tablename和datatype:fnIsEnoughStorage('table1',int)并从标量函数返回一个布尔值(是/否).

如果为true,我将在确定测试后继续执行ALTER TABLE命令.

sql t-sql sql-server sql-server-2005 sqldatatypes

4
推荐指数
1
解决办法
5376
查看次数

在SQL Server Management Studio中更改SQL Server数据库中的列特性

当我想通过SQL Server Management Studio Express更改SQL Server Express 2008 R2数据库中现有表的列属性时 - 它不允许我.

我可以查看属性,但它们都是灰色的,我找不到任何东西来解开它.我刚刚从Access迁移,我想知道这是否是不可能的(表中已有数据 - 但我可以删除并创建新列)或者我是否遗漏了某些东西.

sql-server ssms sql-server-express

2
推荐指数
1
解决办法
1万
查看次数