MS SQL Server


[•] Если нужно восстановить пароль SA на Microsoft SQL Server

Случается такое - нужен администраторский доступ к SQL серверу, но почему-то забыл или и не знал пароль SA.
Если есть администраторские права в системе то всё решается легко и легально :-)

Для начала нужно остановить службу SQL Server (MSSQLSERVER).


[•] Как получить данные из многомерных кубов в реляционном (табличном) виде

Иногда возникает потребность импортировать/загрузить данные из кубов Microsoft SQL Server Analysis Services (MS SSAS) в обычную реляционную БД. Ну или просто работать с данными как с обычными табличными.

Сделать это в принципе не сложно, но потребуется несколько хитрых манипуляций.
Итак, по шагам:



   0. Предположим у нас есть:
MS SQL Server (называется SQLSERVER) содержит БД DEST_DB, где мы и хотим обрабатывать данные из куба с сервера SSAS.
MS SSAS (называется SSAS) содержит OLAP БД (называется OLAP_DB). В ней есть куб SALES_Cube с двумя мерами Sales и Profit (которые относятся к группе мер Sales_Results) и с двумя измерениями Departments и Fact_Dates. При этом измерение Fact_Dates имеет иерархию YMD с уровнями Year, Month, Day.
Мы хотим получить выборку сумм продаж и прибыли по всем отделам и всем датам.
MDX запрос, который вернет нам это:

select
    {
       [Measures].[Sales],
       [Measures].[Profit]
    } on columns,
    ([Departments].AllMembers, [Fact_Dates].[Day].AllMembers) on rows
from [SALES_Cube]


[•] Ошибки SQL Server: A severe error occurred on the current command. The results, if any, should be discarded.

Если в ходе выполнения запроса получили:

Msg 0, Level 11, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.
Msg 0, Level 20, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.

- значит запрос был прерван "по техническим причинам": например, обрыв связи, или сессия была убита, и т.п. Ищите причины в этом.


[•] Nota Bene: Как посмотреть план выполнения запроса в Microsoft SQL Server

Собственно, инфа с сайта TechNet:

  • Опции SET SHOWPLAN_ALL ON или SET SHOWPLAN_TEXT ON или SET SHOWPLAN_XML ON обеспечивают вывод оценочного плана команды, при этом сама команда реально не выполняется. Не особо интересны, т.к. если задействуются всякие триггеры, то эти команды их влияние не увидят.
  • Опция SET STATISTICS PROFILE ON обеспечивает вывод реального плана выполнения, при этом и сама команда выполняется.
    Т.к. план по факту может сгенерить несколько табличек, то для копирования лучше в Management Studio переключить вывод в текстовый формат (меню Query / Result To / Result to Text).

[•] Ошибка -2146827284 (0x800A03EC) Невозможно получить свойство Open класса Workbooks

Победили предыдущую проблему - приложение Excel запускается.
Получили новую ошибку: -2146827284 Невозможно получить свойство Open класса Workbooks.
Возникала на вызове:

EXEC @iRetCode = sp_OAMethod @iXLApp, 'Workbooks.Open', @iDoc OUTPUT, @FileName

Всяческие изменения в вызове процедуры, выделение отдельно Workbooks никак не помогали.


[•] Ошибка -2147024891 (0x80070005) Access is denied при создании OLE объекта класса Excel.Application

Конфигурация:
- MS Windows Server 2008 R2 64bit
- MS SQL Server 2008 R2
- MS Excel 2003

В хранимой процедуре создаем объект Excel примерно таким образом:

DECLARE @iXLApp int, @iRetCode int
EXEC @iRetCode = sp_OACreate 'Excel.Application', @iXLApp OUTPUT, 4

Получаем указанную ошибку: -2147024891 (0x80070005) Access is denied.


[•] Создание прилинкованного сервера (Linked Server) для MS Analysis Services

Если создать Linked Server на Analysis Services сервер, то можно напрямую, практически SQL-запросами обращаться к данным OLAP-кубов, что очень удобно.

Здесь рассматривается версия MS SQL Server 2008 R2 (и сооветствующая MS Analysis Services).


[•] Настройка подключения JIRA 4.4 к MS SQL Server 2000

При настройке JIRA можно указать использование внешней (external) базы данных, а не внутренней (internal). В этом случае получаем плюсы хранения всех данных (за исключением файлов-аттачментов) на SQL БД.

Создаем пустую БД на SQL Server'е.
Создаем логин, и соответствующего пользователя в созданной БД. При этом он должен входить в группу db_owner (при этом не являясь собственно dbo). Под этим логином JIRA будет подключаться к БД.

Далее в параметрах подключения к БД указываем:
  Database Type = SQL Server
  Port = 1433 (по умолчанию MS SQL использует такой)
  Database = <ИМЯ_СОЗДАННОЙ_БД>
  UserName = <ИМЯ_СОЗДАННОГО_ПОЛЬЗОВАТЕЛЯ>
  Password = <ПАРОЛЬ>
  Schema = dbo (стоит по-умолчанию)

И вот тут начинаются проблемы: при попытке продолжить (или выполнить проверку подключения) возникает ошибка - The database specified is not empty. Please specify an empty database for your JIRA installation.


Ленты новостей
Нравится