Exploring your database schema with SQL
November 17, 2009 Leave a comment
–find the actual code for a particular stored procedure, view, function etc.
Select object_Name(object_ID),definition from sys.SQL_Modules
where object_Name(object_ID)=’MyObjectName’
Finding Tables with no Primary Keys
You’ll want to know if there tables without primary keys and why. Here is a way of getting that information from theINFORMATION_SCHEMA.tables view.
–Which of my tables don’t have primary keys?
SELECT –we’ll do it via information_Schema
TheTables.Table_Catalog+’.’+TheTables.Table_Schema+’.’
+TheTables.Table_Name AS [tables without primary keys]
FROM
information_Schema.tables TheTables
LEFT OUTER JOIN information_Schema.table_constraints TheConstraints
ON TheTables.table_Schema=TheConstraints.table_schema
AND TheTables.table_name=TheConstraints.table_name
AND constraint_type=’PRIMARY KEY’
WHERE table_Type=’BASE TABLE’
AND constraint_name IS NULL
ORDER BY [tables without primary keys]
The following code, using a Catalog view, should give the same result as the previous code, but much more easily. The TableHasPrimaryKey property of the OBJECTPROPERTY function simply returns 1 if a primary key exists, or 0 if not.
— you can save a lot of code by using the catalog views
— along with the OBJECTPROPERTY() function
Select
DB_NAME()+’.’+Object_Schema_name(t.object_ID)+’.’
+t.name as [tables without primary keys]
FROM sys.tables t
WHERE OBJECTPROPERTY(object_id,’TableHasPrimaryKey’) = 0
ORDER BY [tables without primary keys]