Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выгрузка структуры БД без данных или бэкап только структуры  [new]
Mairos
Member

Откуда:
Сообщений: 555
Всем доброго времени суток!
Есть необходимость.. собственно сабж.
Как это делать средсвами SSMS в интерактивном режиме я знаю, но эта хитрая софтина позволяет получить только сам скрипт структуры, а я бы хотел получить тот скрипт(исполнительный), который формирует скрипт итоговый(со структурой). Может кто в курсе как ЭТО получить?
Заранее благодарен! ))
27 июл 15, 13:05    [17938769]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Mairos
тот скрипт(исполнительный),

профайлер вам в руки
27 июл 15, 13:07    [17938778]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
Glory
Member

Откуда:
Сообщений: 104751
Mairos
Может кто в курсе как ЭТО получить?

Найти другую "хитрую софтину".
Или написать самому.
27 июл 15, 13:07    [17938780]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
Mairos,

что такое "структура БД"?
27 июл 15, 13:07    [17938781]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Владислав Колосов
Mairos,

что такое "структура БД"?

то,что нормальные люди хранят в какой либо системе хранения версий кода.
27 июл 15, 13:12    [17938808]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
Mairos
Member

Откуда:
Сообщений: 555
Glory, я не сомневаюсь в вашей компетенции. Она вами тут не раз подтверждена. Но смысла в вашем ответе - ноль. Зачем так отвечать-то? Не тратили бы время. )))
- Каков рецепт этого блюда?
- Берёте нужные продукты и готовите это блюдо.
27 июл 15, 13:33    [17938967]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
Glory
Member

Откуда:
Сообщений: 104751
Mairos
Но смысла в вашем ответе - ноль. Зачем так отвечать-то? Не тратили бы время

Вы же тратите чужое время вместо простого запроса в Гугле

Mairos
- Каков рецепт этого блюда?
- Берёте нужные продукты и готовите это блюдо.

Нет.
Вы спросили - можно ли из картошки приготовить говяжий стейк ?
27 июл 15, 13:36    [17938992]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
Mairos
Member

Откуда:
Сообщений: 555
Glory, нет. Я спросил, если упрощённо - "есть ли у кого скрипт позволяющий получить структуру БД без данных". Спросил, потому что мне ЭТО надо как можно быстрее. В поисковиках я тоже искать догадался, как вы понимаете. Ох, любите вы на вполне конкретные вопросы давать обобщённые ответы. ))
27 июл 15, 13:42    [17939063]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Mairos,

да только на етом форуме есть 200 ссылок на 200 вариантов саморписных скриптов....
вбиватет в посик "Стукрутра бд программно" и выбераетие что хотите , если не можете написать самостоятельно
27 июл 15, 13:44    [17939099]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
Glory
Member

Откуда:
Сообщений: 104751
Mairos
Спросил, потому что мне ЭТО надо как можно быстрее.

Разумеется. У вас нет времени на поиск, но куча времени на комментарии

Mairos
В поисковиках я тоже искать догадался, как вы понимаете.

Догадаться и искать - это разные действия.

Mairos
Ох, любите вы на вполне конкретные вопросы давать обобщённые ответы. ))

Может еще за пивком сгонять ? А то вы ведь заняты чем то особо важным. Не то, что другие бездельники.

Сообщение было отредактировано: 27 июл 15, 13:45
27 июл 15, 13:45    [17939111]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
Mairos
Как это делать средсвами SSMS в интерактивном режиме я знаю, но эта хитрая софтина позволяет получить только сам скрипт структуры, а я бы хотел получить тот скрипт(исполнительный), который формирует скрипт итоговый(со структурой). Может кто в курсе как ЭТО получить?
Этот "скрипт" в SSMS - код, программа, написанная на каком то ЯП, видимо, C#. Получить его, естественно, нельзя.

