SQL server数据库文件(mdf\ldf)的迁移

情况:

数据库运行期间插入数据出现以下异常:

“无法为数据库 'IOTDB' 中的对象 'dbo.iot_plcitems'.'PK__iot_plci__3214EC077C9CA7F8' 分配空间,因为 'PRIMARY' 文件组已满。请删除不需要的文件、删除文件组中的对象、将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间。”

经过网上查阅资料有以下解决方法:

1.找到数据文件(mdf&ldf)存放的位置的磁盘是否已满

2.更改数据库文件的增长为自动增长,最大文件大小改为无限制

 

 

 

 更改时发现最大文件大小更改不了为无限制,查阅资料显示是限制大小中的2097152(2TB)就是SqlServer限制的最大的大小了,它与无限制是同大小的。

结果:

以上的方法改了之后仍无效果,最终发现是因为数据库的版本为SQL Server的社区版,它对数据的存储是有限制的,限制的数据最大为10G

查看数据文件的大小

 

 

 

 最终选择的解决方法是将sql server的社区版改为sql server 企业版(不对数据做限制)

更改数据库的版本后就涉及的数据库迁移的问题,由于本次数据库的数据过大以及表过多,采用备份数据的方式不太合适,就采用直接迁移mdf &ldf文件的方式将数据库迁移到新版本上(注:这种迁移的方式会使数据库断开,期间有他服务请求操作数据库会请求不了,导致数据丢失,如果不允许出现此情况可以采用备份数据库的方式,数据库过大的话可能会很耗时)

数据文件迁移采用以下两种方式:

1.数据库分离

(1)找到mdf &ldf文件的位置

右键目标数据库=》属性=》文件

 

 

(2)右键目标数据库=>任务=》分离

选中删除连接(数据库与相关的资源断开连接后,后续才能操作相关文件)确定。

 

 

 

 完成后会发现此数据库会从数据库的列表中移除(IOTDB就被移除了)

到mdf &ldf文件所在的位置将这两个文件拷贝到你后续想放置的位置(本)

 

 

 

 目标位置(本次为data文件夹中)

 

完成后在新版本的数据库中才用附加的方式将数据库加入到新版本的数据库中

 

 

 

 2.第二种方式

(1)停掉MSSQLSERVER服务(注:种方式比较粗暴,会导致服务下的所有数据库停止,服务下没有其他数据库或者数据库没有访问或不重要可以采用此种方式)

(2)拷贝mdf &ldf文件到目标目录

(3)开启MSSQLSERVER服务

(4)附加数据库,此时需要注意将以下位置的路径更改为前面拷贝的目录,由于我们采用的是停服务的粗暴方式拷贝的文件,文件会保留它原始路径的信息不回随拷贝的位置更改。

 

 

 总结:

两者的的共同点,断开数据库与数据文件(mdf、ldf)的连接,可以进行数据文件的拷贝

 

 

posted @ 2021-04-28 16:16  流年sugar  阅读(1128)  评论(0编辑  收藏  举报