在备份SQL Server 数据库时候,想要将备份文件放在非系统盘目录下,结果提示错误信息:
备份对于服务器“服务器名”失败。无法打开备份设备’f:\abc.bak’。出现操作系统错误5(拒绝访问。)。
一直不知道是什么原因,每次都是偷懒拉倒,还是备份到SQL Server默认的那个层级很深的目录里。今天就去搜索了下,网上说是SQL Server的一个Bug 坑。
解决方法是:不能将备份文件放在盘符的根目录下,必须放在一个非根目录下,否则就会报错。
试了一下,果然就解决了,太神奇了。
最近几天发现网站数据没有变化,还以为是数据同步发生了错误,今天登录服务器,日志显示了大量的未能为数据库 ‘*’中得对象’*’分配空间,因文件组’PRIMARY’已满错误。
网上搜索发现是数据库文件的体积有限制导致,后来发现数据库原来是在虚拟主机运行的,运营商对数据库做了限制,而我迁移到自己的服务器上后直接附加的数据库,所以这个限制也一起带过来了。
解决方法也比较简单,选择数据库,右键属性, 在“文件”标签页里设置数据库为不受限制,确定即可。
最近在不断地清空数据库的表,人工操作起来稍显的麻烦了点,放上SQL语句,以备后用。
–/第1步**********删除所有表的外键约束*************************/
DECLARE c1 cursor for select ‘alter table [‘+ object_name(parent_obj) + ‘] drop constraint [‘+name+’]; ‘ from sysobjects where xtype = ‘F’ open c1 declare @c1 varchar(8000) fetch next from c1 into @c1 while(@@fetch_status=0) begin exec(@c1) fetch next from c1 into @c1 end close c1 deallocate c1
–/第2步**********删除所有表*************************/
declare @sql varchar(8000) while (select count(*) from sysobjects where type=’U’)>0 begin SELECT @sql=’drop table ‘ + name FROM sysobjects WHERE (type = ‘U’) ORDER BY ‘drop table ‘ + name exec(@sql) end