Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Скриптование объектов программными средствами MS SQL 2005, 2008 R2  [new]
stas-alex
Member

Откуда:
Сообщений: 41
Коллеги, добрый день!
Расскажу предисторию вопроса:
Установили базу (с пустыми данными) с неправильным Collation (он наследовался с сервера). Просто в инсталляторе софта при установке не было пункта, где бы можно было указывать иной Collation. Пока софт правят, а время идет - пробую поменять Collation.
Сейчас я на стадии изменения Collation у полей таблиц (их 2600 штук таких текстовых полей), но 190 из них участвуют в индексах таблиц и собственно кто знает тему понимает, что мне нужно эти 190 индексов удалить, затем поменять Collation и индекся опять создать, так вот id этих индексов я найду, а можно ли как-то их заскриптовать, чтобы после удаления и смены Collation легко их обратно влить? Если всё получится выложу на форум это полезное упражнение по смене Collation без пересоздания базы:-)
3 окт 13, 10:29    [14916540]     Ответить | Цитировать Сообщить модератору
 Re: Скриптование объектов программными средствами MS SQL 2005, 2008 R2  [new]
Glory
Member

Откуда:
Сообщений: 104751
Выбираете в студии пункт скриптования всех объектов
Записывает скрипт в файл
В любом редакторе делаете замену Collation или убеораете их вообще
Создаете новую базу с нужным Collation
Применяете для нее скрипт
3 окт 13, 10:32    [14916566]     Ответить | Цитировать Сообщить модератору
 Re: Скриптование объектов программными средствами MS SQL 2005, 2008 R2  [new]
stas-alex
Member

Откуда:
Сообщений: 41
Glory,
хорошее предложение - попробую. А все таки, не знаете случайно, именно программно (выборочно) заскриптовать объекты нельзя? Например какую-нибудь процедуру написать?
3 окт 13, 10:34    [14916586]     Ответить | Цитировать Сообщить модератору
 Re: Скриптование объектов программными средствами MS SQL 2005, 2008 R2  [new]
Glory
Member

Откуда:
Сообщений: 104751
stas-alex
А все таки, не знаете случайно, именно программно (выборочно) заскриптовать объекты нельзя

Так программно или выборочно ?
3 окт 13, 10:36    [14916598]     Ответить | Цитировать Сообщить модератору
 Re: Скриптование объектов программными средствами MS SQL 2005, 2008 R2  [new]
stas-alex
Member

Откуда:
Сообщений: 41
Glory, выборочно:-) То есть типа в процедуре указывать id объекта и говорю --> "Заскриптуй" :-)
3 окт 13, 10:37    [14916614]     Ответить | Цитировать Сообщить модератору
 Re: Скриптование объектов программными средствами MS SQL 2005, 2008 R2  [new]
Glory
Member

Откуда:
Сообщений: 104751
stas-alex
Glory, выборочно:-) То есть типа в процедуре указывать

Ну так если у вас _есть_ процедура, то и передавайте ей " id объекта"
3 окт 13, 10:40    [14916635]     Ответить | Цитировать Сообщить модератору
 Re: Скриптование объектов программными средствами MS SQL 2005, 2008 R2  [new]
--------------------------------
Guest
Лучше, пока не поздно, рассмотри вопрос удаления сервера и установки его с нужным коллейшен.
Иначе - намучаешся.
3 окт 13, 10:42    [14916657]     Ответить | Цитировать Сообщить модератору
 Re: Скриптование объектов программными средствами MS SQL 2005, 2008 R2  [new]
stas-alex
Member

Откуда:
Сообщений: 41
Glory, у меня нет процедуры готовой, я просто в процедуре определил количество и id таких объектов, а как сделать так, чтобы заскриптовать объект из процедуры не знаю:-(
3 окт 13, 10:49    [14916694]     Ответить | Цитировать Сообщить модератору
 Re: Скриптование объектов программными средствами MS SQL 2005, 2008 R2  [new]
Гость333
Member

Откуда:
Сообщений: 3683
stas-alex,

Если по какой-либо причине вас не устраивает функционал скриптования SSMS (где можно выбрать разнообразные опции и необходимые объекты), то можете попробовать создать программу для .NET, используя Класс Scripter. Правда, нужно понимать, что SSMS использует тот же Scripter, предоставляя к нему "интерфейс с человеческим лицом".
3 окт 13, 10:56    [14916757]     Ответить | Цитировать Сообщить модератору
 Re: Скриптование объектов программными средствами MS SQL 2005, 2008 R2  [new]
Glory
Member

Откуда:
Сообщений: 104751
stas-alex
у меня нет процедуры готовой,

У TSQL тоже нет такой процедуры.
Если вы хотите получать скрипты именно на TSQL, то придется создать такую процедуру
Торлько зачем она нужна для разовой задачи ?
3 окт 13, 10:57    [14916759]     Ответить | Цитировать Сообщить модератору
 Re: Скриптование объектов программными средствами MS SQL 2005, 2008 R2  [new]
stas-alex
Member

Откуда:
Сообщений: 41
Glory, спасибо, возможно после данной дискусии, я действительно подумаю о целесообразности для разовой задачи.
Коллеги, вопрос, из интерфейса студии я нигде не нашел, можно ли например отдельно заскриптовать индексы без выгрузки таблиц - это возможно ?
3 окт 13, 11:06    [14916824]     Ответить | Цитировать Сообщить модератору
 Re: Скриптование объектов программными средствами MS SQL 2005, 2008 R2  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
stas-alex
Glory, спасибо, возможно после данной дискусии, я действительно подумаю о целесообразности для разовой задачи.
Коллеги, вопрос, из интерфейса студии я нигде не нашел, можно ли например отдельно заскриптовать индексы без выгрузки таблиц - это возможно ?

Конечно.

Выбираете Base->Tables->Ваша_таблица->Indexes->Нужный_индекс-(правый клик)>Script Index AS->Create
3 окт 13, 11:10    [14916858]     Ответить | Цитировать Сообщить модератору
 Re: Скриптование объектов программными средствами MS SQL 2005, 2008 R2  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6202
Гость333
используя Класс Scripter

Зачем? В SMO все скриптуемые объекты реализуют интерфейс IScriptable - достаточно вызвать его метод Script [с нужными ScriptingOptions], и всё.
3 окт 13, 11:16    [14916903]     Ответить | Цитировать Сообщить модератору
 Re: Скриптование объектов программными средствами MS SQL 2005, 2008 R2  [new]
stas-alex
Member

Откуда:
Сообщений: 41
Сергей Викт., нет нет, так мне нужно все 190 таблиц выгружать отдельно. Я имел ввиду на базе можно выбрать Generate Scripts и там можно закриптовать все объекты базы, так вот вопрос - а отдельно выгрузить только индексы таблиц можно оттуда?
3 окт 13, 11:22    [14916961]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить