如何对已经存在的表进行加分区方案分区函数

我参考网上的,写了2给存储过程,一个初始创建文分区方案分区函数;一个可以通过作业新增文件组文件件;

但是初始没有绑定表,网上的都是在创建表是绑定分区方案,但是我的表是已经存在的,怎么绑定

初始存储过程

USE [DB3]
GO
/****** Object:  StoredProcedure [dbo].[FQ_DB3_his_order_goods2_part_ID_first]    Script Date: 2024/7/12 9:25:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

--每新增@FQROWS(500000)条记录新增一个文件和文件组
Create PROCEDURE [dbo].[FQ_DB3_his_order_goods2_part_ID_first]
AS
BEGIN
    DECLARE --@FilePath VARCHAR(100),                      --文件路径
            --@FileName VARCHAR(100),                      --文件名称
            --@FileSize VARCHAR(100),                      --文件大小
            --@FileGrowth VARCHAR(100),                    --文件增长
            --@FileMaxLimit VARCHAR(100),                  --文件最大限制
            --@FileGroupName VARCHAR(100),                 --文件组名称
            --@Database VARCHAR(100),                      --操作数据库
            @CurrentNum VARCHAR(2), --当前新分区计数
            @SchemeName VARCHAR(100),                    --分区方案名称
            --@PartitionName VARCHAR(100),                 --分区函数名称
            @FQROWS  int=100000;   --每个分区文件放的记录数 默认 500000
            --@sql VARCHAR(400);    -- 赋值文件属性
    --SET @FileSize = '8MB';
    --SET @FileGrowth = '1MB';
    --SET @FileMaxLimit = 'unlimited';
    -- 赋值分区属性
    SET @SchemeName = 'his_order_goods2_part_id_fa';   --'cti_IDFQ_Scheme'; 分区方案名称
    --SET @PartitionName ='his_order_goods2_part_id_func()'; --   'cti_IDFQ_Func()';  分区函数名称

    declare @rows as int
    select @rows=count(*) from his_order_goods2_part;

    --没有为当前表创建分区和分区函数
    SELECT count(*) FROM sys.partition_functions  where name='his_order_goods2_part_id_fa'
    if (SELECT count(*) FROM sys.partition_functions  where name=@SchemeName)<=0
    begin
        --创建文件组语句
        ALTER DATABASE DB3 ADD FILEGROUP [wjz_part_01]

        --创建文件语句
        ALTER DATABASE DB3 ADD FILE ( NAME = N'F01_part', FILENAME = N'D:\DB3\F01_part.ndf' , SIZE = 100MB , FILEGROWTH = 500MB ) TO FILEGROUP [wjz_part_01]

        --创建分区函数
        CREATE PARTITION FUNCTION his_order_goods2_part_id_func(bigint)
        AS RANGE right FOR VALUES 
        (
        @FQROWS
        );

        --创建分区方案
        CREATE PARTITION SCHEME his_order_goods2_part_id_fa
        AS PARTITION his_order_goods2_part_id_func
        TO (
        [PRIMARY],
        [wjz_part_01]
        );
    end
    return 1

END;
 

可以自动新增文件组和文件的存储过程

USE [DB3]
GO
/****** Object:  StoredProcedure [dbo].[FQ_DB3_his_order_goods2_part_ID]    Script Date: 2024/7/11 17:35:52 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- exec  FQ_DB3_his_order_goods2_part_ID
--每新增@FQROWS(500000)条记录新增一个文件和文件组
CREATE PROCEDURE [dbo].[FQ_DB3_his_order_goods2_part_ID]
AS
BEGIN
--BEGIN TRANSACTION
    DECLARE @FilePath VARCHAR(100),                      --文件路径
            @FileName VARCHAR(100),                      --文件名称
            @FileSize VARCHAR(100),                      --文件大小
            @FileGrowth VARCHAR(100),                    --文件增长
            @FileMaxLimit VARCHAR(100),                  --文件最大限制
            @FileGroupName VARCHAR(100),                 --文件组名称
            @Database VARCHAR(100),                      --操作数据库
            @CurrentNum VARCHAR(2), --当前新分区计数
            @SchemeName VARCHAR(100),                    --分区方案名称
            @PartitionName VARCHAR(100),                 --分区函数名称
            @FQROWS  int=100000,   --每给分区文件放的记录数 默认 500000
            @sql VARCHAR(400);    -- 赋值文件属性
    SET @FileSize = '8MB';
    SET @FileGrowth = '1MB';
    SET @FileMaxLimit = 'unlimited';
    -- 赋值分区属性
    SET @SchemeName = 'his_order_goods2_part_id_fa';   --'cti_IDFQ_Scheme'; 分区方案名称
    SET @PartitionName ='his_order_goods2_part_id_func()'; --   'cti_IDFQ_Func()';  分区函数名称

    declare @rows as int
    select @rows=count(*) from his_order_goods2_part;
    print @rows

 --   --没有为当前表创建分区和分区函数
    --SELECT count(*) FROM sys.partition_functions  where name='his_order_goods2_part_id_fa'
    --if (SELECT count(*) FROM sys.partition_functions  where name=@SchemeName)<=0
    --begin
    --    --创建文件组语句
    --    ALTER DATABASE DB3 ADD FILEGROUP [wjz_part_01]

    --    --创建文件语句
    --    ALTER DATABASE DB3 ADD FILE ( NAME = N'F01_part', FILENAME = N'D:\DB3\F01_part.ndf' , SIZE = 100MB , FILEGROWTH = 500MB ) TO FILEGROUP [wjz_part_01]

    --    --创建分区函数
    --    CREATE PARTITION FUNCTION his_order_goods2_part_id_func(bigint)
    --    AS RANGE right FOR VALUES 
    --    (
    --    @CurrentNum
    --    );

    --    --创建分区方案
    --    CREATE PARTITION SCHEME his_order_goods2_part_id_fa
    --    AS PARTITION his_order_goods2_part_id_func
    --    TO (
    --    [PRIMARY],
    --    [wjz_part_01]
    --    );
    --end

    --获取分区数 并根据记录数判断是否新建
    declare @fqs as int=0
    SELECT @fqs=count(*)+1 FROM sys.partition_range_values
    where function_id=(SELECT function_id FROM sys.partition_functions where name='his_order_goods2_part_id_func');
    print @fqs
    --当 分区数*设置的分区记录数(500000)<表的总行数 添加一个文件
    if @fqs*@FQROWS<@rows
    begin
        set @CurrentNum=cast(@fqs+1 as VARCHAR(2));
        print '新增分区文件和文件组'
        SET @FileName = 'dbfn_part' + @CurrentNum;
        SET @FilePath = 'D:\DB3';
        -- 赋值数据库属性
        SET @Database = '[DB3]';
        -- 赋值文件组属性
        SET @FileGroupName = 'fg_part' + @CurrentNum;
        -- 创建文件组
        SET @sql = 'alter database ' + @Database + ' add filegroup ' + @FileGroupName + '';
        EXEC (@sql);
        -- 创建文件,并绑定文件组
        SET @sql = 'alter database ' + @Database + ' add file (name=''' + @FileName + ''',' + 'filename=''' + @FilePath + '\'
              + @FileName + '.ndf'',' + 'size = ' + @FileSize + ',' + 'filegrowth = ' + @FileGrowth + ',' + 'maxsize = '
              + @FileMaxLimit + '' + ')' + 'to filegroup ' + @FileGroupName;
        EXEC (@sql);
        -- 修改分区方案
        SET @sql = 'alter partition scheme ' + @SchemeName + ' next used ' + @FileGroupName + '';
        EXEC (@sql);
        -- 修改分区函数
        print '@CurrentNum'
        print @CurrentNum
        print @FQROWS
        declare @range_val int=cast(@CurrentNum as int)*@FQROWS;
        print @range_val
        declare @str_range_val varchar(10)
        set @str_range_val=cast(@range_val as varchar(10))
        print @str_range_val
        --SET @sql = 'alter partition function ' + @PartitionName + ' split range (N''' +CONVERT(VARCHAR(10), getdate(), 120)+''')'    
        SET @sql = 'alter partition function ' + @PartitionName + ' split range (cast(' + @str_range_val+ ' as int) )'
        print @sql
        EXEC (@sql);
    end
    else
    begin
       print '不新增'
    end
    return 1

--COMMIT TRANSACTION
END;
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/44780.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python实现网站IP地址查询

使用socket库实现网站的ip地址查询&#xff0c;以便于使用CC攻击和DDoS攻击&#xff08;闹着玩的&#xff09; import socket def get_website_ip(website): try: ip socket.gethostbyname(website) return ip except socket.gaierror: retur…

最小数字游戏(Lc2974)——模拟+优先队列(小根堆)、排序+交换

你有一个下标从 0 开始、长度为 偶数 的整数数组 nums &#xff0c;同时还有一个空数组 arr 。Alice 和 Bob 决定玩一个游戏&#xff0c;游戏中每一轮 Alice 和 Bob 都会各自执行一次操作。游戏规则如下&#xff1a; 每一轮&#xff0c;Alice 先从 nums 中移除一个 最小 元素&…

力扣 383赎金信

思路&#xff0c;用unordered_map存储magazine中字符以及字符出现的次数 遍历ransomNote中每个字符&#xff0c;如果能在map中找到&#xff0c;则对应value减一&#xff0c;如果字符对应的value小于零&#xff0c;意味着magazine中找不到与ransomNote里这个字符对应的字符&…

翁恺-C语言程序设计-05-3. 求a的连续和

05-3. 求a的连续和 输入两个整数a和n&#xff0c;a的范围是[0,9]&#xff0c;n的范围是[1,8]&#xff0c;求数列之和S aaaaaa…aaa…a&#xff08;n个a&#xff09;。如a为2、n为8时输出的是222222…22222222的和。 输入格式&#xff1a; 输入在一行中给出两个整数&#xf…

VUE_TypeError: Cannot convert a BigInt value to a number at Math.pow 解决方法

错误信息 TypeError: Cannot convert a BigInt value to a number at Math.pow vue 或 react package.json添加 "browserslist": {"production": ["chrome > 67","edge > 79","firefox > 68","opera >…

实战演练-2021年电赛国一之三端口DC-DC变换器

文章目录 前言一、题目二、题目分析1、题目要求解析2、题目方案选定方案一(使用buck-boost电路&#xff0b;双向DC-DC电路&#xff08;前端&#xff09;)方案二(使用同步整流Boost升压电路&#xff0b;双向DC-DC电路&#xff08;前端&#xff09;)方案三(使用同步整流Boost升压…

实时聊天 Vue + Vuex + sockjs-client + stompjs进行websocket连接

实时聊天 知识点WebSocket介绍SockJSSTOMP 开发环境功能实现安装应用在vuex中创建vue中的引入、监听、实例化与收发、订阅消息引入组件实例化与订阅计算属性监听收到消息封装的发送消息的公共方法发送消息 完整的代码 知识点 WebSocket介绍 WebSocket 是一种在 Web 应用中实现…

二叉搜索树大冒险:寻找-插入-删除

OK&#xff0c;看我们题目就可知道啦&#xff0c;今天要分享学习的一种数据结构就是二叉搜索树。 内容题目也说了三个大概的&#xff0c;分别是寻找、插入、删除。 讲这个之前呢&#xff0c;那么就先讲讲这个二叉搜索树是何方神圣呢&#xff1f; 二叉搜索树&#xff1a; 又…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(五)-同时支持无人机和eMBB用户数据传输的用例

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…

全网最详细单细胞保姆级分析教程(二) --- 多样本整合

上一节我们研究了如何对单样本进行分析,这节我们就着重来研究一下如何对多样本整合进行研究分析! 1. 导入相关包 library(Seurat) library(tidyverse) library(patchwork)2. 数据准备 # 导入单样本文件 dir c(~/Desktop/diversity intergration/scRNA_26-0_filtered_featur…

Linux上如何安装ffmpeg视频处理软件

在Linux上安装ffmpeg需要以下步骤&#xff1a; 更新系统 在开始安装之前&#xff0c;首先需要更新系统以获取最新的软件包列表和版本。在终端中执行以下命令&#xff1a; sudo apt update sudo apt upgrade安装依赖库 ffmpeg依赖于一些库和工具&#xff0c;需要先安装它们。在…

【香橙派 Orange pi AIpro】| 开发板深入使用体验

目录 一. &#x1f981; 写在前面二. &#x1f981; 愉快的安装流程2.1 安装前准备2.2 流程准备2.2.1 烧录镜像2.2.2 开机2.2.3 连网2.2.4 SSH远程连接开发板 2.3 体验 AI 应用样例 三. &#x1f981; 写在最后 一. &#x1f981; 写在前面 大家好&#xff0c;我是狮子呀&…

医疗级微型导轨:保障医疗行业手术安全!

微型直线导轨能成为一种专为医疗行业设备运用的高精度线性运动设备&#xff0c;在现代医疗领域&#xff0c;精准的位置控制和平稳的运动对于确保医疗设备的高效性能至关重要。那么&#xff0c;医疗行业对微型导轨有哪些要求呢&#xff1f; 1、精度&#xff1a;在手术过程中&…

C++客户端Qt开发——开发环境

一、QT开发环境 1.安装三个部分 ①C编译器&#xff08;gcc&#xff0c;cl.exe……) ②QT SDK SDK-->软件开发工具包 比如&#xff0c;windows版本QT SDK里已经内置了C的编译器&#xff08;内置编译器是mingw&#xff0c;windows版本的gcc/g&#xff09; ③QT的集成开发…

Python编程中用函数还是用复杂的表达式

要不要使用复杂表达式 Perl语言的原作者Larry Wall曾经说过&#xff0c;伟大的程序员都有三个优点&#xff1a;懒惰、暴躁和自负。乍一看这三个词语没有一个是褒义词&#xff0c;但在程序员的世界里&#xff0c;这三个词有不同的意义。首先&#xff0c;懒惰会促使程序员去写一…

智慧园区规划建设解决方案PPT(40页)

智慧园区规划建设解决方案摘要 1. 园区定义与发展历程 园区&#xff0c;亦称开发区&#xff0c;是在特定产业和区域政策指导下形成的区域。它们通过提供基础设施和生产空间&#xff0c;吸引投资&#xff0c;形成技术、资本密集区&#xff0c;推动经济发展。园区发展经历了四代…

Docker 部署 ShardingSphere-Proxy 数据库中间件

文章目录 Github官网文档ShardingSphere-Proxymysql-connector-java 驱动下载conf 配置global.yamldatabase-sharding.yamldatabase-readwrite-splitting.yamldockerdocker-compose.yml Apache ShardingSphere 是一款分布式的数据库生态系统&#xff0c; 可以将任意数据库转换为…

【qt】TCP客户端信息的接受和发送

当有信息时的槽函数关联 跟服务端收到信息一样,当可以读一行的时候,就从套接字读一行. 发送信息也是和服务端如出一辙,通过write(). 运行结果:

java EnumSet 介绍

EnumSet 是 Java Collections Framework 中专门为枚举类型设计的高效集合实现。与其他集合类相比,EnumSet 提供了许多优点,如高效性、类型安全和易用性。它只能包含单个枚举类型的值,并且在内部使用位向量实现,因而在空间和时间上都非常高效。 EnumSet 的特点 高效性:Enu…

Spring MVC 中的文件上传 和 文件下载

Spring MVC 中的文件上传 和 文件下载 文章目录 Spring MVC 中的文件上传 和 文件下载1. Spring MVC 中的文件上传2. Spring MVC 中的文件下载3. 总结&#xff1a;4. 最后&#xff1a; 1. Spring MVC 中的文件上传 文件上传是&#xff1a;浏览器端向服务器发送文件&#xff0c…