• Here's a slightly better way to go than that horrific Cursor thing:

    First create a scalar UDF like this:

    /*

    Returns a formatted string of all of the column names for the specified

    Table or View, in order (probably).

    */

    CREATE FUNCTION [dbo].[ColumnString]

    (

    @TableName As SYSNAME,

    @Before As NVarchar(MAX) = N'',

    @Between As NVarchar(MAX) = N', ',

    @After As NVarchar(MAX) = N''

    )

    RETURNS NVarchar(MAX) AS

    BEGIN

    DECLARE @STR As NVarchar(MAX);

    SELECT TOP 999

    @STR = COALESCE(@str + @Between + @Before + COLUMN_NAME, @Before + COLUMN_NAME) + @After

    FROM INFORMATION_SCHEMA.COLUMNS

    WHERE TABLE_SCHEMA= COALESCE(PARSENAME(@TableName, 2), N'dbo')

    And TABLE_NAME = PARSENAME(@TableName, 1)

    ORDER BY ORDINAL_POSITION

    RETURN @STR;

    END

    Then create a stored procedure like this:

    CREATE PROC dbo.WrapAllTables AS

    DECLARE @sql As NVarchar(MAX);

    SET @sql = N'';

    SELECT @sql = @sql + '

    IF EXISTS (SELECT * FROM sys.views

    WHERE object_id = OBJECT_ID('''+TABLE_SCHEMA+'.vw_'+TABLE_NAME+'''))

    DROP VIEW ['+TABLE_SCHEMA+']vw_.['+TABLE_NAME+'];

    EXEC(''

    CREATE VIEW ' + TABLE_SCHEMA + '.vw_' + TABLE_NAME + ' AS

    SELECT '

    + dbo.ColumnString(TABLE_SCHEMA+'.'+TABLE_NAME, '

    [', ',', ']')

    +'

    FROM '+ TABLE_SCHEMA +'.'+ TABLE_NAME + '

    WITH SCHEMABINDING

    '')

    '

    FROM INFORMATION_SCHEMA.TABLES

    WHERE TABLE_TYPE = 'BASE TABLE'

    print 'EXECuting:'

    print @sql

    EXEC (@sql);

    Execute this stored procedure to create all of your table wrapper views. If any of the table definitions change, then just re-execute this stored procedure. (I just run a SQL Agent Job that automatically re-executes these once a night).

    [font="Times New Roman"]-- RBarryYoung[/font], [font="Times New Roman"] (302)375-0451[/font] blog: MovingSQL.com, Twitter: @RBarryYoung[font="Arial Black"]
    Proactive Performance Solutions, Inc.
    [/font]
    [font="Verdana"] "Performance is our middle name."[/font]