第一种情况:
工程需要用上了SQL SERVER2008 ,主要作为数据仓库使用,使用SSIS包从ORACEL10G中抽取数据到MS SQL中。环境是win2003x64的,驱动使用的oracle10gX64。使用半年后发现服务器C盘还剩不到1G(总大小50G,软件只有ORACLE 客户端,SQL SERVER),后来排除文件时发现C:\Program Files\Microsoft SQL ServerC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\tempdb.mdf 这个文件有37G,这个是临时的数据库,是用来存放临时表的。是因为SSIS包程序和存储过程中经常性使用插入或者更新数据导致的。这种情况可以使用收缩了数据库,然后是把增长方式改为以M增长的方式解决。并且将该数据库迁移到另外一个盘下面:
一、迁移SqlServer数据库中的tempdb.mdf。
将 tempdb 从其在磁盘上的当前位置移动到其他磁盘位置。由于每次启动 MSSQLSERVER 服务时都会重新创建 tempdb,因此不需要从物理意义上移动数据和日志文件。
1 确定 tempdb 数据库的逻辑文件名称以及在磁盘上的当前位置。
SELECT name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');
GO
2使用 ALTER DATABASE 更改每个文件的位置
USE master;
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'E:\SQLData\templog.ldf');
GO
3停止并重新启动 SQL Server。
4验证文件更改。
SELECT name, physical_name
FROM sys.master_files
WHERE database_id = DB_ID('tempdb');
二、临时性解决这个问题可以采取定期重启服务器的方式解决
第二种情况:
今天用服务器下载文件时,系统提示我硬盘分区空间不足了。点击查看硬盘分区是50GB,已经只剩下175MB了。而这个服务器应该没有什么大文件才对呀。
仔细查看,发现SQL Server 2005占用了差不多40GB的空间了,而SQL Server应该只运行了网站数据库才对,不可能那么大空间。再仔细查看,发现SQL Server的data目录占用了差不多38GB的空间,进入此目录下,发现了大量类似 audittrace20100102104348.trc的文件。
通过放狗搜索和群友的支持,找到原因和解决方法如下:
一、原因:
开启SQL Server (MSSQLSERVER) 的C2审核之后,当SQL Server启动后,默认在C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data下自动生成类似 audittrace20100102104348.trc的文件,用于对数据库的操作进行审核,以提高数据库的安全性。当单个文件超过200MB之后,会重新生成另外一个文件。
二、查看
可以用如下的SQL code来查看数据库的C2审核状况
sp_configure 'show advanced options',1
go
reconfigure
go
sp_configure 'c2 audit mode'
go
或者
select *
from sys.configurations
where name='c2 audit mode'
看一下c2 audit mode的config_value和run_value的值,如果启动了c2的审计,这两个值都是为1。而开启了c2审核,则会自动生成类似 audittrace20100102104348.trc的文件。
三、禁用
如果不需要c2审核的话,可以用如下SQL code禁用此功能
sp_configure 'c2 audit mode',0
go
reconfigure
go
然后再用如下SQL code查看一下
sp_configure 'c2 audit mode'
go
如果以前是启用了c2审核的,此时的config_value变为0了,但run_value还是为1。该配置需要重启动SQL Server的服务才能生效
用如下命令重启动SQL Server的服务:
打开cmd命令窗口,输入命令
net stop mssqlserver
来停止SQL Server服务,再用命令
net start mssqlserver
来启动SQL Server服务
重启动SQL Server服务之后,再执行SQL code查看
sp_configure 'c2 audit mode'
go
此时的config_value和run_value的值就都变为0了