<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dan Rigsby - Coding Up Style &#187; Database</title>
	<atom:link href="http://www.danrigsby.com/blog/index.php/category/database/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.danrigsby.com/blog</link>
	<description>Developer.Speaker.Blogger</description>
	<lastBuildDate>Tue, 17 Nov 2009 18:29:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>How to Drop All Database Objects Beginning with a Prefix</title>
		<link>http://www.danrigsby.com/blog/index.php/2008/01/08/how-to-drop-all-database-objects-beginning-with-a-name-prefix/</link>
		<comments>http://www.danrigsby.com/blog/index.php/2008/01/08/how-to-drop-all-database-objects-beginning-with-a-name-prefix/#comments</comments>
		<pubDate>Wed, 09 Jan 2008 02:06:51 +0000</pubDate>
		<dc:creator>Dan Rigsby</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[MSSQL]]></category>

		<guid isPermaLink="false">http://www.danrigsby.com/blog/?p=34</guid>
		<description><![CDATA[We prefix all of our database objects with a namespace scope.&#160; Objects begin with &#34;ININ_&#34; followed by an application prefix.&#160; So all database objects relating to to an application called &#34;ABC&#34; will begin with the prefix &#34;ININ_ABC_&#34;.&#160; This namespacing really helps out when multiple applications share the same database.
Advantages of this approach include:

Identifying what application [...]]]></description>
			<content:encoded><![CDATA[<p>We prefix all of our database objects with a namespace scope.&#160; Objects begin with &quot;ININ_&quot; followed by an application prefix.&#160; So all database objects relating to to an application called &quot;ABC&quot; will begin with the prefix &quot;ININ_ABC_&quot;.&#160; This namespacing really helps out when multiple applications share the same database.</p>
<p>Advantages of this approach include:</p>
<ol>
<li>Identifying what application an object belongs to </li>
<li>Finding all objects for an application in the sysobject tables </li>
</ol>
<p>But, this post isn&#8217;t about how to name database objects&#8230;</p>
<p>To test our database scripts, we normally drop a database and recreate through our build process. However, when multiple applications share the same database, we need to only drop the database objects relating to that application.&#160; </p>
<p>The stored procedure below takes in an application prefix and drops all database objects whose name starts with that prefix.&#160; This script will work for any prefix you might use to segregate your objects.&#160; </p>
<p><em>This was written for SQL Server 2005, but it could be easily modified to work with older versions.</em></p>
<div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"><span style="color: #0000ff">IF</span> <span style="color: #0000ff">EXISTS</span> (<span style="color: #0000ff">SELECT</span> * <span style="color: #0000ff">FROM</span> dbo.sysobjects <span style="color: #0000ff">WHERE</span> id = object_id(N<span style="color: #006080">'DropApplication'</span>) <span style="color: #0000ff">AND</span> OBJECTPROPERTY(id, N<span style="color: #006080">'IsProcedure'</span>) = 1)
    <span style="color: #0000ff">DROP</span> <span style="color: #0000ff">PROCEDURE</span> [dbo].[DropApplication]
<span style="color: #0000ff">GO</span>

<span style="color: #0000ff">CREATE</span> <span style="color: #0000ff">PROCEDURE</span> [dbo].[DropApplication]
(
    @ApplicationPrefix <span style="color: #0000ff">varchar</span>(64)
)
/************************************************************/
<span style="color: #008000">-- DropApplication</span>
<span style="color: #008000">-- </span>
<span style="color: #008000">-- Date Created: 8/19/2007</span>
<span style="color: #008000">-- Created By:     Dan Rigsby (www.danrigsby.com)</span>
<span style="color: #008000">-- </span>
<span style="color: #008000">-- Purpose:         Deletes all of the sysobjects in the database</span>
<span style="color: #008000">--                 for an application based on sysobject name prefix</span>
<span style="color: #008000">--</span>
<span style="color: #008000">-- Example:         To delete all sysobjects for an application called</span>
<span style="color: #008000">--                 ISupport whose object are prefixed with 'ININ_ABC' call: </span>
<span style="color: #008000">--                 EXEC DropApplication 'ININ_ABC'</span>
/************************************************************/

<span style="color: #0000ff">AS</span>
<span style="color: #0000ff">BEGIN</span>
    <span style="color: #0000ff">DECLARE</span> @<span style="color: #0000ff">Statement</span> <span style="color: #0000ff">AS</span> <span style="color: #0000ff">varchar</span>(4000)
    <span style="color: #0000ff">DECLARE</span> @ParentID <span style="color: #0000ff">AS</span> <span style="color: #0000ff">int</span>
    <span style="color: #0000ff">DECLARE</span> @ReferenceID <span style="color: #0000ff">AS</span> <span style="color: #0000ff">int</span>
    <span style="color: #0000ff">DECLARE</span> @ParentName <span style="color: #0000ff">AS</span> <span style="color: #0000ff">varchar</span>(256)
    <span style="color: #0000ff">DECLARE</span> @ObjectName <span style="color: #0000ff">AS</span> <span style="color: #0000ff">varchar</span>(256)
    <span style="color: #0000ff">DECLARE</span> @ObjectType <span style="color: #0000ff">AS</span> <span style="color: #0000ff">varchar</span>(5)

    <span style="color: #008000">-- Step 1: Delete procedures</span>
    <span style="color: #0000ff">DECLARE</span> cr1 <span style="color: #0000ff">CURSOR</span> <span style="color: #0000ff">FOR</span>
    (
        <span style="color: #0000ff">SELECT</span> [name]
        <span style="color: #0000ff">FROM</span> sysobjects
        <span style="color: #0000ff">WHERE</span> [name] <span style="color: #0000ff">LIKE</span> @ApplicationPrefix + <span style="color: #006080">'%'</span> <span style="color: #0000ff">AND</span> [type] <span style="color: #0000ff">in</span> (N<span style="color: #006080">'P'</span>, N<span style="color: #006080">'PC'</span>, N<span style="color: #006080">'X'</span>, N<span style="color: #006080">'RF'</span>)
    )

    <span style="color: #0000ff">OPEN</span> cr1
    <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">FROM</span> cr1 <span style="color: #0000ff">INTO</span> @ParentName
    <span style="color: #0000ff">WHILE</span> (@@fetch_status = 0)
    <span style="color: #0000ff">BEGIN</span>
        <span style="color: #0000ff">EXEC</span> (<span style="color: #006080">'DROP PROCEDURE '</span> + @ParentName)
        <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">NEXT</span> <span style="color: #0000ff">FROM</span> cr1 <span style="color: #0000ff">INTO</span> @ParentName
    <span style="color: #0000ff">END</span>
    <span style="color: #0000ff">CLOSE</span> cr1
    <span style="color: #0000ff">DEALLOCATE</span> cr1

    <span style="color: #008000">-- Step 2: Delete functions</span>
    <span style="color: #0000ff">DECLARE</span> cr1 <span style="color: #0000ff">CURSOR</span> <span style="color: #0000ff">FOR</span>
    (
        <span style="color: #0000ff">SELECT</span> [name]
        <span style="color: #0000ff">FROM</span> sysobjects
        <span style="color: #0000ff">WHERE</span> [name] <span style="color: #0000ff">LIKE</span> @ApplicationPrefix + <span style="color: #006080">'%'</span> <span style="color: #0000ff">AND</span> [type] <span style="color: #0000ff">in</span> (N<span style="color: #006080">'IF'</span>, N<span style="color: #006080">'FN'</span>, N<span style="color: #006080">'TF'</span>)
    )

    <span style="color: #0000ff">OPEN</span> cr1
    <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">FROM</span> cr1 <span style="color: #0000ff">INTO</span> @ParentName
    <span style="color: #0000ff">WHILE</span> (@@fetch_status = 0)
    <span style="color: #0000ff">BEGIN</span>
        <span style="color: #0000ff">EXEC</span> (<span style="color: #006080">'DROP FUNCTION '</span> + @ParentName)
        <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">NEXT</span> <span style="color: #0000ff">FROM</span> cr1 <span style="color: #0000ff">INTO</span> @ParentName
    <span style="color: #0000ff">END</span>
    <span style="color: #0000ff">CLOSE</span> cr1
    <span style="color: #0000ff">DEALLOCATE</span> cr1

    <span style="color: #008000">-- Step 3: Delete views</span>
    <span style="color: #0000ff">DECLARE</span> cr1 <span style="color: #0000ff">CURSOR</span> <span style="color: #0000ff">FOR</span>
    (
        <span style="color: #0000ff">SELECT</span> [name]
        <span style="color: #0000ff">FROM</span> sysobjects
        <span style="color: #0000ff">WHERE</span> [name] <span style="color: #0000ff">LIKE</span> @ApplicationPrefix + <span style="color: #006080">'%'</span> <span style="color: #0000ff">AND</span> [type] <span style="color: #0000ff">in</span> (N<span style="color: #006080">'V'</span>)
    )

    <span style="color: #0000ff">OPEN</span> cr1
    <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">FROM</span> cr1 <span style="color: #0000ff">INTO</span> @ParentName
    <span style="color: #0000ff">WHILE</span> (@@fetch_status = 0)
    <span style="color: #0000ff">BEGIN</span>
        <span style="color: #0000ff">EXEC</span> (<span style="color: #006080">'DROP VIEW '</span> + @ParentName)
        <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">NEXT</span> <span style="color: #0000ff">FROM</span> cr1 <span style="color: #0000ff">INTO</span> @ParentName
    <span style="color: #0000ff">END</span>
    <span style="color: #0000ff">CLOSE</span> cr1
    <span style="color: #0000ff">DEALLOCATE</span> cr1

    <span style="color: #008000">-- Step 4: Delete FKs</span>
    <span style="color: #0000ff">DECLARE</span> cr1 <span style="color: #0000ff">CURSOR</span> <span style="color: #0000ff">FOR</span>
    (
        <span style="color: #0000ff">SELECT</span> [id], [name]
        <span style="color: #0000ff">FROM</span> sysobjects
        <span style="color: #0000ff">WHERE</span> [name] <span style="color: #0000ff">LIKE</span> @ApplicationPrefix + <span style="color: #006080">'%'</span> <span style="color: #0000ff">AND</span> [type] <span style="color: #0000ff">in</span> (N<span style="color: #006080">'U'</span>)
    )

    <span style="color: #0000ff">OPEN</span> cr1
    <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">FROM</span> cr1 <span style="color: #0000ff">INTO</span> @ParentID, @ParentName
    <span style="color: #0000ff">WHILE</span> (@@fetch_status = 0)
    <span style="color: #0000ff">BEGIN</span>
        <span style="color: #0000ff">DECLARE</span> cr2 <span style="color: #0000ff">CURSOR</span> <span style="color: #0000ff">FOR</span>
        (
            <span style="color: #0000ff">SELECT</span> [name]
            <span style="color: #0000ff">FROM</span> sysobjects
            <span style="color: #0000ff">WHERE</span> [parent_obj] = @ParentID <span style="color: #0000ff">AND</span> [type] <span style="color: #0000ff">IN</span> (N<span style="color: #006080">'F'</span>)
        )

        <span style="color: #0000ff">OPEN</span> cr2
        <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">FROM</span> cr2 <span style="color: #0000ff">INTO</span> @ObjectName
        <span style="color: #0000ff">WHILE</span> (@@fetch_status = 0)
        <span style="color: #0000ff">BEGIN</span>
            <span style="color: #0000ff">EXEC</span> (<span style="color: #006080">' ALTER TABLE '</span> + @ParentName +
                <span style="color: #006080">' DROP CONSTRAINT '</span> + @ObjectName)

            <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">NEXT</span> <span style="color: #0000ff">FROM</span> cr2 <span style="color: #0000ff">INTO</span> @ObjectName
        <span style="color: #0000ff">END</span>
        <span style="color: #0000ff">CLOSE</span> cr2
        <span style="color: #0000ff">DEALLOCATE</span> cr2

        <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">NEXT</span> <span style="color: #0000ff">FROM</span> cr1 <span style="color: #0000ff">INTO</span> @ParentID, @ParentName
    <span style="color: #0000ff">END</span>
    <span style="color: #0000ff">CLOSE</span> cr1
    <span style="color: #0000ff">DEALLOCATE</span> cr1

    <span style="color: #008000">-- Step 5: Delete any FK constraints in other tables that reference our tables</span>
    <span style="color: #0000ff">DECLARE</span> cr1 <span style="color: #0000ff">CURSOR</span> <span style="color: #0000ff">FOR</span>
    (
        <span style="color: #0000ff">SELECT</span> [id]
        <span style="color: #0000ff">FROM</span> sysobjects
        <span style="color: #0000ff">WHERE</span> [name] <span style="color: #0000ff">LIKE</span> @ApplicationPrefix + <span style="color: #006080">'%'</span> <span style="color: #0000ff">AND</span> [type] <span style="color: #0000ff">in</span> (N<span style="color: #006080">'U'</span>)
    )

    <span style="color: #0000ff">OPEN</span> cr1
    <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">FROM</span> cr1 <span style="color: #0000ff">INTO</span> @ReferenceID
    <span style="color: #0000ff">WHILE</span> (@@fetch_status = 0)
    <span style="color: #0000ff">BEGIN</span>
        <span style="color: #0000ff">DECLARE</span> cr2 <span style="color: #0000ff">CURSOR</span> <span style="color: #0000ff">FOR</span>
        (
            <span style="color: #0000ff">SELECT</span> [name], [type], [parent_object_id]
            <span style="color: #0000ff">FROM</span> sys.foreign_keys
            <span style="color: #0000ff">WHERE</span> [referenced_object_id] = @ReferenceID
        )

        <span style="color: #0000ff">OPEN</span> cr2
        <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">FROM</span> cr2 <span style="color: #0000ff">INTO</span> @ObjectName, @ObjectType, @ParentID
        <span style="color: #0000ff">WHILE</span> (@@fetch_status = 0)
        <span style="color: #0000ff">BEGIN</span>
            <span style="color: #008000">-- Get parent name</span>
            <span style="color: #0000ff">SELECT</span> @ParentName = [name]
            <span style="color: #0000ff">FROM</span> sysobjects
            <span style="color: #0000ff">WHERE</span> [id] = @ParentID

            <span style="color: #0000ff">SELECT</span> @<span style="color: #0000ff">Statement</span> =
                <span style="color: #0000ff">CASE</span> (@ObjectType)
                    <span style="color: #0000ff">WHEN</span> <span style="color: #006080">'F'</span> <span style="color: #0000ff">THEN</span>
                        <span style="color: #006080">' ALTER TABLE '</span> + @ParentName +
                        <span style="color: #006080">' DROP CONSTRAINT '</span> + @ObjectName
                <span style="color: #0000ff">END</span>
            <span style="color: #0000ff">EXEC</span> (@<span style="color: #0000ff">Statement</span>)

            <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">NEXT</span> <span style="color: #0000ff">FROM</span> cr2 <span style="color: #0000ff">INTO</span> @ObjectName, @ObjectType, @ParentID
        <span style="color: #0000ff">END</span>
        <span style="color: #0000ff">CLOSE</span> cr2
        <span style="color: #0000ff">DEALLOCATE</span> cr2

        <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">NEXT</span> <span style="color: #0000ff">FROM</span> cr1 <span style="color: #0000ff">INTO</span> @ReferenceID
    <span style="color: #0000ff">END</span>
    <span style="color: #0000ff">CLOSE</span> cr1
    <span style="color: #0000ff">DEALLOCATE</span> cr1

    <span style="color: #008000">-- Step 6: Delete tables, triggers, FKs, and constraints</span>
    <span style="color: #0000ff">DECLARE</span> cr1 <span style="color: #0000ff">CURSOR</span> <span style="color: #0000ff">FOR</span>
    (
        <span style="color: #0000ff">SELECT</span> [id], [name]
        <span style="color: #0000ff">FROM</span> sysobjects
        <span style="color: #0000ff">WHERE</span> [name] <span style="color: #0000ff">LIKE</span> @ApplicationPrefix + <span style="color: #006080">'%'</span> <span style="color: #0000ff">AND</span> [type] <span style="color: #0000ff">in</span> (N<span style="color: #006080">'U'</span>)
    )

    <span style="color: #0000ff">OPEN</span> cr1
    <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">FROM</span> cr1 <span style="color: #0000ff">INTO</span> @ParentID, @ParentName
    <span style="color: #0000ff">WHILE</span> (@@fetch_status = 0)
    <span style="color: #0000ff">BEGIN</span>
        <span style="color: #0000ff">DECLARE</span> cr2 <span style="color: #0000ff">CURSOR</span> <span style="color: #0000ff">FOR</span>
        (
            <span style="color: #0000ff">SELECT</span> [name], [type]
            <span style="color: #0000ff">FROM</span> sysobjects
            <span style="color: #0000ff">WHERE</span> [parent_obj] = @ParentID
        )

        <span style="color: #0000ff">OPEN</span> cr2
        <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">FROM</span> cr2 <span style="color: #0000ff">INTO</span> @ObjectName, @ObjectType
        <span style="color: #0000ff">WHILE</span> (@@fetch_status = 0)
        <span style="color: #0000ff">BEGIN</span>
            <span style="color: #0000ff">SELECT</span> @<span style="color: #0000ff">Statement</span> =
                <span style="color: #0000ff">CASE</span> (@ObjectType)
                    <span style="color: #0000ff">WHEN</span> <span style="color: #006080">'TR'</span> <span style="color: #0000ff">THEN</span>
                        <span style="color: #006080">' DROP TRIGGER '</span> + @ObjectName
                    <span style="color: #0000ff">ELSE</span>
                        <span style="color: #006080">' ALTER TABLE '</span> + @ParentName +
                        <span style="color: #006080">' DROP CONSTRAINT '</span> + @ObjectName
                <span style="color: #0000ff">END</span>
            <span style="color: #0000ff">EXEC</span> (@<span style="color: #0000ff">Statement</span>)

            <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">NEXT</span> <span style="color: #0000ff">FROM</span> cr2 <span style="color: #0000ff">INTO</span> @ObjectName, @ObjectType
        <span style="color: #0000ff">END</span>
        <span style="color: #0000ff">CLOSE</span> cr2
        <span style="color: #0000ff">DEALLOCATE</span> cr2

        <span style="color: #0000ff">EXEC</span> (<span style="color: #006080">' DROP TABLE '</span> + @ParentName)

        <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">NEXT</span> <span style="color: #0000ff">FROM</span> cr1 <span style="color: #0000ff">INTO</span> @ParentID, @ParentName
    <span style="color: #0000ff">END</span>
    <span style="color: #0000ff">CLOSE</span> cr1
    <span style="color: #0000ff">DEALLOCATE</span> cr1

    <span style="color: #008000">-- Step 7: Drop users</span>
    <span style="color: #0000ff">DECLARE</span> cr1 <span style="color: #0000ff">CURSOR</span> <span style="color: #0000ff">FOR</span>
    (
        <span style="color: #0000ff">SELECT</span> [name]
        <span style="color: #0000ff">FROM</span> sys.database_principals
        <span style="color: #0000ff">WHERE</span> [name] <span style="color: #0000ff">LIKE</span> @ApplicationPrefix + <span style="color: #006080">'%'</span>
            <span style="color: #0000ff">AND</span> [type] <span style="color: #0000ff">IN</span> (N<span style="color: #006080">'S'</span>)
    )

    <span style="color: #0000ff">OPEN</span> cr1
    <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">FROM</span> cr1 <span style="color: #0000ff">INTO</span> @ObjectName
    <span style="color: #0000ff">WHILE</span> (@@fetch_status = 0)
    <span style="color: #0000ff">BEGIN</span>
        <span style="color: #0000ff">EXEC</span> (<span style="color: #006080">'DROP USER '</span> + @ObjectName)
        <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">NEXT</span> <span style="color: #0000ff">FROM</span> cr1 <span style="color: #0000ff">INTO</span> @ObjectName
    <span style="color: #0000ff">END</span>
    <span style="color: #0000ff">CLOSE</span> cr1
    <span style="color: #0000ff">DEALLOCATE</span> cr1

    <span style="color: #008000">-- Step 8: Drop roles</span>
    <span style="color: #0000ff">DECLARE</span> cr1 <span style="color: #0000ff">CURSOR</span> <span style="color: #0000ff">FOR</span>
    (
        <span style="color: #0000ff">SELECT</span> [principal_id], [name]
        <span style="color: #0000ff">FROM</span> sys.database_principals
        <span style="color: #0000ff">WHERE</span> [name] <span style="color: #0000ff">LIKE</span> @ApplicationPrefix + <span style="color: #006080">'%'</span>
            <span style="color: #0000ff">AND</span> [type] <span style="color: #0000ff">in</span> (N<span style="color: #006080">'R'</span>)
    )

    <span style="color: #0000ff">OPEN</span> cr1
    <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">FROM</span> cr1 <span style="color: #0000ff">INTO</span> @ParentID, @ParentName
    <span style="color: #0000ff">WHILE</span> (@@fetch_status = 0)
    <span style="color: #0000ff">BEGIN</span>
        <span style="color: #0000ff">DECLARE</span> cr2 <span style="color: #0000ff">CURSOR</span> <span style="color: #0000ff">FOR</span>
        (
            <span style="color: #0000ff">SELECT</span> [name]
            <span style="color: #0000ff">FROM</span> sys.database_role_members DRM
                <span style="color: #0000ff">INNER</span> <span style="color: #0000ff">JOIN</span> sys.database_principals DP
                    <span style="color: #0000ff">ON</span> DRM.[member_principal_id] = DP.[principal_id]
            <span style="color: #0000ff">WHERE</span> [role_principal_id] = @ParentID
        )

        <span style="color: #0000ff">OPEN</span> cr2
        <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">FROM</span> cr2 <span style="color: #0000ff">INTO</span> @ObjectName
        <span style="color: #0000ff">WHILE</span> (@@fetch_status = 0)
        <span style="color: #0000ff">BEGIN</span>
            <span style="color: #0000ff">EXEC</span>
            (<span style="color: #006080">'
                EXEC dbo.sp_droprolemember '</span><span style="color: #006080">''</span> + @ParentName + <span style="color: #006080">''</span><span style="color: #006080">', '</span><span style="color: #006080">''</span> + @ObjectName + <span style="color: #006080">''</span><span style="color: #006080">'
            '</span>)
            <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">NEXT</span> <span style="color: #0000ff">FROM</span> cr2 <span style="color: #0000ff">INTO</span> @ObjectName
        <span style="color: #0000ff">END</span>
        <span style="color: #0000ff">CLOSE</span> cr2
        <span style="color: #0000ff">DEALLOCATE</span> cr2

        <span style="color: #0000ff">EXEC</span> (<span style="color: #006080">'DROP ROLE '</span> + @ParentName)

        <span style="color: #0000ff">FETCH</span> <span style="color: #0000ff">NEXT</span> <span style="color: #0000ff">FROM</span> cr1 <span style="color: #0000ff">INTO</span> @ParentID, @ParentName
    <span style="color: #0000ff">END</span>
    <span style="color: #0000ff">CLOSE</span> cr1
    <span style="color: #0000ff">DEALLOCATE</span> cr1
<span style="color: #0000ff">END</span>
<span style="color: #0000ff">GO</span></pre>
</div>
<p>Database objects are dropped in the following order:</p>
<ol>
<li>Procedures </li>
<li>Functions </li>
<li>Views </li>
<li>Foreign Keys </li>
<li>Foreign Key constraints in other tables </li>
<li>Triggers and Constraints </li>
<li>Tables </li>
<li>Users </li>
<li>Roles </li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.danrigsby.com/blog/index.php/2008/01/08/how-to-drop-all-database-objects-beginning-with-a-name-prefix/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ConnectionString Tip of the Day</title>
		<link>http://www.danrigsby.com/blog/index.php/2007/12/21/connectionstring-tip-of-the-day/</link>
		<comments>http://www.danrigsby.com/blog/index.php/2007/12/21/connectionstring-tip-of-the-day/#comments</comments>
		<pubDate>Fri, 21 Dec 2007 14:47:34 +0000</pubDate>
		<dc:creator>Dan Rigsby</dc:creator>
				<category><![CDATA[Database]]></category>

		<guid isPermaLink="false">http://www.danrigsby.com/blog/?p=31</guid>
		<description><![CDATA[When creating a connection string it can be hard to remember all of the parameters to use.&#160; You could use a resource like http://www.connectionstrings.com/, but even then its hard to simply test if it will work or not.&#160; What if you have all of the connection information, but have forgotten the database name?
An easy way [...]]]></description>
			<content:encoded><![CDATA[<p>When creating a connection string it can be hard to remember all of the parameters to use.&#160; You could use a resource like <a title="http://www.connectionstrings.com/" href="http://www.connectionstrings.com/">http://www.connectionstrings.com/</a>, but even then its hard to simply test if it will work or not.&#160; What if you have all of the connection information, but have forgotten the database name?</p>
<p>An easy way to solve all of this is to use a Microsoft Data Link file.&#160; This is a file with the .udl extension.&#160; You can create a file on your desktop or in a folder and just give it a name like &quot;a.udl&quot;.&#160; (The file itself doesn&#8217;t need to contain anything to be opened up in the data link properties window.)&#160; Then, just double click on the file and will open up in the data link properties window like this:</p>
<p><a href="http://www.danrigsby.com/blog/wp-content/uploads/2007/12/image.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="390" alt="image" src="http://www.danrigsby.com/blog/wp-content/uploads/2007/12/image-thumb.png" width="321" border="0" /></a></p>
<p>You can now fill in the data you know and test connection at any time.&#160; When you are done, just open up the .udl file in a text editor like notepad and it will contain the actual connection string.</p>
<p><a href="http://www.danrigsby.com/blog/wp-content/uploads/2007/12/image1.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="103" alt="image" src="http://www.danrigsby.com/blog/wp-content/uploads/2007/12/image-thumb1.png" width="349" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danrigsby.com/blog/index.php/2007/12/21/connectionstring-tip-of-the-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

