Паранойя в BIDS и SSMS
Cовершенно не понимаю людей, с маниакальным упорством норовящих всякий раз очистить историю посещенных страниц в IE или список открывавшихся документов в MS Office или и т.д. Давно миновали досовские времена, когда персональный компьютер использовался в отношении 1-ко-многим из расчета на всех работающих в отделе персон. Возможно, в некоторых учреждениях это практикуется до сей поры, причем все заходят под одним эккаунтом или входят в какую-нибудь административную группу, позволяющую смотреть профили друг друга, не знаю. Разбираемый сегодня вопрос из той же серии. Когда вы заходите в Business Intelligence Development Studio (BIDS) и говорите File -> Open Analysis Services Database, в диалоге высвечивается список многомерных баз, которые вы открывали отсюда ранее. Причем база может быть давно убита и сам сервер снесен, но Visual Studio продолжает заботливо хранить список предыдущих коннектов.
рис.1
Отдельные товарищи, впрочем, не в состоянии оценить проявленную о них заботу. Они говорят, вот, допустим, я встречаюсь с клиентами и показываю им решение нашей компании. Вчера я показывал его, например, Ё и из уважения к заказчику назвал демонстрационную базу тоже Ё, а сегодня мне предстоит ехать, скажем, в Ж. Заказчик Ж недолюбливает заказчика Ё, и тот отвечает взаимностью. Если в Ж увидят среди прошлых подключений вчерашнюю базу Ё, они едва ли они купят наше решение. Скорее, меня побьют. Шутка. Да мало ли какие могут быть причины? Как мне очистить этот чертов список?
Стыдно, товарищи. Вместо того, чтобы плакаться в жилетку, достаточно открыть реджистри и поискать по имени базу, чтобы найти ответ на свой вопрос. В реджистри можно найти ответы практически на все вопросы мироздания. Вот формализованная процедура действий.
1) Узнайте свой SID. Открывайте по очереди все длинные сиды в HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\ и смотрите ProfileImagePath в каждом, пока не наткнетесь на тот, который заканчивается на ваш User Name.
рис.2
2) Список прошлых подключений к Analysis Services хранится в HKEY_USERS\<SID>\Software\Microsoft\VisualStudio\9.0\Packages\{4a0c6509-bf90-43da-abee-0aba3a8527f1}\Settings\Analysis Services Project\OnlineProjectMRU. Очистите его, если хотите соблюсти конфиденциальность. Все.
рис.3
Там же на рисунке, кстати, и ProjectMRUList имеется. Это список Recent Projects в Visual Studio. На него также можно выйти через HKCU.
В качестве домашнего задания предлагается написать PowerShellьный скрипт, делающий то, что мы проговорили словами.
Аналогичный вопрос относится к SQL Server Management Studio (SSMS). При установлении соединения для нового окна запросов или сервера в Object Explorer открывается диалоговое окно с комбобоксом, в котором на сей раз перечисляются не базы, а имена серверов, с которыми ранее устанавливалось соединение. Но от этого не легче. Как можно его очистить?
рис.4
Выше говорилось, что в реджистри можно найти ответы практически на все вопросы мироздания. Это правильно. Ключевое слово здесь "практически". В данном случае поиск по реестру ничего не дает. Это значит, что SSMS хранит историю подключений не в реестре, а где-то в своих конфигурационных файлах. Осталось этот файл найти и уничтожить. Воспользуемся широко известной Руссиновичской тулой Process Monitor из sysinternals (http://technet.microsoft.com/ru-ru/sysinternals/bb896645(en-us).aspx).
рис.5
Мы уже предположили, что история, скорее всего, читается из файла. Соответственно, выставляем фильтр Operation = ReadFile. Если залогиниться под другим пользователем, список серверов будет другой, следовательно, искомый файл, скорее всего, находится в профиле текущего пользователя. Поэтому стоит поставить Path like 'C:\Users\%'. Ну и третий фильтр накладываем по текущему ID процессa Ssms.exe. Все. Открываем SSMS, повторяем Рис.4, получаем вот что:
рис.6
Логично предположить, что файл имеет отношение к SQL Server, т.е. находится в
C:\Users\Administrator\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell, чем в
C:\Users\Administrator\AppData\Roaming\Microsoft\CLR Security Config\... Остается два кандидата: RegSrvr.xml и SqlStudio.bin. Опытным путем определяем, что это SqlStudio.bin. Если его удалить, комбобокс на рис.4 очищается, а файл пересоздается.
Алексей Шуленин
Comments
- Anonymous
January 01, 2003
Уважаемый Даниил. Я тоже являюсь ревнителем чистоты русского языка. Помогите, пожалуйста, мне очистить свою речь от этих дурацких иностранных заимствований. Какими русизмами Вы бы предложили заменить следующие слова:
- файл
- принтер
- сервер
- диск
- компьютер
- электрон
- цифра
- машина ?
Anonymous
January 01, 2003
Да за ради бога, если от этого кому-то станет счастье. Только я, признаться, не увидел здесь особого предмета спора. Даже когда радетели за чистоту русского языка делали в нем ошибки уровня третьеклассника, я из деликатности молчал. Хотя "не красиво" в данном случае пишется слитно, а запятая перед "вместо" не нужна. Далее, Max написал "по теме - достаточно было разработчикам сделать опцию включенияотключения кэширования". Разве можно с этим спорить? Более того, такой комментарий годится вообще к любому посту, где обсуждается некоторая проблема Х и способы ее решения. Приходит Max и говорит: по теме - достаточно было, чтобы этой проблемы не было. Что тут возразишь? Чертовски верно подмечено. Главное, по существу.Anonymous
January 01, 2003
Да, реджистри - это жаргон, который я придумал по ходу так же, как и чекпойнт, бэкап, джоба и многое другое. Что с того? От того, что слова реджистри нет в словаре, а реестр есть, Вы меня не поняли? Поняли прекрасно, причем точнее, чем если бы я сказал реестр. Потому что реестр бывает морской, акционеров и т.д., а с реджистри в данном случае без вариантов. Мне кажется, не стоит предъявлять к блогу столь же строгие требования, как к печатным изданиям. Блог по формату ближе к повседневной речи, где можно поступиться формальными правилами во имя точности донесения смысла. Если бы я написал registry, Вас бы это тоже покоробило? Не хотелось отвлекаться на переключение.Anonymous
January 13, 2010
Ага, была бы еще вменяемая документация по "реджистри". И что за дурная привычка всегда пихать в текст англицизмы, вместо официальных терминов?Anonymous
January 14, 2010
Не надо понятия подменять в споре, это не красиво. Ваше "реджистри" имеет вполне вменяемый перевод - "реестр". А по теме - достаточно было подумать разработчикам о безопасности и сделать кнопку и опцию включенияотключения кэширования.Anonymous
January 15, 2010
:) в споре выиграл тот кто последним сказал, да? нет бы ответить просто "согласен" ...Anonymous
April 26, 2011
Предыдущие ораторы сказали все, что возможно по данной теме, - добавить нечего... Кроме того, что никто не догадался сказать СПАСИБО автору поста (да еще заставили его оправдываться). Меня тоже долго мучил этот параноидальный вопрос, пока вот тут я не прочел сразу все и даже больше. А теперь давайте дружно пожурим дядю Билла за то, что он нам написал этот Виндовс (опять пища борцам за ряды русского языка! кстати, у меня по нему 5 была в советское время) - иначе сидеть бы нам в нашем РТС-ДОСе до сих пор?!. Заодно скажем дяде тоже спасибо, что дал нам, убогим (читай: компьютерщикам): пищу (и не один хлеб), питье (неслабое, пивное) и кайф (порою с дымом) жить этой непростой жизнью книжного червя в шкуре испытателя, порой выковыривающего из бумажной трухи крохи знаний и радующегося, как ребенок, что он ЭТО нашел! Всем СПАСИБО.