none
请问怎么让分区表恢复到不分区的状态? RRS feed

  • 问题

  • 我是用sql server management stiduo 的分区向导将一个没有分区的表,建成分区表的。请问如何将这个分区表还原成没有分区的表?谢谢!
    2012年8月15日 15:32

答案

  • --最后一种方案要求你对 SQL Server 更熟悉一些, 不过应该是最简单便捷的一种方式了
    --在已经知表的主键定义的情况下, 直接修改后执行类似下面的语句就成了
    
    CREATE UNIQUE CLUSTERED INDEX 主键名
    	ON 表名(
    		[id] ASC
    	)
    	WITH (
    		DROP_EXISTING = ON
    	)
    	ON [PRIMARY]

    • 已标记为答案 tyrbl 2012年8月16日 5:34
    2012年8月16日 1:47

全部回复

  • Recreate all indices on file group where you like the table be in.
    2012年8月15日 15:45
  • 关注中   

    给我写信: QQ我:点击这里给我发消息

    2012年8月16日 1:11
  • 没有可以直接用办面操作实现的方法

    可以考虑如下几种方案

    方案1:

    对你的表生成建表脚本(右键表--编写脚本-CREATE 到)

    对生成的的脚本 改一下表名, 并且将脚本中" ON 分区名(列名) " 都改为 " ON [PRIMARY]" , 其中的 PRIMARY 可以是其他你想要存储表的文件组

    执行这个脚本创建一个新表

    然后用下面的语句把数据导过去

    ALTER TABLE 分区表名 SWITCH TO 你刚才创建的表名

    最后把分区表删除, 并且通过 sp_rename 把新的那个表名改成你原来的表名就行了

    2012年8月16日 1:35
  • 方案2

    -- 1. 先得到主键名(
    数据库名..sp_helpindex '表名'
    
    -- 2. 删除主键, 并且将存储移到指定的文件组
    --  根据第1步中执行的结果, 对下面的语句进行调整
    ALTER TABLE 表名
    	DROP CONSTRAINT xx	-- xx 为第1步结果中, index_description 为 "clustered, unique, primary key xxx" 对应的 index_name 列值
    	WITH(
    		ONLINE = ON,
    		MOVE TO [PRIMARY]
    	)
    
    -- 3. 根据需要, 为表重新创建主键
    

    2012年8月16日 1:41
  • --最后一种方案要求你对 SQL Server 更熟悉一些, 不过应该是最简单便捷的一种方式了
    --在已经知表的主键定义的情况下, 直接修改后执行类似下面的语句就成了
    
    CREATE UNIQUE CLUSTERED INDEX 主键名
    	ON 表名(
    		[id] ASC
    	)
    	WITH (
    		DROP_EXISTING = ON
    	)
    	ON [PRIMARY]

    • 已标记为答案 tyrbl 2012年8月16日 5:34
    2012年8月16日 1:47
  • 另外注意, 这里面所有的方案, 都是基于主键为 CLUSTERED 的情况(通过向导分区的话, 默认也是这种情况)
    2012年8月16日 1:48
  • 最后一种的脚本, 可以很方便地实现分区和未分区之间的切换

    如果是 ON [文件组] , 则是切换为未分区

    如果是 ON [分区方案名]( [列名] ), 则是切换为分区表(当然, 要求事先已经建立好对应的分区函数和分区方案)

    2012年8月16日 1:50
  • --最后一种方案要求你对 SQL Server 更熟悉一些, 不过应该是最简单便捷的一种方式了
    --在已经知表的主键定义的情况下, 直接修改后执行类似下面的语句就成了
    
    CREATE UNIQUE CLUSTERED INDEX 主键名
    	ON 表名(
    		[id] ASC
    	)
    	WITH (
    		DROP_EXISTING = ON
    	)
    	ON [PRIMARY]

    这种方案比较好,谢谢
    2012年8月16日 5:35