SqlServer 数据库的升级,主要是表的升级。
表的升级,有二个方面:表结构、数据;
1、表结构升级,一般都是添加了某些字段,或者修改某些字段的类型等等。需要升级; (删字段操作比较少用。本方法不支持)
2、数据升级,就是复制数据了(数据很重要,当然不能丢);
3、本方法无需知道数据库使用过程中,修改了什么字段、或是添加了什么新的字段;
步骤:
-- 1 创建临时新表
CREATE TABLE tmp_表名(
...
)
-- 2 取旧表中所有字段
declare @strOldFields varchar(8000);
declare @sqlOldInsert varchar(8000);
select @strOldFields = (select LEFT(sName,LEN(sName)-1) as Name from (select (select Name + ',' from syscolumns where id = object_id('表名') for xml path('')) AS sName) A)
-- 3 将旧表数据插入新的临时表
set IDENTITY_INSERT [dbo].[tmp_表名] ON
set @sqlOldInsert = 'INSERT INTO tmp_表名 (' + @strOldFields+ ') select ' + @strOldFields + ' from 表名'
exec(@sqlOldInsert)
set IDENTITY_INSERT [dbo].[tmp_表名] OFF
-- 4 删除旧表,将临时新表重命名为新表名
DROP TABLE 表名
EXEC sp_rename N'[dbo].[tmp_表名]', N'表名'
OK。搞定!