Script(s)

what I learn is what u c

Posts Tagged ‘SQLServer 2005

SQL Server, Clean your Database Records and reset Identity Columns, The Shortest Path

with 4 comments

(Copied from Moses’s Blog for my reference)

Well, I had a small issue regarding writing a script to clean a database we have and reset its identity columns in all tables. Although the database wasn’t huge one (less than 100 tables) I had to trace relations to be able to delete child table’s records before parent’s ones because of the foreign key constraints. The solution is disable the foreign keys and delete records with no fear of any errors then enables the constraints again.
Well, I found a solution to disable all constraints without the need to go on each table and disable it manually. and I was happy to know that I can use this solution in deleting all records from all tables. Not only this I was able to use the same solution to reset identity columns in all tables.

The solution was to use this built in stored procedure sp_MSforeachtable. For help about this proc search for it in Books online or use this sp_helptext sp_MSForeachtable.

Now back to my 6 lines, bellow is how I re-zeroed my Database:


1: /*Disable Constraints & Triggers*/
2: exec sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
3: exec sp_MSforeachtable 'ALTER TABLE ? DISABLE TRIGGER ALL'
4:
5: /*Perform delete operation on all table for cleanup*/
6: exec sp_MSforeachtable 'DELETE ?'
7:    
8: /*Enable Constraints & Triggers again*/
9: exec sp_MSforeachtable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
10: exec sp_MSforeachtable 'ALTER TABLE ? ENABLE TRIGGER ALL'
11:   
12: /*Reset Identity on tables with identity column*/
13: exec sp_MSforeachtable 'IF OBJECTPROPERTY(OBJECT_ID(''?''), ''TableHasIdentity'') = 1 BEGIN DBCC CHECKIDENT (''?'',RESEED,0) END'

Advertisements

Written by gchandra

February 18, 2008 at 10:23 am

Organize your SQL Server 2005 tables in a better way !!

leave a comment »

When you create tables in SQLServer (2005) by default its all get created under default schema. (dbo.)

If you have too many tables then the table list could be confusing / clumsy.

Here enters Schema

(see image)

Schema Example

To organize your tables into meaningful groups (or namespaces)

First create a schema

CREATE SCHEMA Person
GO

Then Alter your existing table

ALTER SCHEMA Lookup
TRANSFER dbo.Contact
GO

So now that you have grouped your tables into different schemas.

How to use them ? The usual way but with schema name added to it.

SELECT * FROM Person.Contact


What is Schema ? (from MSDN)Beginning in SQL Server 2005, each object belongs to a database schema. A database schema is a distinct namespace that is separate from a

database user.  Schemas can be created and altered in a database, and users can be granted access to a schema. A schema can be owned by any

user, and schema ownership is transferable.

In previous versions of SQL Server, database users and schemas were conceptually the same object. Beginning in SQL Server 2005, users and schemas

are separate, and schemas serve as containers of objects.

Written by gchandra

February 6, 2008 at 9:07 am