zoukankan      html  css  js  c++  java
  • SQL Server Management Studio管理器有些时候慎用,写脚本修改才是王道

    SQL Server Management Studio管理器真贱,今天使用脚本跟踪器偶然发现的。
    我修改了一个字段的类型 RowFlag字段 int 到 bit

    SMS管理器竟然是这样做的

    比如表名:ABC
    1.先根据ABC修改后的字段结构重新创建一张临时表,命名为tmp_ABC

    它是这样做的

    CREATE TABLE dbo.Tmp_ABC(
        ID uniqueidentifier NOT NULL,
        ServerIP varchar(20) NULL,
        AccountName nvarchar(50) NULL,
        StaffID int NULL,
        StaffName nvarchar(50) NULL,
        GroupID int NULL,
        GroupName nvarchar(200) NULL,
        Remark nvarchar(MAX) NULL,
        OperatorName nvarchar(50) NULL,
        RecFlag tinyint NULL,
        OperatorTime datetime NULL,
        RowFlag bit NULL
    )  ON [PRIMARY]
    TEXTIMAGE_ON [PRIMARY]


    2.把ABC的所有数据insert into from 到tmp_ABC表

    它是这样做的(这个有点吓人)

    IF EXISTS(SELECT * FROM dbo.ABC)
    EXEC('INSERT INTO dbo.Tmp_ABC(ID, ServerIP, AccountName, StaffID, StaffName, GroupID, GroupName, Remark, OperatorName, RecFlag, OperatorTime, RowFlag)
    SELECT ID, ServerIP, AccountName, StaffID, StaffName, GroupID, GroupName, Remark, OperatorName, RecFlag, OperatorTime, CONVERT(bit, RowFlag) 
    FROM dbo.ABC WITH (HOLDLOCK TABLOCKX)')


    3.然后把ABC删了,在把tmp_ABC名称改成ABC

    它是这样做的

    DROP TABLE dbo.ABCEXECUTE 

    sp_rename N'dbo.Tmp_ABC', N'ABC', 'OBJECT'

    4.把ABC所有属性,外键,说明,关系等弄到tmp_ABC临时表上

    它是这样做的

    ALTER TABLE dbo.ABC ADD CONSTRAINT
        PK_AccountRec PRIMARY KEY CLUSTERED 
        (
        ID
        ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

    等等操作。


    如果这要这张表数据很多,那改起来不就悲剧了。。

    所有大数据的表一定要使用脚本来修改,不要图方便右键去编辑表,切记。

    如果觉得本文适合您且对您有帮助,请一定记得点推荐哟!



    作者: JasNature
    出处: http://NatureSex.cnblogs.com
          本文版权归作者和博客园共有,欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文连接。
          如果本文有什么不妥或者错误的地方,请您一定要在评论中指出,以免误人子弟!非常感谢您的不吝赐教!
  • 相关阅读:
    C++为什么不可以把一个数组直接赋值给另一个数组
    Eigen 矩阵库学习笔记
    HTTP请求报文和HTTP响应报文
    剔除三个(包括三个以上)的子串
    c语言实现:4和7幸运数字的题
    oracle顺序控制语句goto、null和分页过程中输入输出存储、java程序的调用过程
    oracle的控制语句if和循环语句loop while for
    oracle函数、包、变量的定义和使用、重点”结构体和数组”
    oracle pl/sql简介、块、过程
    oracle角色
  • 原文地址:https://www.cnblogs.com/NatureSex/p/3045218.html
Copyright © 2011-2022 走看看