Привет, Хабр!
В данной публикации речь пойдет о группировке объектов в обозревателе SQL Server Management Studio.
Если Вы работаете с SSMS, прошу по кат!
Сразу хочу сказать что решения в коробке Microsoft SQL Server нет. Для получения данной функциональности нужно установить addin для SSMS.
Итак, зачем нам может понадобится группировать объекты SQL сервера?
Из моей практики причины таковы:
Заставить студию группировать объекты можно при помощи плагина. После установки плагина в контекстных меню папок Databases, Tables, Views, Procedures, Functions появляются дополнительные функции позволяющие группировать объекты.
Если необходимо чтобы сгруппированные объекты могли видеть и другие члены Вашей команды, то необходимо указать в настройках плагина использование общей сетевой папки (можно также указать папку DropBox или Google Drive, если Вы находитесь не в одной сети). Поскольку плагин сохраняет настройки группировки в виде XML файлов для каждого сервера, то можно с легкостью кому-то дать права на запись или только на чтение определенных файлов.
Спасибо за внимание!
В данной публикации речь пойдет о группировке объектов в обозревателе SQL Server Management Studio.
Если Вы работаете с SSMS, прошу по кат!
Сразу хочу сказать что решения в коробке Microsoft SQL Server нет. Для получения данной функциональности нужно установить addin для SSMS.
Итак, зачем нам может понадобится группировать объекты SQL сервера?
Из моей практики причины таковы:
- Скрыть ненужные объекты. Количество баз данных на наших серверах около сотни. Каждый раз, когда я раскрываю папку с базами данных, я вижу не нужный мне «хлам». Хотелось бы запихнуть не интересующие меня базы в отдельную папку, чтобы не мозолили глаза, и оставить только базы с которыми я работаю.
- Логическая группировка объектов. Иногда, когда я работаю с одним и тем же набором таблиц, мне хотелось бы их видеть все в одном месте. Таблицы находятся с разных схемах и префиксы у них разные. Так что приходится скролить (или фильтровать) ObjectExplorer чтобы найти нужную мне. Это очень неудобно.
- Группировка по схемам. Имея в базе 1000+ таблиц или процедур, я не хочу их сразу все видеть когда раскрываю соответствующую папку. При этом тратится не малое время на отображение. Помнится, как-то раз в одной базе данных было ~5000 процедур и при раскрытии узла StoredProcedures студия сообщила мне «Я не щмагла, воспользуйтесь окном Object Explorer Details»
Заставить студию группировать объекты можно при помощи плагина. После установки плагина в контекстных меню папок Databases, Tables, Views, Procedures, Functions появляются дополнительные функции позволяющие группировать объекты.
Если необходимо чтобы сгруппированные объекты могли видеть и другие члены Вашей команды, то необходимо указать в настройках плагина использование общей сетевой папки (можно также указать папку DropBox или Google Drive, если Вы находитесь не в одной сети). Поскольку плагин сохраняет настройки группировки в виде XML файлов для каждого сервера, то можно с легкостью кому-то дать права на запись или только на чтение определенных файлов.
Спасибо за внимание!
Комментарии (3)
AlanDenton
22.01.2016 12:58+1Как Вы создаете эти папки в Database Explorer? После добавления группировки с помощью папок, при попытке навигации в коде на объект у меня перестали работать все мои плагины SQL Complete и SQL Search:
Лично для меня это критично.
Возможно стоит добавить Drag&Drop в этот диалог, а то не сильно удобно с ним работать:
При поиске значения по таблицам 1`2 на AdventureWorks2012 получил ER:
========================= Error Information ========================= Message = Argument data type hierarchyid is invalid for argument 1 of like function. InnerException = Type = System.Data.SqlClient.SqlException Module = System.Data.dll TargetSite = Void OnError(System.Data.SqlClient.SqlException, Boolean, System.Action`1[System.Action]) StackTrace: at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() at System.Data.SqlClient.SqlDataReader.get_MetaData() at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds, Boolean describeParameterEncryptionRequest) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) at System.Data.SqlClient.SqlCommand.ExecuteReader() at SQLRefactorStudio.UserControls.FindDataControl.Search()
AlanDenton
22.01.2016 13:05Только что посмотрел на подпись издателя: Evgeny Vorobyev. Насколько я понимаю, что Вы автор данного плагина? :)
Желаю удачи Вам в развитии продукта.
t13s
С учетом того, что вы пиарите явно коммерческий продукт, то вам, как минимум, об этом нужно честно рассказать.
И получается, что вы блог слегка попутали.
В целом — фу таким быть.