среда, 4 мая 2011 г.

Изменение имени поля в TFS

После правки типового шаблона проекта иногда требуется изменить имена полей, которые уже созданы. Например, при создании поля была опечатка. Тогда, если вы попытаетесь загрузить конфигурационный файл рабочего элемента с исправленным именем поля на сервер, появиться примерно такая ошибка:

TF212018: Work item tracking schema validation error: TF26177: The field Company.Feedback.CompletedWork cannot be renamed from 'CompanyCompletedWork' to 'CompanyCompletedWork1'.

Также, если у вас был в одной коллекции проектов были развёрнуты проекты на основе русского и английского шаблонов, могут возникнуть проблемы с отчётами. Проблема в том, что имена полей (Name) должны быть одинаковыми для соответствующих идентификаторов полей (RefName). T.е. поле с идентификатором refname=System.Title должно иметь одно имя (name), например Title, во всех проектах коллекции. В английском и русском шаблонах проектов идентификаторы одни, а имена полей разные, что недопустимо для отчётов.

Чтобы привести поле к одному виду, нужно использовать команду witadmin changefield.

Пример использования команды:
>> witadmin changefield /collection:http://tfs:8080/tfs/CollectionTFS  /n:System.State /name:"Title"
Подробнее о команде - здесь.

Для просмотра атрибутов поля перед переименованием используйте команду witadmin listfields.

Пример использования команды:
>> witadmin listfields /collection:http://tfs:8080/tfs/CollectionTFS /n:System.State
Подробнее - здесь.

вторник, 3 мая 2011 г.

SharePoint 2010 Administration Toolkit v2.0

Вышла обновлённая версия SharePoint 2010 Administration Toolkit (v. 2.0).

В новую версию входит SharePoint Diagnostic Studio. Это удобный инструмент для мониторинга за сервером SharePoint.



Перед установкой на сервере SharePoint и клиентской машине (с которой вы будете вести мониторинг) в PowerShell нужно запустить команду:
>> Enable-PSRemoting

Файл установки - здесь.
Информация из MSDN - здесь.

пятница, 29 апреля 2011 г.

Утилита "BgInfo" выведет информацию о системе на рабочий стол.

Многие, наверное, видели в веб-кастах Microsoft на рабочем столе сгенерированную краткую информацию о системе. Это очень удобно, особенно когда у вас много серверов и вы работаете с ними через удалённый рабочий стол.


В этом вам поможет утилита BgInfo.

Правило отображения и выводимую информацию можно задавать самому.



Если возникают проблемы с сохранением настроек утилиты после перезагрузки, тогда используйте предложенный ниже сценарий.

1. Перенесите файл bginfo.exe в директорию Windows (обычно C:\Windows\)
В свойствах файла выберите вкладку "Безопасность". Нажмите "Добавить" и выберите "Authenticated Users". Добавьте пользователей этой группы и дайте им право "Полный доступ".

2. Запустите bginfo.exe.
Настройте параметры. Выберите меню "File" - "Save as". Сохраните файл как bginfo.bgi в директории Windows. Не закрывайте bginfo.exe.

3. Создайте в директории Windows папку bginfo и назначьте право "Полный доступ" для пользователей группы "Authenticated Users" (также, как делали это в пункте 1).
В bginfo.exe выберите меню "Bitmap" - "Location.." - "Other directory", введите туда %windir%\bginfo\bginfo.bmp, после этого нажмите кнопку "Ок" дважды.

4. Перейдите в папку "C:\Documents and Settings\All Users\Start Menu\Programs\Startup" (или C:\Users\All Users\Start Menu\Programs\Startup).
Создайте в ней ярлык, в поле "Укажите расположение объекта" введите %windir%\bginfo.exe /timer:0 /i%windir%\bginfo.bgi. Нажмите "Далее" и "Готово".


Ссылка на страницу утилиты BgInfo - здесь.
Полезная информация в другом блоге - здесь.


суббота, 2 апреля 2011 г.

Ошибка SharePoint "An unhandled exception ('System.Security.Cryptography.CryptographicException') occurred in OWSTIMER.EXE [nnnn]"

На одном из серверов в ферме SharePoint я заметил следующую ошибку:


Выводилась примерно каждые 20 секунд.

Проблема в том, что на этом сервере установлен Vusial Studio. Для решения конечно можно удалить Visual Studio с сервера SharePoint.

Есть  более простые решения.
Решение 1. Отключение отладки через Visual Studio.
  • В меню Tools (Сервис) выберите пункт Options (Параметры).
  • В окне Options (Параметры) выберите папку Debugging (Отладка).
  •  В папке Debugging (Отладка) выберите страницу Just-In-Time.
  •  В поле Enable Just-In-Time debugging for these types of code (Включить JIT–отладку для следующих типов кода) отмените выбор соответствующих типов : Managed, Native или Script.
  • Чтобы отключить JIT–отладку, если она была включена, необходимы права администратора. 
  • Нажмите кнопку ОК.