Нужно просто найти что то похожее в инете; разумеется, никто за вас это искать не будет, как бы это не было просто - человек будет слишком глупо выглядить после такого, сами понимаете.
"Под рукой" тоже таких прог ни у кого быть не может, потому что это всё таки не маленький скриптик, а достаточно серьёзная программа.
27 июл 15, 21:15    [17941989]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
КВВ
Guest
Скрипт структуры базы легко делается при помощи PowerShell, например. Я не большой специалист в этой области, но если вам интересно, об этом есть в этой книге SQL Server 2012 with PowerShell V3 Cookbook by Santos Donabel, p. 149.
28 июл 15, 13:40    [17944943]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1197
КВВ
Скрипт структуры базы легко делается при помощи PowerShell, например. Я не большой специалист в этой области, но если вам интересно, об этом есть в этой книге SQL Server 2012 with PowerShell V3 Cookbook by Santos Donabel, p. 149.


Согласен. Я это делаю через Powershell. Есть некоторые глюки, например при скрипте FK, если таблица принадлежит не dbo схеме, то эту схему таблицы не получается скриптовать, несмотря на установку нужной опции:
https://connect.microsoft.com/SQLServer/feedback/details/788354/schemaqualifyforeignkeysreferences-does-not-work-for-sql-server-2008r2

Есть еще парочка, но в большинстве случаев удается получить достаточно аккуратную копию схемы базы.
29 июл 15, 03:59    [17948015]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
Mairos
Member

Откуда:
Сообщений: 555
Всем спасибо! Я таки сам стал писать скрипт выгрузки, практически всё что надо достаю. Есть один момент, который не раскопал.
При формировании скрипта на "Create Table" надо указывать в какой файловой группе она будет создаваться, например так

CREATE TABLE T1 (a int) ON PRIMARY


Мне критично вытащить правильное значение файловой группы (в исходной базе таблицы в разных группах сидят). Искал где привязка к "sys.filegroups" в "sys.objects", "sys.tables" - не обнаружил. Кто в курсе - подскажите пожалуйста!
31 июл 15, 11:50    [17959265]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
o-o
Guest
Mairos
Мне критично вытащить правильное значение файловой группы

select OBJECT_NAME(p.object_id) as obj_name, 
       fg.name
from sys.partitions p inner join sys.allocation_units au 
        on au.container_id = p.hobt_id 
     inner join sys.filegroups fg 
        on fg.data_space_id = au.data_space_id; 
31 июл 15, 12:00    [17959317]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
Mairos
Member

Откуда:
Сообщений: 555
o-o, большущее Вам спасибо! От души!
31 июл 15, 12:16    [17959411]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
Mairos
Member

Откуда:
Сообщений: 555
Вот вспомнил былое.. Задачу решил давно и для коллекции решил добавить. Единственно, columnstore индексы вытаскиваю отдельно t-sql скриптом. А остальное через powershell - овский скрипт.

-- Вот columnstore..

declare @SchemaName varchar(100)declare @TableName varchar(256)
declare @IndexName varchar(256)
declare @ColumnName varchar(100)
declare @FileGroupName varchar(100)
declare @is_disabled varchar(100)
declare @IndexOptions varchar(max)
declare @TSQLScripCreationIndex varchar(max)
declare @TSQLScripDisableIndex varchar(max)

declare CursorIndex cursor local static for
 select schema_name(t.schema_id) [schema_name], t.name, ix.name,
 'DROP_EXISTING = OFF, DATA_COMPRESSION = COLUMNSTORE_ARCHIVE' AS IndexOptions
 , ix.is_disabled , 
 case 
	when ix.data_space_id = 65604 then 'PScheme_StageByYear' 
	when ix.data_space_id = 65605 then 'PScheme_DatamartByYear'
	when ix.data_space_id = 65606 then 'PS_voyage_doc_date'
 end as FileGroupName
 from sys.tables t 
 inner join sys.indexes ix on t.object_id=ix.object_id
 where ix.type = 5 
 order by schema_name(t.schema_id), t.name, ix.name
 
open CursorIndex
fetch next from CursorIndex into  @SchemaName, @TableName, @IndexName,  @IndexOptions, @is_disabled, @FileGroupName

