none
sql 2008 分区切出, 在向导中,无法,把某一表的,第一个分区,切出,只以从第二个分区 做切出操作。 RRS feed

  • 问题

  • sql 2008   分区切出, 在向导中,无法,把某一表的,第一个分区,切出,只以从第二个分区 做切出操作。 

    2014年8月9日 8:51

答案

  • 没有2008的环境,现在都用 R2 了, 看了一阵大家的讨论,有点迷糊了

    根据楼主的描述,在向导中,无法切出第一个分区

    那么这个问题的重点,应该是先确定只是向导无法切出(界面无法操作),还是切出操作有问题吧?

    这个楼主可以自己验证一下吧

    如果你用语句切出没有问题,那么应该是界面的问题

    如果语句都无法切出,那么语句操作应该会报错,这样会有错误信息, 如果是语句操作长时间无响应,那么可以查看 sysprocess 表与之对应的记录,看是因为等待资源,还是 block 之类

    2014年8月14日 1:27
  • 平时基本上都不用,今天特意去试了一下, 2008 R2 和 2012 的向导, 两者的表现比较奇怪

    208R2 的分区管理向导,在切出里面只能选择第一个或者最后一个分区做切出, 2012 倒是可以选择任意分区,不知道是不是2008R2的向导还不完善导致(都是连接的2008R2上的同一个表做测试)

    2014年8月14日 1:32