Решение 2. Правка реестра Windows.
  • Меню Пуск выберите команду выполнить .
  • В поле Открыть введите regedit, нажмите кнопку ОК .
  • В окне Редактора реестра найдите и удалите следующие разделы реестра:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger
  • Если компьютер работает под управлением 64-разрядной операционной системе, также удалите следующие разделы реестра:
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger
  • Закройте окно Редактора реестра .

четверг, 24 марта 2011 г.

Перенос списка/библиотеки с одного веб-сайта SharePoint на другой веб-сайт

Экспортировать список/библиотеку SharePoint с веб-сайта можно 2 способами, через PowerShell и через Центр администрирования SharePoint. Я покажу как это делается через Центр администрирования. Импортировать список/библиотеку на веб-сайт SharePoint можно только через PowerShell.

Экспорт
1. Зайти в Центр администрирования SharePoint, далее Резервное копирование и восстановление > Экспорт сайта или списка.
2. Выбрать семейство веб-сайтов, сайт и список, которые необходимо экспортировать и выбрать файл, куда нужно экспортировать.
В итоге, у вас должно быть всё настроено аналогично рисунку ниже.

3. Нажать "Начать экспорт".

Импорт
1. Запустить PowerShell SharePoint 2010 на сервере SharePoint.
2. Импорт списка/библиотеки выполняется командой Import-SPWeb (подробнее о команде).
В PowerShell выполните команду:
> Import-SPWeb -Identify [URL-адрес_сайта] - Path [путь_к_файлу_экспорта] [-Force] [-NoFileCompression]
Например:
> Import-SPWeb -Identify http://portal/library - Path \\backup\share\export.cmp 

После этого можете проверять, перенесен ли список/библиотека.

среда, 23 марта 2011 г.

