随着世界经济的迅速发展,企业越来越聚焦于节省花费以获得更好的财务报表。特别是数据库部门,为了优化花费,其最大的精力都放在最少以SQL Server减少每个月的费用上。
要达到这个目标,首先,必须做一个认真的SQL Server清理,检查所有的不再使用的数据和日志文件,以及备份和日志文件夹内的冗余数据,并且删除掉它们。另外,通过运行sql脚本,可以检查SQL Server中使用的外部连接,比如数据库链接,并删除不再使用的链接:
DECLARE @SQL NVARCHAR (MAX)
SELECT @SQL = ‘ DECLARE temp_cursor CURSOR FOR
SELECT Distinct’
+ ‘ [name] FROM [master].[sys].[syslogins]’
+ ‘ WHERE [name] NOT IN ‘
+ ‘ (SELECT [name] FROM [master].[sys].[syslogins]
WHERE [name] LIKE ”system%”)
OPEN temp_cursor FETCH NEXT
FROM temp_cursor INTO @user_name
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC sp_droplogin @user_name
FETCH NEXT
FROM temp_cursor INTO @user_name
END
CLOSE temp_cursor
DEALLOCATE temp_cursor
‘
EXEC (@SQL)
此外,可以检查数据库中是否有多余无用的空表,并使用DROP TABLE语句删除掉它们:
–Find the odd tables in the databases
SELECT DISTINCT sch.name AS [schema_name],
tbl.name AS [table_name]
FROM sys.tables tbl
JOIN sys.schemas sch ON tbl.schema_id = sch.schema_id
WHERE tbl.object_id NOT IN
(
SELECT object_id
FROM sys.columns
)
— Drop the tables
DECLARE @TableName sysname
DECLARE @SchemaName sysname
DECLARE @SQL NVARCHAR(256)
DECLARE cTab_Odd_Tables CURSOR FOR
SELECT sch.name AS [schema_name],
tbl.name AS [table_name]
FROM sys.tables tbl
JOIN sys.schemas sch ON tbl.schema_id = sch.schema_id
WHERE tbl.object_id NOT IN
(
SELECT object_id
FROM sys.columns
)
OPEN cTab_Odd_Tables
FETCH NEXT FROM cTab_Odd_Tables
INTO @SchemaName,@TableName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = N’DROP TABLE ‘ + @SchemaName + ‘.’ + @TableName
EXEC SP_EXECUTESQL @SQL
FETCH NEXT FROM cTab_Odd_Tables
INTO @SchemaName,@TableName
END
CLOSE cTab_Odd_Tables
DEALLOCATE cTab_Odd_Tables
最后,通过运行sp_spaceused存储过程,可以查看数据库中存储的空间大小,并更改数据库设置,例如减少文件空间释放空间和日志文件大小,以节省存储空间:
EXEC sys.sp_spaceused N’databasename’
以上就是在每个月优化SQL Server以最小化费用的一些常见技巧。通过认真检查所有不必要的文件和外部连接,删除多余的空表,以及更改数据库设置,都能让企业力求实现节省费用的目标。