全部回复

  • Hard to tell because don't you how you partitioned table, did you try split partition with 'alter partition function'?

    2014年8月9日 16:04
  • 不是很明白lz的问题
    2014年8月12日 1:24
  • 可以啊,你看下面这个例子。如果你那边不行的话报什么样的错误? 

    CREATE DATABASE [MyTest]
    GO
    USE [master]
    GO
    ALTER DATABASE [MyTest] ADD FILEGROUP [One]
    ALTER DATABASE [MyTest] ADD FILEGROUP [Two]
    ALTER DATABASE [MyTest] ADD FILEGROUP [Three]
    ALTER DATABASE [MyTest] ADD FILEGROUP [Four]
    GO
    ALTER DATABASE [MyTest] ADD FILE
    (NAME = N'One_File01',FILENAME = N'D:\MSSQL\One_File01.ndf')
    TO FILEGROUP [One]
    GO
    ALTER DATABASE [MyTest] ADD FILE
    (NAME = N'Two_File01',FILENAME = N'D:\MSSQL\Two_File01.ndf')
    TO FILEGROUP [Two]
    GO
    ALTER DATABASE [MyTest] ADD FILE
    (NAME = N'Three_File01',FILENAME = N'D:\MSSQL\Three_File01.ndf')
    TO FILEGROUP [Three]
    GO
    ALTER DATABASE [MyTest] ADD FILE
    (NAME = N'Four_File01',FILENAME = N'D:\MSSQL\Four_File01.ndf')
    TO FILEGROUP [Four]
    GO
    USE [MyTest]
    
    CREATE PARTITION FUNCTION pfR(INT)
    AS RANGE RIGHT FOR VALUES (100,200,300);
    CREATE PARTITION SCHEME psR AS PARTITION pfR TO
    ([One],[Two],[Three],[Four]);
    
    CREATE TABLE R ([ID] INT) ON psR([ID]);
    
    INSERT INTO R VALUES (NULL)
    INSERT INTO R VALUES (-1)
    INSERT INTO R VALUES (0)
    INSERT INTO R VALUES (1)
    INSERT INTO R VALUES (100)
    INSERT INTO R VALUES (101)
    INSERT INTO R VALUES (200)
    INSERT INTO R VALUES (201)
    INSERT INTO R VALUES (300)
    INSERT INTO R VALUES (301)
    INSERT INTO R VALUES (1001)
    
    
    ---Create table R2 for switch
    CREATE TABLE R2 ([ID] INT) ON [ONE]; 
    --Switch Partition 1 to R2
    ALTER TABLE [dbo].[R] SWITCH PARTITION 1 TO R2 



    Please Mark As Answer if it is helpful.

    2014年8月12日 5:25
  • 是的, 我有做的几次 分区合并的动作,请看下面的情操作日志

    a:合并3,4月的数据. 删除 边界值 04-01

    alter partition function  [fqhs_aInvdetFee]() merge range(N'<st1:chsdate day="1" islunardate="False" isrocdate="False" month="4" w:st="on" year="2013">2013-04-01</st1:chsdate>T00:00:00.000')

    b: 需时 <st1:chmetcnv hasspace="False" negative="False" numbertype="1" sourcevalue="12" tcsc="0" unitname="m" w:st="on">12m</st1:chmetcnv>14s

     

    c:处理之后的分区函数和分区方案,如下.

    【分区函数】

    USE [ExpressHB06]

    GO

    /****** Object:  PartitionFunction [fqhs_aInvdetFee]    Script Date: 06/05/2013 15:55:41 ******/

    CREATE PARTITION FUNCTION [fqhs_aInvdetFee](datetime) AS RANGE RIGHT FOR VALUES (N'<st1:chsdate day="1" islunardate="False" isrocdate="False" month="5" w:st="on" year="2013">2013-05-01</st1:chsdate>T00:00:00.000', N'<st1:chsdate day="1" islunardate="False" isrocdate="False" month="6" w:st="on" year="2013">2013-06-01</st1:chsdate>T00:00:00.000', N'<st1:chsdate day="1" islunardate="False" isrocdate="False" month="7" w:st="on" year="2013">2013-07-01</st1:chsdate>T00:00:00.000', N'<st1:chsdate day="1" islunardate="False" isrocdate="False" month="8" w:st="on" year="2013">2013-08-01</st1:chsdate>T00:00:00.000', N'<st1:chsdate day="1" islunardate="False" isrocdate="False" month="9" w:st="on" year="2013">2013-09-01</st1:chsdate>T00:00:00.000')

    GO

    【分区方案】

    USE [ExpressHB06]

    GO

    /****** Object:  PartitionScheme [fqfa_aInvdetFee]    Script Date: 06/05/2013 15:55:51 ******/

    CREATE PARTITION SCHEME [fqfa_aInvdetFee] AS PARTITION [fqhs_aInvdetFee] TO ([fqDATA201303], [fqDATA201305], [fqDATA201306], [fqDATA201307], [fqDATA201308], [fqDATA201309])

    GO

    2014年8月13日 1:58
  • 上面的代码,好像乱了。 我贴图。

    /*合并3月,和4月的数据. 即 删除 边界值 04-01*/
    
    alter partition function  [fqhs_aInvdetFee]() merge range(N'2013-04-01T00:00:00.000')
    
    /*需时: 12m14s*/
    
    /*处理之后的分区函数和分区方案,如下. */
    USE [ExpressHB06]
    GO
    
    /****** Object:  PartitionFunction [fqhs_aInvdetFee]    Script Date: 06/05/2013 15:55:41 ******/
    CREATE PARTITION FUNCTION [fqhs_aInvdetFee](datetime) AS RANGE RIGHT FOR VALUES 
    (N'2013-05-01T00:00:00.000', N'2013-06-01T00:00:00.000',
     N'2013-07-01T00:00:00.000', N'2013-08-01T00:00:00.000', 
     N'2013-09-01T00:00:00.000')
    GO
    
    USE [ExpressHB06]
    GO
    
    /****** Object:  PartitionScheme [fqfa_aInvdetFee]    Script Date: 06/05/2013 15:55:51 ******/
    CREATE PARTITION SCHEME [fqfa_aInvdetFee] AS PARTITION [fqhs_aInvdetFee] TO 
    ([fqDATA201303], [fqDATA201305], [fqDATA201306], 
    [fqDATA201307], [fqDATA201308], [fqDATA201309])
    GO
    

    2014年8月13日 2:06
  • 就这样,我之后,做的分区切出,只能对  

    [fqDATA201305], [fqDATA201306], [fqDATA201307], [fqDATA201308], [fqDATA201309])

    就行操作。 而对。 fqDATA201303 完全没办法操作。

    2014年8月13日 2:07
  • 分区里有数据,无论合并还是切分都会很慢的,因为要移动数据
    2014年8月13日 2:14
  • 分区里有数据,无论合并还是切分都会很慢的,因为要移动数据
    Depends, not always slow.
    2014年8月13日 3:42
  • 就这样,我之后,做的分区切出,只能对  

    [fqDATA201305], [fqDATA201306], [fqDATA201307], [fqDATA201308], [fqDATA201309])

    就行操作。 而对。 fqDATA201303 完全没办法操作。

    How did you split that partition? Got any error?
    2014年8月13日 3:44
  • 那要看分区里的数据量
    2014年8月13日 7:49
  • Depends on how to use file group in fact.
    2014年8月13日 13:01
  • 没有2008的环境,现在都用 R2 了, 看了一阵大家的讨论,有点迷糊了

    根据楼主的描述,在向导中,无法切出第一个分区

    那么这个问题的重点,应该是先确定只是向导无法切出(界面无法操作),还是切出操作有问题吧?

    这个楼主可以自己验证一下吧

    如果你用语句切出没有问题,那么应该是界面的问题

    如果语句都无法切出,那么语句操作应该会报错,这样会有错误信息, 如果是语句操作长时间无响应,那么可以查看 sysprocess 表与之对应的记录,看是因为等待资源,还是 block 之类

    2014年8月14日 1:27
  • 平时基本上都不用,今天特意去试了一下, 2008 R2 和 2012 的向导, 两者的表现比较奇怪

    208R2 的分区管理向导,在切出里面只能选择第一个或者最后一个分区做切出, 2012 倒是可以选择任意分区,不知道是不是2008R2的向导还不完善导致(都是连接的2008R2上的同一个表做测试)

    2014年8月14日 1:32
  • 平时都是自己写语句,没有gui,建议还是用语句比较好,如果语句也不行,建议看一下有没有block之类的
    2014年8月14日 2:02