Script to analyze table space usage in SQL Server

to analyze table space usage of SQL Server

Added code to show database file sizes. Not really closely related to tables sizes, but a lot of the people who need this want to know why their database it so large, so it may help to know which files, especially the logs, are so large, and if the files have empty space in them.
— Script to analyze table space usage using the

— output from the sp_spaceused stored procedure

— Works with SQL 7.0, 2000, and 2005

set nocount on

print ‘Show Size, Space Used, Unused Space, Type, and Name of all database files’

select

[FileSizeMB]   =

convert(numeric(10,2),sum(round(a.size/128.,2))),

[UsedSpaceMB]  =

convert(numeric(10,2),sum(round(fileproperty( a.name,’SpaceUsed’)/128.,2))) ,

[UnusedSpaceMB]        =

convert(numeric(10,2),sum(round((a.size-fileproperty( a.name,’SpaceUsed’))/128.,2))) ,

[Type] =

case when a.groupid is null then ” when a.groupid = 0 then ‘Log’ else ‘Data’ end,

[DBFileName]   = isnull(a.name,’*** Total for all files ***’)

from

sysfiles a

group by

groupid,

a.name

with rollup

having

a.groupid is null or

a.name is not null

order by

case when a.groupid is null then 99 when a.groupid = 0 then 0 else 1 end,

a.groupid,

case when a.name is null then 99 else 0 end,

a.name

create table #TABLE_SPACE_WORK

(

TABLE_NAME     sysname        not null ,

TABLE_ROWS     numeric(18,0)  not null ,

RESERVED       varchar(50)    not null ,

DATA           varchar(50)    not null ,

INDEX_SIZE     varchar(50)    not null ,

UNUSED         varchar(50)    not null ,

)

create table #TABLE_SPACE_USED

(

Seq            int            not null

identity(1,1)  primary key clustered,

TABLE_NAME     sysname        not null ,

TABLE_ROWS     numeric(18,0)  not null ,

RESERVED       varchar(50)    not null ,

DATA           varchar(50)    not null ,

INDEX_SIZE     varchar(50)    not null ,

UNUSED         varchar(50)    not null ,

Read more of this post

Log Shipping in SQL Server 2005

For distributed database application environment, it is always required to synchronize different database servers, back up, copy Transaction Logs, etc. If we are going to implement using application we have to put lots of efforts to build up the application. SQL Server 2005 provides an advanced feature called Log Shipping. Log shipping is an Automated Process for backing up, restoring, copying the transaction logs and synchronizing the database for distributed database server application which can improve the application performance and availability of database. In my recent project, I have done some short of experiment on it. I am going to explain it in this article.

What is Log Shipping?

Log Shipping is used to synchronize the Distributed Database Server. Synchronize the database by copying Transaction logs, Backing up, Restoring data. SQL Server used SQL Server Job Agents for making those processes automatic. Log Shipping does not involve automatic transfer of server if there is any failure. This means it has just synchronized the databases but if the primary server fails, it will not redirect your application to a secondary server. This has to be done manually.

The main functions of Log Shipping are as follows:

  • Backing up the transaction log of the primary database
  • Copying the transaction log backup to each secondary server
  • Restoring the transaction log backup on the secondary database

Components of Log Shipping

For implementing Log Shipping, we need the following components – Primary Database Server, Secondary Database Server, and Monitor Server.

  • Primary Database Server: Primary Sever is the Main Database Server or SQL Server Database Engine , which is being accessed by the application. Primary Server contains the Primary Database or Master Database.
  • Secondary Database Server: Secondary Database Server is a SQL Server Database Engine or a different Server that contains the backup of primary database. We can have multiple secondary severs based on business requirements.
  • Monitor Server: Monitor Server is a SQL Server Database Engine which Track the Log Shipping process.

Log_Sh2.jpg

Figure 1: Log Shipping Database Server Configuration

We can have different SQL Servers for each of these servers or we can use a single server for these three. In my example, I have used a single server for these three.

You can start Log Shipping by Right Click on Database >Properties >Transaction Log Shipping > Select Check Box, and Configure your settings.

Setting1.JPG

Figure 2: Enable Log Shipping

Use the following settings for more configurations:

Log_Sh1.jpg

Figure 3: Transaction Log Backup Settings for Primary Server

Configure Secondary Server:

setting3.JPG

Figure 4: Settings for Secondary Server

Log Shipping Prerequisites

  • Must have at least two Database Servers or two SQL Server 2005 Database Engines.
  • Configuration user should have Admin privilege on that server
  • SQL Server Agent Service Configured properly
  • Configuration mode of Primary database should be a Full or Bulk Logged recovery model.
  • Shared folder for copying the transaction logs.

SQL Server 2005 Version that Supports Log Shipping

SQL Server 2005 Version Available
SQL Server 2005 Enterprise Edition Yes
SQL Server 2005 Workgroup Edition Yes
SQL Server 2000 Standard Edition Yes
SQL Server 2005 Developer Edition Yes
SQL Server 2005 Express Edition No