Настройка RBS с провайдером FILESTREAM для SharePoint 2010

  1. Включить FILESTREAM на SQL-сервере, где находятся базы данных SharePoint 2010. Для этого:
    • Запустите Диспетчер конфигураций SQL Server (Пуск > Все программы > Microsoft SQL Server 2008 R2 > Средства настройки);
    • Выделите службу SQL Server, в контекстном меню этой службы выберите Свойства;
    • Выберите вкладку FILESTREAM;
    • Установите флажок Разрешить FILESTREAM при доступе через Transact-SQL. Другие галочки не имеют значения для дальнейшей нашей настройки и зависят от ваших пожеланий. Нажмите Применить. Важно! Windows share name должно быть таким же, какое имя экземпляра SQL (Instance name). По умолчанию оно – MSSQLSERVER.
    • Запустите среду SQL Server Management Studio и создайте запрос:
      EXEC sp_configure filestream_access_level, 2
      RECONFIGURE

    Подробнее о включении FILESTREAM на SQL-сервере здесь.
  2. Подготовка хранилища BLOB-объектов.
    Для этого нужно выполнить поочерёдно 3 SQL-запроса над базой данных контента SharePoint-приложения, в которой вы хотите использовать FILESTREAM.
    В запросах замените [WSS_Content] на имя вашей базы данных контента web-приложения.
    Также, в запросе №3 замените путь «C:\Blobstore» на свой, где будут хранится данные BLOB-данные с SharePoint (Важно: эта папка не должна существовать, SQL Server сам её создаст).
    • Запрос №1:
      USE [WSS_Content]
      IF NOT EXISTS (SELECT * FROM sys.symmetric_keys WHERE name = N'##MS_DatabaseMasterKey##')CREATE MASTER KEY ENCRYPTION BY PASSWORD = N'Admin Key Password !2#4'
    • Запрос №2:
      USE [WSS_Content]
      IF NOT EXISTS (SELECT groupname FROM sysfilegroups WHERE groupname=N'RBSFilestreamProvider')ALTER DATABASE [WSS_Content] ADD filegroup RBSFilestreamProvider CONTAINS FILESTREAM
    • Запрос №3:
      USE [WSS_Content]
      ALTER DATABASE [WSS_Content] ADD FILE (name = RBSFilestreamFile, FILENAME = 'c:\Blobstore') TO filegroup RBSFilestreamProvider

  3. Установка удалённого хранилища на Web-сервер.
    Для этого скачать RBS (Общая ссылка, RBS x86, RBS x64, RBS IA64).
    Скопировать его на веб-сервер SharePoint.
    На веб-сервере запустить командную строку от имени администратора и выполнить следующую команду:
    > msiexec /qn /lvx* rbs_install_log.txt /i RBS_X64.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="WSS_Content" DBINSTANCE="DBInstanceName" FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1 где, RBS_X64.msi – это соответственно имя установочного файла,
    “WSS_Content” – имя вашей базы данных контента веб-приложения,
    “DBInstanceName” – имя SQL-сервера.
  4. Добавить RBS на все дополнительные веб-сервера и на SQL-сервер.
    Для этого выполнить следующую команду от имени администратора:
    > msiexec /qn /lvx* rbs_install_log.txt /i RBS_X64.msi DBNAME="WSS_Content" DBINSTANCE="DBInstanceName" ADDLOCAL="Client,Docs,Maintainer,ServerScript,FilestreamClient,FilestreamServer"
  5. Убедиться, что RBS установился нормально.
    В базе данных контента должны появиться таблицы, начинающиеся на «mssqlrbs».
  6. Запустить PowerShell for SharePoint 2010 и выполнить поочерёдно команды:
    > $cdb = Get-SPContentDatabase –WebApplication http://имя_сайта
    > $rbss = $cdb.RemoteBlobStorageSettings
    > $rbss.Installed()
    > $rbss.Enable()
    > $rbss.SetActiveProviderName($rbss.GetProviderNames()[0])
    > $rbss
  7. Тестирование хранилища.
    Загрузите файл больше 100 кб в библиотеку документов на веб-сайт SharePoint. Размер папки файлов, которую мы указали в  шаге 2 (запрос №3) должен увеличится на размер закаченного в SharePoint файла.
    Дополнительная информация здесь.

    среда, 9 марта 2011 г.

    Выпущены пакеты обновления - VS 2010 SP 1 / TFS 2010 SP 1 / TFS Project Server Integration Feature Pack

    Для скачивания будут доступны с 10 марта 2011.


    Visual Studio 2010 Service Pack 1
    Ссылка: http://go.microsoft.com/fwlink/?LinkId=209902
    Описание: http://support.microsoft.com/kb/983509


    TFS 2010 Service Pack 1
    Ссылка: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=43d9f36a-6347-4ac4-86b6-cee4cd54b5d2
    Описание: http://support.microsoft.com/kb/2182621


    TFS Project Server Integration Feature Pack
    Документация: http://go.microsoft.com/fwlink/?LinkID=210709

    пятница, 4 марта 2011 г.

    TFS Power Tools March 2011

    Вышел TFS Power Tools March 2011, скачать его можно отсюда - http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f

    Основные новшества - более широкие возможности резервного копирования и восстановления баз TFS и расширенная работа с Windows Explorer. 

    среда, 2 марта 2011 г.

    Уменьшение времени отправки почтовых оповещений с TFS 2010

    Для уменьшения времени отправки mail-оповещений с сервера TFS нужно создать файл (например, "C:\Script.ps1") и записать в него следующий скрипт:
    [Reflection.Assembly]::Load("Microsoft.TeamFoundation.Client, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")

    # Modify the TFS configuration server URL as necessary.
    $configServer = new-object Microsoft.TeamFoundation.Client.TfsConfigurationServer "http://localhost:8080/tfs/"

    # Get the TF registry service.
    $tfsRegService = $configServer.GetService([Microsoft.TeamFoundation.Framework.Client.ITeamFoundationRegistry])

    # Set the notification delay to 30 seconds. All collections will use this delay unless they override this value in the collection hive.
    $tfsRegService.SetValue("/Service/Integration/Settings/NotificationJobDelay", 30)

    В последней строчке число "30" можно изменить - это количество секунд ожидания для оповещения.

    После этого на сервере TFS запустить PowerShell и выполнить две команды:
    PS C:\> powershell Set-ExecutionPolicy RemoteSigned
    PS C:\> powershell c:\Script.ps1

    Далее, необходимо перезапустить IIS сервер. Это можно сделать через командную строку Windows или через PowerShell следующей командой: 
    >> iisreset /noforce


    вторник, 1 марта 2011 г.

    Включение логирования Visual Studio

    1. Перейти в папку
    64bit: C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE
    32bit: C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE

    2. Закрыть все экземпляры Visual Studio, если они открыты.
    Открыть файл "devenv.exe.config" для редактирования в блокноте.

    3. Вставить следующий текст внутри секции :
    <system.diagnostics>
          <switches>
            <add name="TeamFoundationSoapProxy" value="4" />
            <add name="VersionControl" value="4" />
          </switches>
          <trace autoflush="true" indentsize="3">
            <listeners>
              <add name="myListener"              type="Microsoft.TeamFoundation.TeamFoundationTextWriterTraceListener,Microsoft.TeamFoundation.Common, Version=10.0.0.0,
           Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" initializeData="c:\logs\vs.log" />
              <add name="perfListener" type="Microsoft.TeamFoundation.Client.PerfTraceListener,Microsoft.TeamFoundation.Client,
              Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
            </listeners>
          </trace>
    </system.diagnostics>    


    Путь к лог-файлу можно изменить на свой (initializeData="c:\logs\vs.log").
    Сохранить и закрыть файл devenv.exe.config.

    4. Запустить Visual Studio 2010.