while (@@fetch_status=0)
begin
 declare @IndexColumns varchar(max)   
 
 set @IndexColumns=''
 
 declare CursorIndexColumn cursor local static for 
  select col.name
  from sys.tables tb 
  inner join sys.indexes ix on tb.object_id=ix.object_id
  inner join sys.index_columns ixc on ix.object_id=ixc.object_id and ix.index_id= ixc.index_id
  inner join sys.columns col on ixc.object_id =col.object_id  and ixc.column_id=col.column_id
  where ix.type=5 and ixc.partition_ordinal = 1
  and schema_name(tb.schema_id)=@SchemaName and tb.name=@TableName and ix.name=@IndexName
  order by ixc.index_column_id
 
 open CursorIndexColumn 
 fetch next from CursorIndexColumn into  @ColumnName
 
 while (@@fetch_status=0)
 begin  
	set @IndexColumns=@IndexColumns + @ColumnName  
	fetch next from CursorIndexColumn into @ColumnName
 end

 close CursorIndexColumn
 deallocate CursorIndexColumn

 if @IndexColumns <>'' set @IndexColumns = substring(@IndexColumns, 1, len(@IndexColumns)-1);

 set @TSQLScripCreationIndex ='';
 set @TSQLScripDisableIndex ='';
 set @TSQLScripCreationIndex= 'IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N''' + @SchemaName + '.' + @TableName + '''' + ') AND name = N''' + @IndexName + '''' + ')' + CHAR(13) + 
   case
	when @IndexColumns <>'' then 
		'CREATE CLUSTERED COLUMNSTORE INDEX ' 
	else 
		'CREATE COLUMNSTORE INDEX '
   end + 
   
   QUOTENAME(@IndexName)+' ON ' + QUOTENAME(@SchemaName) +'.'+ QUOTENAME(@TableName)+ CHAR(13)+'WITH (' + @IndexOptions+ 
   case
	when @IndexColumns <>'' then 
		') ON ' + QUOTENAME(@FileGroupName) + '('+@IndexColumns +');' 
	else 
		');'   
   end ;

 if @is_disabled=1 
  set  @TSQLScripDisableIndex=  CHAR(13) +'ALTER INDEX ' +QUOTENAME(@IndexName) + ' ON ' + QUOTENAME(@SchemaName) +'.'+ QUOTENAME(@TableName) + ' DISABLE;' + CHAR(13) ;

 -- вывод скрипта
 print @TSQLScripCreationIndex 
 if @TSQLScripCreationIndex <> '' print 'GO'
 print @TSQLScripDisableIndex
 if @TSQLScripDisableIndex <> '' print 'GO'

 fetch next from CursorIndex into  @SchemaName, @TableName, @IndexName,  @IndexOptions, @is_disabled, @FileGroupName

end
close CursorIndex
deallocate CursorIndex


К сообщению приложен файл (ScriptObjects_3.ps1 - 7Kb) cкачать
5 окт 15, 11:19    [18235239]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
Mairos
Member

Откуда:
Сообщений: 555
Этот кусочек связан с использованием не "primary" схемы
when ix.data_space_id = 65604 then 'PScheme_StageByYear' 
	when ix.data_space_id = 65605 then 'PScheme_DatamartByYear'
	when ix.data_space_id = 65606 then 'PS_voyage_doc_date'
5 окт 15, 11:21    [18235250]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
Alexander2
Member

Откуда: Calgary
Сообщений: 1167
Mairos,
Может я чего-то не понимаю, но для подобной задачи использую Right Click на названии базы, иду в Tasks -- Generate Scripts - Choose Objects....и выбираю имена таблиц,view,хранимок и функций.
6 окт 15, 19:53    [18243567]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
o-o
Guest
Alexander2
Mairos,
Может я чего-то не понимаю, но для подобной задачи использую Right Click на названии базы, иду в Tasks -- Generate Scripts - Choose Objects....и выбираю имена таблиц,view,хранимок и функций.

да вы просто не прочли первый пост
Mairos
Всем доброго времени суток!
Есть необходимость.. собственно сабж.
Как это делать средсвами SSMS в интерактивном режиме я знаю, но эта хитрая софтина позволяет получить только сам скрипт структуры, а я бы хотел получить тот скрипт(исполнительный), который формирует скрипт итоговый(со структурой). Может кто в курсе как ЭТО получить?
Заранее благодарен! ))
6 окт 15, 20:41    [18243739]     Ответить | Цитировать Сообщить модератору
 Re: Выгрузка структуры БД без данных или бэкап только структуры  [new]
Alexander2
Member

Откуда: Calgary
Сообщений: 1167
o-o,
сорри, каюсь, слона не заметил.
6 окт 15, 20:52    [18243764]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить