Там, где я работаю, есть несколько данных-словарей баз данных, созданных в файлах Excel следующего формата:

 Database|Instance  |Table    |Column   |Description  
 BD1     |dbo       |Table1   |Column1  |DescriptionA
 BD1     |dbo       |Table1   |Column2  |DescriptionB
 BD1     |dbo       |Table1   |Column3  |DescriptionC
 BD2     |dbo       |Table1   |Column1  |DescriptionD

Мне нужно обновить описание столбцов. Я знаю, что могу сделать это с помощью SSMS столбец за столбцом, но это большая работа. Насколько мне известно, я должен обновить следующую таблицу: sys.extended_properties

¿Есть ли инструмент или способ сделать такое массовое обновление?

1
Cristian Avendaño 29 Июн 2017 в 16:35

1 ответ

Лучший ответ

Импортируйте электронную таблицу в таблицу SQL Server. Напишите курсор для просмотра таблицы, добавляя каждое свойство, используя:

   Declare   @sql as nvarchar(max)
            , @Database as nvarchar(max)
            , @Instance as nvarchar(100)
            , @Table as nvarchar(100)
            , @Column as nvarchar(100)
            , @Description as nvarchar(100)

    Declare mycursor cursor for Select [Database], [Instance], [Table], [Column], [Description] from MyImportedTable
    open mycursor
    fetch next from mycursor into @Database, @Instance, @Table, @Column, @Description
    while @@FETCH_STATUS= 0
        begin
        set @sql = 'EXEC [' + @Database + '].[' @Schema + '].sp_addextendedproperty   
                    @name = N''Description'',   
                    @value = ''' + @Description + ''',  
                    @level0type = N''Schema'', @level0name = ' + @Instance + ',  
                    @level1type = N''Table'',  @level1name = ' + @Table + ',  
                    @level2type = N''Column'', @level2name = ' + @Column + ';'
        EXEC (@sql)
        fetch next from mycursor into @Database, @Instance, @Table, @Column, @Description
        END
    close mycursor
    deallocate mycursor
0
cloudsafe 29 Июн 2017 в 17:38