我们都知道,SQL server2008R2企业版以及一些其它的版本支持分区函数,当你在这些数据库备份后想在一些不支持分区函数的数据库做还原时,就会失败。

下面我们来解决这个问题。

1.备份数据库!备份数据库!备份数据库! (对数据库动任何刀子前先备份)

2.删除分区函数所涉及的表,因为在建表的时候我们做了关联,所以删除主要是切断这个关联以及相关的文件。

3.删除关联、删除分区文件 sql语句如下

select * from sys.partition_schemes 查询分区
select * from sys.partition_range_values 查询分区范围
select * from sys.partition_functions 查询分区函数
DROP PARTITION SCHEME 查询分区.[name]
DROP PARTITION FUNCTION 查询分区函数.[name]

执行Drop语句后再做上面的查询应该已经查不到任何内容。

删除分区文件

ALTER DATABASE [DataBase] REMOVE FILE [分区文件名];
ALTER DATABASE [DataBase] REMOVE FILEGROUP [分区文件组名]

名称可以通过对应库的创建脚本查看

.

.

.

可能有多个这样的分区和分区组手动一一执行吧

到这里所有的删除就已经完成了,备份,还原,成功!

这里再多分享一个我碰到的问题,上面的方法在高版本(sqlserver2016)下已经没有问题,但是碰到需要还原的数据库为低版本有兼容性问题,这个问题碰到过很多次,我的方法是在高版本下生成创建数据库的脚本和创建数据库数据的脚本,这里脚本的内容可能比较大会造成打不开的情况。所以就用远程创建一个链接服务器,将数据倒插入低版本数据库。有余表的数量较多,不可能每一个都手动来,这里提供一个脚本来生成这些插入语句。

declare @name nvarchar(50)
declare @sqltable table (sqlstr nvarchar(2000)) --插入语句的临时表
declare @para nvarchar(1000) --表列名串,因为SET IDENTITY_INSERT 语句需要有列名的情况下才可以使用,这里需要将列名拼接起来
DECLARE MyCursor CURSOR 
FOR SELECT Name FROM SysObjects Where XType=‘U‘--查询库里的所有表然后遍历 
--打开一个游标 
OPEN MyCursor
--匹配第一条记录
FETCH NEXT FROM MyCursor INTO @name
WHILE @@FETCH_STATUS =0
BEGIN

select @para = stuff((select ‘,‘+ltrim(name) from SYSCOLUMNS where ID=OBJECT_ID(@name ) 
for xml path(‘‘)),1,1,‘‘) 
if exists (Select 1 From sysColumns Where id=object_id(@name) and Status=128)--判断是否存在标识键(一般是ID自增)
insert into @sqltable values(
‘SET IDENTITY_INSERT ‘+@name+‘ ON ‘+‘insert into ‘+@name+‘(‘+@para+‘) select ‘+@para+‘ from [链接服务器的库]..‘+@name+‘ SET IDENTITY_INSERT ‘+@name+‘ OFF‘
)
else
insert into @sqltable values (‘insert into ‘+@name + ‘ select * from [链接服务器的库]..‘+@name)
FETCH NEXT FROM MyCursor INTO @name
END
--关闭游标
CLOSE MyCursor
--释放资源
DEALLOCATE MyCursor

select * from @sqltable

将查询结果全部复制出来遍可以执行了

