<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SQL Server Engine Tips : Catalog Views</title><link>http://blogs.msdn.com/sqltips/archive/tags/Catalog+Views/default.aspx</link><description>Tags: Catalog Views</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Using catalog views in SQL Server 2005</title><link>http://blogs.msdn.com/sqltips/archive/2006/09/06/743068.aspx</link><pubDate>Wed, 06 Sep 2006 21:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:743068</guid><dc:creator>SQL Server Engine Team</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/sqltips/comments/743068.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sqltips/commentrss.aspx?PostID=743068</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sqltips/rsscomments.aspx?PostID=743068</wfw:comment><description>&lt;DIV&gt;Did you know that the catalog views in SQL Server 2005 exposes metadata for various objects in a database and at the server-level? This is the preferred method of accessing metadata. It is a much richer&amp;nbsp;mechanism that doesn't require access to system tables or undocumented columns or status bits. If you want standard and portable access to metadata then you can still use the INFORMATION_SCHEMA views but it is limited to standard specific features, data types and views.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;I have posted several topics in the past that shows how to use the information in various catalog views. And the Books Online Documentation has a topic that has answers to several frequently asked questions. It shows you how to use the catalog views to get answers to following questions for example:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms345522.aspx#_FAQ14"&gt;How do I find the LOB data types of a specified table?&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms345522.aspx#_FAQ25"&gt;How do I find the CHECK constraints that depend on a specified CLR user-defined type?&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms345522.aspx#_FAQ8"&gt;How do I find the dependencies on a specified function?&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms345522.aspx#_FAQ2"&gt;How do I find all the owners of entities contained in a specified schema?&lt;/A&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;You can find the topic using the links below:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Books Online in MSDN: &lt;SPAN&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms345522.aspx"&gt;&lt;U&gt;http://msdn2.microsoft.com/en-us/library/ms345522.aspx&lt;/U&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Books Online Client: ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/udb9/html/ca202580-c37e-4ccd-9275-77ce79481f64.htm&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;
&lt;DIV&gt;Please check it out and send your feedback using the Books Online feedback mechanism if you want to see additional questions. You can also post such questions here and I will write the queries using the catalog views.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;--&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;Umachandar&lt;/SPAN&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=743068" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sqltips/archive/tags/Catalog+Views/default.aspx">Catalog Views</category><category domain="http://blogs.msdn.com/sqltips/archive/tags/Announcements/default.aspx">Announcements</category></item><item><title>Use of INFORMATION_SCHEMA views to access temp tables.</title><link>http://blogs.msdn.com/sqltips/archive/2005/10/07/478462.aspx</link><pubDate>Sat, 08 Oct 2005 05:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:478462</guid><dc:creator>SQL Server Engine Team</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sqltips/comments/478462.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sqltips/commentrss.aspx?PostID=478462</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sqltips/rsscomments.aspx?PostID=478462</wfw:comment><description>&lt;P&gt;An MVP recently sent us an email asking how to use the INFORMATION_SCHEMA views to access temp tables.&amp;nbsp; This MVP thought the session ID (spid) was needed to construct the suffix.&amp;nbsp; Here was our response:&lt;/P&gt;
&lt;P&gt;=========================&lt;/P&gt;
&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;The algorithm for generating the temp table name suffix changed between Shiloh in Yukon.&amp;nbsp; In any case, it is not based upon the session id.&lt;/P&gt;
&lt;P&gt;I suggest you give your temp table unique prefixes and do this:&lt;/P&gt;
&lt;P&gt;&lt;FONT style="BACKGROUND-COLOR: #d3d3d3" face="Courier New" size=2&gt;use tempdb&lt;BR&gt;go&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT style="BACKGROUND-COLOR: #d3d3d3" face="Courier New" size=2&gt;select * &lt;BR&gt;from&amp;nbsp;&amp;nbsp; INFORMATION_SCHEMA.TABLES&lt;BR&gt;where&amp;nbsp; TABLE_CATALOG = 'tempdb'&lt;BR&gt;and&amp;nbsp;&amp;nbsp;&amp;nbsp; TABLE_SCHEMA&amp;nbsp; = USER&lt;BR&gt;and&amp;nbsp;&amp;nbsp;&amp;nbsp; TABLE_NAME like '#DIRECTORY%'&lt;BR&gt;go&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Note that TABLE_SCHEMA = USER only works in Shiloh.&amp;nbsp;&amp;nbsp; Reason - because of the user/schema separation feature. In Yukon, the TABLE_SCHEMA is really that ... the table's schema name... which might not be the same as the user name.&amp;nbsp; We have real schemas now.&amp;nbsp; User X can own schemas Y and Z.&amp;nbsp; All schema names occupy the same namespace regardless of owner, however.&lt;/P&gt;
&lt;P&gt;Another difference between Shiloh and Yukon is this:&amp;nbsp; You cannot use 3-part names to refer to tempdb from another database context unless you are sa.&amp;nbsp; You must "use" tempdb and stick to a 2-part name, as shown in the example above. This works in Yukon, however, for non-sa users.&lt;/P&gt;
&lt;P&gt;In Summary&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;For Shiloh&lt;/STRONG&gt; 
&lt;UL&gt;
&lt;LI&gt;TABLE_SCHEMA = &amp;nbsp;user name&amp;nbsp; 
&lt;LI&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;This won’t work from non-tempdb calling context unless you’re sa/dbo.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;You get an empty set back.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face="Courier New" size=2&gt;use otherdb&lt;BR&gt;go&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face="Courier New" size=2&gt;select * from&amp;nbsp;&amp;nbsp; tempdb.INFORMATION_SCHEMA.TABLES &lt;BR&gt;go&lt;/FONT&gt;&lt;BR&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;The temp table&amp;nbsp;name is f&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;ormed from login time stamp + nest level.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;FONT size=1&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;For Yukon&lt;/STRONG&gt; &lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;TABLE_SCHEMA =&amp;nbsp;&amp;nbsp;schema name&amp;nbsp; 
&lt;LI&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;This will work from non-tempdb calling context even if you are a least-privileged user. You get the rows back.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face="Courier New" size=2&gt;use otherdb&lt;BR&gt;go&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face="Courier New" size=2&gt;select * from&amp;nbsp;&amp;nbsp; tempdb.INFORMATION_SCHEMA.TABLES &lt;BR&gt;go&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Formed from an internal counter.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P&gt;If you want to write code that works both on Shiloh and Yukon for non-sa users, then:&lt;/P&gt;
&lt;P&gt;a)&amp;nbsp;You must "use tempdb"&lt;BR&gt;b)&amp;nbsp;You must use 2-part name: SELECT * FROM INFORMATION_SCHEMA.TABLES&lt;BR&gt;c)&amp;nbsp;You must assume that for Yukon customers, the schema name == user name.&amp;nbsp; This will be the case for all upgraded databases.&amp;nbsp; This will also hold true as long as your customers avoid user/schema separation features.&amp;nbsp; This will hold true for the old “sp_adduser” API.&amp;nbsp; &lt;BR&gt;d)&amp;nbsp;You can enforce (c) this by using DDL triggers in Yukon and doing ROLLBACKs on CREATE SCHEMA and CREATE USER statements.&lt;/P&gt;
&lt;P&gt;Clifford&amp;nbsp; Dibble&lt;BR&gt;Program Manager, SQL Server Engine&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=478462" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sqltips/archive/tags/Catalog+Views/default.aspx">Catalog Views</category></item><item><title>Determine primary keys and unique keys for all tables in a database...</title><link>http://blogs.msdn.com/sqltips/archive/2005/09/16/469136.aspx</link><pubDate>Fri, 16 Sep 2005 21:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:469136</guid><dc:creator>SQL Server Engine Team</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/sqltips/comments/469136.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sqltips/commentrss.aspx?PostID=469136</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sqltips/rsscomments.aspx?PostID=469136</wfw:comment><description>&lt;DIV&gt;With SQL Server 2005, there are new ways to obtain richer metadata in a database and more efficiently. We have introduced&amp;nbsp;new catalog views that exposes all the metadata that SQL Server uses and can be created by various DDL statements. The older ANSI SQL style INFORMATION_SCHEMA views are also still available if you want to write portable queries. I already posted a tip about finding dependencies &lt;a href="http://blogs.msdn.com/sqltips/archive/2005/07/05/435882.aspx"&gt;http://blogs.msdn.com/sqltips/archive/2005/07/05/435882.aspx&lt;/A&gt;&amp;nbsp;between various objects using the new catalog views. Here are two queries that show you how to retrieve primary/unique key details for all tables in a database:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#800080&gt;-- ANSI SQL compatible and works from SQL70 onwards:&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#800080&gt;&lt;FONT face="Courier New"&gt;select kcu.TABLE_SCHEMA, kcu.TABLE_NAME, kcu.CONSTRAINT_NAME, tc.CONSTRAINT_TYPE, kcu.COLUMN_NAME, kcu.ORDINAL_POSITION&lt;BR&gt;&amp;nbsp; from INFORMATION_SCHEMA.TABLE_CONSTRAINTS as tc&lt;BR&gt;&amp;nbsp; join INFORMATION_SCHEMA.KEY_COLUMN_USAGE as kcu&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; on kcu.CONSTRAINT_SCHEMA = tc.CONSTRAINT_SCHEMA&lt;BR&gt;&amp;nbsp;&amp;nbsp; and kcu.CONSTRAINT_NAME = tc.CONSTRAINT_NAME&lt;BR&gt;&amp;nbsp;&amp;nbsp; and kcu.TABLE_SCHEMA = tc.TABLE_SCHEMA&lt;BR&gt;&amp;nbsp;&amp;nbsp; and kcu.TABLE_NAME = tc.TABLE_NAME&lt;BR&gt;&amp;nbsp;where tc.CONSTRAINT_TYPE in ( 'PRIMARY KEY', 'UNIQUE' )&lt;BR&gt;&amp;nbsp;order by kcu.TABLE_SCHEMA, kcu.TABLE_NAME&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;, tc.CONSTRAINT_TYPE, kcu.CONSTRAINT_NAME, kcu.ORDINAL_POSITION;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" color=#800080&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" color=#800080&gt;-- SQL Server 2005 specific:&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" color=#800080&gt;select s.name as TABLE_SCHEMA, t.name as TABLE_NAME&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" color=#800080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , k.name as CONSTRAINT_NAME, k.type_desc as CONSTRAINT_TYPE&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , c.name as COLUMN_NAME, ic.key_ordinal AS ORDINAL_POSITION&lt;BR&gt;&amp;nbsp; from sys.key_constraints as k&lt;BR&gt;&amp;nbsp; join sys.tables as t&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; on t.object_id = k.parent_object_id&lt;BR&gt;&amp;nbsp; join sys.schemas as s&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; on s.schema_id = t.schema_id&lt;BR&gt;&amp;nbsp; join sys.index_columns as ic&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; on ic.object_id = t.object_id&lt;BR&gt;&amp;nbsp;&amp;nbsp; and ic.index_id = k.unique_index_id&lt;BR&gt;&amp;nbsp; join sys.columns as c&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; on c.object_id = t.object_id&lt;BR&gt;&amp;nbsp;&amp;nbsp; and c.column_id = ic.column_id&lt;BR&gt;&amp;nbsp;order by TABLE_SCHEMA, TABLE_NAME, CONSTRAINT_TYPE, CONSTRAINT_NAME, ORDINAL_POSITION;&lt;/FONT&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=469136" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sqltips/archive/tags/General/default.aspx">General</category><category domain="http://blogs.msdn.com/sqltips/archive/tags/Catalog+Views/default.aspx">Catalog Views</category></item><item><title>Direct dependencies on a column...</title><link>http://blogs.msdn.com/sqltips/archive/2005/07/05/435882.aspx</link><pubDate>Wed, 06 Jul 2005 04:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:435882</guid><dc:creator>SQL Server Engine Team</dc:creator><slash:comments>13</slash:comments><comments>http://blogs.msdn.com/sqltips/comments/435882.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sqltips/commentrss.aspx?PostID=435882</wfw:commentRss><wfw:comment>http://blogs.msdn.com/sqltips/rsscomments.aspx?PostID=435882</wfw:comment><description>&lt;DIV&gt;I came across a question recently about discovering the constraints that are dependent on a column like CHECK constraint, defaults and so on. In trying to solve that problem, I came across few interesting solutions that uses some new relational features&amp;nbsp;and the catalog views available in SQL Server 2005. I will share those here. There is a wealth of information exposed via the catalog views in SQL Server 2005 and be sure to check that out in the Books Online.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Let's now look at the problem. Given the schema objects below, I want to identity all the direct dependencies on the column "t.c".&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" color=#800080&gt;use tempdb;&lt;BR&gt;go&lt;BR&gt;create table t (&lt;BR&gt;&amp;nbsp;&amp;nbsp; c char(1) not null&lt;BR&gt;&amp;nbsp;&amp;nbsp; constraint df_t_c default( '' )&lt;BR&gt;&amp;nbsp;&amp;nbsp; constraint ck_t_c check( c &amp;gt; '' )&lt;BR&gt;&amp;nbsp;&amp;nbsp; constraint pk_t_c primary key&lt;BR&gt;&amp;nbsp;&amp;nbsp; constraint fk_t_c references t (c),&lt;BR&gt;&amp;nbsp;&amp;nbsp; c1 as c&lt;BR&gt;);&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" color=#800080&gt;create unique nonclustered index ix_t_c on t( c );&lt;BR&gt;go&lt;BR&gt;create view vt with schemabinding as select c from dbo.t;&lt;BR&gt;go&lt;BR&gt;&lt;/DIV&gt;&lt;/FONT&gt;
&lt;DIV&gt;The direct dependencies in this sample schema include the following: check constraint, default constraint, primary key, foreign key, computed column, index&amp;nbsp;and the view. Before jumping into the solution, there are legitimate cases where you&amp;nbsp;may want to get&amp;nbsp;such dependencies - for reporting or modifying schema elements.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Here is the&amp;nbsp;query to get only the dependent constraints for the column:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" color=#800080&gt;with constraint_depends&lt;BR&gt;as &lt;BR&gt;(&lt;BR&gt;select c.TABLE_SCHEMA, c.TABLE_NAME, c.COLUMN_NAME, c.CONSTRAINT_NAME&lt;BR&gt;&amp;nbsp; from INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE as c&lt;BR&gt;&amp;nbsp;union all&lt;BR&gt;select s.name, o.name, c.name, d.name&lt;BR&gt;&amp;nbsp; from sys.default_constraints as d&lt;BR&gt;&amp;nbsp; join sys.objects as o&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; on o.object_id = d.parent_object_id&lt;BR&gt;&amp;nbsp; join sys.columns as c&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; on c.object_id = o.object_id and c.column_id = d.parent_column_id&lt;BR&gt;&amp;nbsp; join sys.schemas as s&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; on s.schema_id = o.schema_id&lt;BR&gt;)&lt;BR&gt;select c.TABLE_SCHEMA, c.TABLE_NAME, c.COLUMN_NAME, c.CONSTRAINT_NAME&lt;BR&gt;&amp;nbsp; from constraint_depends as c&lt;BR&gt;&amp;nbsp;where c.TABLE_NAME = 't' and c.COLUMN_NAME = 'c';&lt;BR&gt;go&lt;BR&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" color=#008000&gt;/*&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" color=#008000&gt;TABLE_SCHEMA&amp;nbsp;&amp;nbsp;&amp;nbsp;TABLE_NAME&amp;nbsp;COLUMN_NAME&amp;nbsp;CONSTRAINT_NAME&lt;BR&gt;dbo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fk_t_c&lt;BR&gt;dbo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pk_t_c&lt;BR&gt;dbo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ck_t_c&lt;BR&gt;dbo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;df_t_c&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" color=#008000&gt;*/&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;This query uses the INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE view to get information about all constraints except defaults (since standard doesn't include default as constraint the view doesn't expose that).&amp;nbsp;And the defaults are obtained using the sys.default_constraints catalog view. The information in the query can be used to say drop the constraints before dropping the column from a script.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Now, the next query uses only the new catalog views to obtain all the required information.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;FONT face="Courier New" color=#800080&gt;with rel_objs (obj_name, type_name, type_desc, parent_object_id, parent_column_id)&lt;BR&gt;as&lt;BR&gt;(&lt;BR&gt;select d.name, d.type, d.type_desc, d.parent_object_id, d.parent_column_id&lt;BR&gt;&amp;nbsp; from sys.default_constraints as d -- defaults&lt;BR&gt;&amp;nbsp;union all&lt;BR&gt;select c.name, c.type, c.type_desc, c.parent_object_id, c.parent_column_id&lt;BR&gt;&amp;nbsp; from sys.check_constraints as c -- check constraints&lt;BR&gt;&amp;nbsp;union all&lt;BR&gt;select k.name, k.type, k.type_desc, k.parent_object_id, kc.column_id&lt;BR&gt;&amp;nbsp; from sys.key_constraints as k --&amp;nbsp;primary key and unique constraints&lt;BR&gt;&amp;nbsp; join sys.index_columns as kc&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; on kc.object_id = k.parent_object_id and kc.index_id = k.unique_index_id&lt;BR&gt;&amp;nbsp;union all&lt;BR&gt;select f.name, f.type, f.type_desc, f.parent_object_id, fc.parent_column_id&lt;BR&gt;&amp;nbsp; from sys.foreign_keys as f -- foreign key constraints&lt;BR&gt;&amp;nbsp; join sys.foreign_key_columns as fc&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; on fc.constraint_object_id = f.object_id and fc.parent_object_id = f.parent_object_id&lt;BR&gt;&amp;nbsp;union all&lt;BR&gt;select c.name, 'CC', 'COMPUTED_COLUMN', d.referenced_major_id, d.referenced_minor_id&lt;BR&gt;&amp;nbsp; from sys.sql_dependencies as d -- computed columns&lt;BR&gt;&amp;nbsp; join sys.columns as c&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; on c.object_id = d.object_id and c.column_id = d.column_id&lt;BR&gt;&amp;nbsp;where d.object_id = d.referenced_major_id and d.referenced_minor_id &amp;gt; 0 and d.column_id &amp;gt; 0&lt;BR&gt;&amp;nbsp;union all&lt;BR&gt;select o.name, o.type, o.type_desc, d.referenced_major_id, d.referenced_minor_id&lt;BR&gt;&amp;nbsp; from sys.sql_dependencies as d -- views&lt;BR&gt;&amp;nbsp; join sys.objects as o&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; on o.object_id = d.object_id&lt;BR&gt;&amp;nbsp;where d.object_id &amp;lt;&amp;gt; d.referenced_major_id and d.referenced_minor_id &amp;gt; 0 and o.type = 'V'&lt;BR&gt;&amp;nbsp;union all&lt;BR&gt;select i.name, 'IX', i.type_desc, i.object_id, ic.column_id&lt;BR&gt;&amp;nbsp; from sys.indexes as i -- indexes&lt;BR&gt;&amp;nbsp; join sys.index_columns as ic&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; on ic.index_id = i.index_id and ic.object_id = i.object_id&lt;BR&gt;&amp;nbsp;where i.is_primary_key = 0 and i.is_unique_constraint = 0&lt;BR&gt;),&lt;BR&gt;rel_objs_det (schema_name, table_name, column_name, rel_obj_name, rel_type_name, rel_type_desc)&lt;BR&gt;as (&lt;BR&gt;select s.name, o.name, c.name, r.obj_name, r.type_name, r.type_desc&lt;BR&gt;&amp;nbsp; from rel_objs as r --&amp;nbsp;names for the table/column to query for:&lt;BR&gt;&amp;nbsp; join sys.objects as o&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; on r.parent_object_id = o.object_id&lt;BR&gt;&amp;nbsp; join sys.columns as c&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; on c.object_id = o.object_id and c.column_id = r.parent_column_id&lt;BR&gt;&amp;nbsp; join sys.schemas as s&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; on s.schema_id = o.schema_id&lt;BR&gt;)&lt;BR&gt;select r.schema_name, r.table_name, r.column_name, r.rel_obj_name, r.rel_type_name, r.rel_type_desc&lt;BR&gt;&amp;nbsp; from rel_objs_det as r&lt;BR&gt;&amp;nbsp;where r.table_name = 't' and r.column_name = 'c'; /* MODIFY or REMOVE where clause if you want run this query for other tables. */&lt;BR&gt;go&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" color=#008000&gt;/*&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" color=#008000&gt;schema_name&amp;nbsp;&amp;nbsp;&amp;nbsp;table_name&amp;nbsp;&amp;nbsp;&amp;nbsp;column_name&amp;nbsp;&amp;nbsp;&amp;nbsp;rel_obj_name&amp;nbsp;&amp;nbsp;&amp;nbsp;rel_type_name&amp;nbsp;&amp;nbsp;&amp;nbsp;rel_type_desc&lt;BR&gt;dbo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; df_t_c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;D&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DEFAULT_CONSTRAINT&lt;BR&gt;dbo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ck_t_c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CHECK_CONSTRAINT&lt;BR&gt;dbo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pk_t_c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PRIMARY_KEY_CONSTRAINT&lt;BR&gt;dbo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fk_t_c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;F&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FOREIGN_KEY_CONSTRAINT&lt;BR&gt;dbo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;COMPUTED_COLUMN&lt;BR&gt;dbo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;V&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VIEW&lt;BR&gt;dbo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ix_t_c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NONCLUSTERED&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" color=#008000&gt;*/&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;This query highlights the use of several catalog views: default_constraints, check_constraints, key_constraints, foreign_keys, foreign_key_columns, sql_dependencies, indexes and index_columns. Note that some of the type values that are displayed in the query is not derived from the catalog views they are just constants I came up with for the display purpose. This solution also shows how to use a Common-Table Expression (CTE) to simplify complex queries. This query can be put in a view and used.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Lastly, the solution is by no means complete. There are other objects that can depend on the column like full-text indexes, table-valued functions, chain of dependencies if the view on the column is referenced by another for example&amp;nbsp;and so on. I will leave those as exercise for users to try and implement.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;--&lt;/DIV&gt;
&lt;DIV&gt;Umachandar Jayachandran&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=435882" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sqltips/archive/tags/SQL+Server+2005/default.aspx">SQL Server 2005</category><category domain="http://blogs.msdn.com/sqltips/archive/tags/Catalog+Views/default.aspx">Catalog Views</category></item></channel></rss>