sqlserver 删除表分区的更多相关文章

  1. Oracle 删除表分区

    删除表分区(drop partition)    删除表分区包含两种操作,分别是:   Ø 删除分区:alter table [tbname] drop partition [ptname] UPDA ...

  2. DB2删除表分区

    近日,由于部门数据库读库空间过小,提出删除掉两个月之前日志表的分区(数据库分区是按时间月分区),记述如下: 上网搜索资料发现删除表分区大概分这么几步: 1.查询需要删除掉的分区: select t.D ...

  3. Oracle、SQLServer 删除表中的重复数据,只保留一条记录

    原文地址: https://blog.csdn.net/yangwenxue_admin/article/details/51742426 https://www.cnblogs.com/spring ...

  4. sqlserver 数据库表分区

    参考文档 https://msdn.microsoft.com/zh-cn/library/ms345146(SQL.90).aspx http://blog.sina.com.cn/s/blog_4 ...

  5. sqlserver 删除表中 指定字符串

    源表T "单据编号"               "航班计划日期"        "航班号"          "起飞航站代码&q ...

  6. SqlServer删除表中重复记录

    重复记录:有两个意义上的重复记录 一是完全重复的记录,也即所有字段均重复的记录: 二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略. 1.对于第一种重复,比较容易 ...

  7. sqlserver 2008r2 表分区拆分问题

    问题描述: 对tab1表实行自动天分区,每天通过sqlserver代理-作业00:00点自动生成分区: 因有次停了数据库服务,sqlserver 代理服务忘记开启,导致当天00:00没有生成新分区: ...

  8. sqlserver 删除表中数据 id 从1开始

    TRUNCATE  TABLE  TbName   --TbName是表名 但如果TbName中某些字段与其它表有主外键关系,会报错: 无法截断表 'Plants',因为该表正由 FOREIGN KE ...

  9. SQLServer 删除表中的重复数据

    create table Student(        ID varchar(10) not null,        Name varchar(10) not null, ); insert in ...

随机推荐

  1. freeswitch APR库

    概述 freeswitch依赖库源代码基本都可以在libs目录下找到. 在freeswitch的官方手册中,可以找到freeswitch的依赖库表格,其中freeswitch的core核心代码依赖库主 ...

  2. [第二章]c++学习笔记2(类和对象的基础3)

    隐藏的概念 隐藏的作用 使用例 成员函数的重载与缺省(附使用例) 注意事项

  3. 在Winform中直接录入表格数据和在Vue&Elment中直接录入表格数据的比较

    一般来说,录入数据的时候,我们都采用在一个窗体界面中,根据不同内容进行录入,但是有时候涉及主从表的数据录入,从表的数据有时候为了录入方便,也会通过表格控件直接录入.在Winform开发的时候,我们很多 ...

  4. java miniui(datagrid) 取值赋值

    ... (本想放项目代码上来的 可是这放上去就看不了不知为何,下面是项目中的代码) // 获取时间设置到时间上,加载没有那个快,所以需要先加载完数据然后才能获取 function obtain(e) ...

  5. 菜鸡的Java笔记 第四 - java 基础运算符

    数学运算符,逻辑运算,三目运算,位运算 double d2 = 314e2; //采用科学计数法的写法,表示10的2次方.= 31400.0 代码写的越简单越好   简化运算符 代码:x=x+y 可以 ...

  6. 1-Introduction(介绍)

    目录: 正文: (一)機器學習就是让机器自動找函式 语音/图像识别 (二)你想找什麼樣的函式? (2.1)Regression 找出的函数其输出是一个数值 (2.2)Classification (2 ...

  7. .net工程师学习vue的心路历程(三)

    vue cli3没记错的话是在2019年8月份yyx个人正式声明发布. 接下来就开始我们的vue cli3的方式创建vue项目.明白一点,vue cli3遵循的一个原则就是 "0配置&quo ...

  8. [loj3462]括号路径

    对于两条边$(x_{1},y,c)$和$(x_{2},y,c)$,不难发现$x_{1}$与$x_{2}$完全等价,因此可以合并 重复此过程,合并之后用启发式合并来合并边集(注意自环也可以参与合并,即$ ...

  9. [bzoj1077]天平

    先考虑如何求出任意两数的最大差值和最小差值,直接差分约束建图跑floyd求最短路和最长路即可然后枚举i和j,考虑dA+dB和di+dj的关系,分两种情况移项,转化成dA-di和dj-dB的关系或dA- ...

  10. vue指令v-for报错:Elements in iteration expect to have 'v-bind:key' directives.eslint-plugin-vue

    文件–>首选项–>设置–>在搜索框中输入:vetur.validation.template,取消勾选.