Поделиться через


Файл Readme со сведениями об образцах для программы командной строки Ascmd

Изменения: 12 декабря 2006 г.

Программа командной строки ascmd позволяет администратору базы данных выполнить сценарий XMLA, запрос многомерных выражений или инструкцию DMX по отношению к экземпляру служб Microsoft SQL Server 2005 Analysis Services (SSAS). Функциональные возможности этой программы командной строки для служб Analysis Services эквивалентны функциям программы sqlcmd, которая включена в поставку SQL Server 2005. Дополнительные сведения см. в разделе Программа sqlcmd в SQL Server 2005. Результаты выполнения сценария, запроса или инструкции могут быть сохранены в файле вместе с соответствующими сведениями трассировки SQL Server Profiler. По умолчанию программа командной строки ascmd устанавливается в следующем каталоге:

<system_drive>\Program Files\Microsoft SQL Server\90\Samples\Analysis Services\Administrator\ascmd

Сценарии

В следующих сценариях даются примеры использования программы командной строки ascmd.

Обработка секции с помощью стороннего средства

Администратор базы данных должен обрабатывать секции и измерения как части еженощного процесса выделения, преобразования и загрузки (ETL). Средство ETL не имеет отношения к SQL Server, поэтому администратор базы данных не может пользоваться встроенной в агент SQL Server поддержкой сценариев XML для аналитики и не может запускать пакеты служб SQL Server 2005 Integration Services (SSIS). Он должен пользоваться автоматизированным решением, использующим это стороннее средство. Можно, например создать программу, производящую запуск сценариев XML для аналитики из командной строки. Затем эта программа вызывается из стороннего средства. Администратор базы данных загружает и компилирует образец программы командной строки ascmd. После компиляции администратор базы данных может воспользоваться программой ascmd для запуска сценариев XMLA для обработки секций и измерений.

Резервное копирование базы данных OLAP с помощью средства стороннего производителя

Для другого администратора базы данных в той же компании необходимо автоматизировать резервное копирование базы данных служб Analysis Services. Здесь также задача должна выполняться из командной строки, так как используемое компанией программное обеспечение планирования не является средством SQL Server. Администратор базы данных создает соответствующий сценарий XML для аналитики (в среде SQL Server Management Studio). Затем программа планирования сторонних разработчиков через программу ascmd выполняет этот сценарий, производя резервное копирование базы данных OLAP.

Использование XML для аналитики во время установки

Для разработчика независимого поставщика программного обеспечения необходимо интегрировать выполнение сценария XMLA непосредственно в процессе установки продукта фирмы. Разработчик должен выполнить сценарий XMLA и получить состояние (и события трассировки), чтобы знать, что база данных служб Analysis Services создана правильно. Разработчик может сделать это при помощи программы командной строки ascmd.

Языки

  • C#, язык, на котором написана сама программа ascmd.
  • Команды пакетных файлов, запускающие программу ascmd.

Предварительные условия

Для эффективного использования программы командной строки ascmd необходимо установить все или некоторое из указанного ниже программного обеспечения.

  • Microsoft SQL Server 2005 Analysis Services (SSAS)
    Должен быть установлен и должен выполняться экземпляр служб Analysis Services, так как программа командной строки ascmd используется для подключения к экземпляру служб Analysis Services и выполнения запросов MDX, сценариев XMLA и инструкций DMX.
  • SQL Server Management Studio и Business Intelligence Development Studio
    Эти две рабочих среды предоставляют инфраструктуру поддержки для выполнения любой задачи, связанной со службами Analysis Services. Для любой конкретной задачи может быть реализован подход, основанный на пользовательском интерфейсе или программном решении.
  • Объекты AMO
    Для работы программы ascmd на компьютере, где службы Analysis Services не установлены, необходимы объекты AMO. Они могут быть установлены из пакета компонентов SQL Server 2005, который можно загрузить в центре загрузки Майкрософт по адресу https://www.microsoft.com/downloads.
  • Microsoft Visual Studio 2005 или .NET Framework SDK 2.0
    При построении и настройке образца приложения ascmd рекомендуется пользоваться средой Visual Studio 2005. Если она отсутствует, следует пользоваться пакетом .NET Framework SDK 2.0. Пакет .NET Framework SDK включает в себя программу MSBuild.exe (см. раздел «Компилирование образца», приведенный далее в этом документе).

Аргументы

В командной строке для программы ascmd поддерживаются следующие аргументы.

  • –Ulogin_id
    Это идентификатор входа пользователя с учетом регистра.

    ms365187.note(ru-ru,SQL.90).gifПримечание.
    Использование идентификатора login_id для программ sqlcmd и ascmd различается. В программе sqlcmd идентификатор login_id представляет собой имя входа SQL Server, в программе ascmd — имя входа Windows.

    Для доступа через TCP/IP службы Analysis Services поддерживают только доверенные соединения. Если задан параметр -U (вместе с паролем, задаваемым параметром -P), программа ascmd входит в операционную систему Windows при использовании этой учетной записи, а затем при выполнении сценария XMLA, запроса многомерных выражений или инструкции DMX олицетворяет ее. Идентификатор входа должен иметь форму <домен>\<имя_пользователя>,, домен должен быть указан обязательно. Если параметр -U не задан, то проверка подлинности производится на основе учетной записи Windows пользователя, запускающего программу ascmd.

    Если параметром -S задается соединение http (или https), программа ascmd не производит вход в операционную систему Windows. Вместо этого используются параметры –U и –P (если они присутствуют) как часть строки соединения с сервером служб Internet Information Services (IIS). В зависимости от того, каким образом настроены службы IIS, параметры -U и -P могут быть затем использованы для обычной проверки подлинности. Дополнительные сведения о параметре строки соединения «UID» см. в разделе «Класс AdomdConnection» электронной документации по SQL Server 2005.

  • -Ppassword
    Определяемый пользователем пароль для параметра –U. Если параметр -U задан, а параметр -P — нет, то предполагается, что пароль является пустой строкой нулевой длины. Если параметр -P задан, а параметр -U — нет, то параметр -P не используется.

    ms365187.security(ru-ru,SQL.90).gifПримечание безопасности.
    Не используйте пустые пароли. Используйте надежный пароль. Дополнительные сведения см. в разделе Надежные пароли электронной документации по SQL Server 2005. Пароль параметра –P хранится в виде открытого текста в файле сценария, запросов или инструкций; его может увидеть каждый, кто подойдет к монитору компьютера или считает сам файл. При использовании этой возможности установите на файлы списки ACL или используйте другую технику безопасности, чтобы быть уверенным в том, что только доверенные пользователи смогут прочитать файлы.
  • -Sserver\instance или -Shttp[s]://server[:port]/virtualdirectory/msmdpump.dll
    Задается экземпляр служб Analysis Services, к которому будет подключаться и выполняться программа командной строки ascmd. Если параметр -P не задан, программа ascmd подключается к экземпляру служб Analysis Services по умолчанию на локальном компьютере по протоколу TCP (подключение к узлу localhost) и выполняет сценарии XMLA, запросы многомерных выражений или инструкции DMX.
  • –ddatabase
    Определяет базу данных, в которой выполняются запросы MDX или инструкции DMX. Параметр –d не учитывается, если программа командной строки ascmd выполняет сценарий XMLA, т.к. сценарий XMLA содержит внедренное имя базы данных.
  • –tquery-timeout
    Определяет количество секунд до истечения времени выполнения сценария XML для аналитики, запроса многомерных выражений или инструкции DMX. Программа ascmd добавляет в строку соединения предложение TIMEOUT =<query-timeout>.
  • –tcconnect-timeout
    Определяет количество секунд до завершения соединения программы ascmd с экземпляром служб Analysis Services. Программа ascmd добавляет в строку соединения предложение CONNECT TIMEOUT = <connect-timeout>.
  • –iinput-file
    Идентифицирует файл, содержащий сценарий XMLA, запрос многомерных выражений или инструкцию DMX. При использовании программы командной строки ascmd необходимо задать значение либо для параметра –i, либо для –Q. Если не задан ни параметр -i, ни параметр -Q, либо оба этих параметра указаны одновременно, будет выдано сообщение об ошибке.

    ms365187.note(ru-ru,SQL.90).gifПримечание.
    В отличие от программы командной строки sqlcmd (которая может работать с несколькими входными файлами) программа командной строки ascmd может обрабатывать в текущий момент только один входной файл. Если входных файлов несколько, каждый из них должен вызываться и обрабатываться отдельно.

    Входной файл, задаваемый либо параметром –i, либо параметром –Q, должен иметь правильную XML-структуру, а специальные символы должны кодироваться в формате HTML. Например, если в тексте используется амперсанд (&), его необходимо закодировать как &amp;. Поэтому [Продукт].&[1922] кодируется как [Продукт.&amp;[1922]. Таким же образом символ «меньше» (<) должен кодироваться как &lt;, символ «больше» (>) — как &gt;, а двойные кавычки (") — как &quot;. Это важно для запросов MDX и инструкций DMX, так как в синтаксисе ключей элементов используется символ амперсанда (&).

    ms365187.note(ru-ru,SQL.90).gifПримечание.
    Если входной текст не похож на XMLA-сценарий, то есть не начинается с допустимой команды XML для аналитики (<Statement>, <Create> и т.п. — полный список см. ниже), то программа ascmd предполагает, что текст представляет собой содержимое <Statement>, производит его HTML-кодирование и упаковку в XML-тег <Statement> … </Statement>. Это делается для удобства, чтобы облегчить выполнение запросов MDX и инструкций DMX. Пользователь может также самостоятельно заключить HTML-текст в элемент <Statement>. Программа ascmd принимает любые допустимые команды XML для аналитики.

    Входной файл может содержать несколько пакетов, разделенных командами GO. Каждый пакет из входного файла может содержать сценарий XMLA, запрос MDX или инструкцию DMX. Каждая команда GO должна находиться на отдельной строке. Когда команда GO найдена, система отправляет на сервер входные данные раньше команды GO. Соответствующая команда GO расположена в конце входного потока. Созданный выходной файл форматируется с помощью заключения возвращаемых потоков XML в элементы <multiple-batches>. См. сценарий 11, в котором приведен пример входного файла, содержащего несколько пакетов.

    Каждый пакет выполняется и закачивается успешно или неудачно сам по себе. Возвращаемое состояние каждого пакета записывается в выходной файл, который должен быть проанализирован для определения результата выполнения каждого пакета.

  • –ooutput-file | NUL | NUL:filename
    Идентифицирует файл, получающий (в формате XML) результаты выполнения сценария XMLA или набор ячеек, возвращаемый запросом многомерных выражений или инструкцией DMX. Если указанный файл уже существует, он будет автоматически перезаписан. Имена файлов, содержащие пробелы, должны быть заключены в кавычки (""). Если указано недопустимое имя файла, программа ascmd выдает сообщение об ошибке и завершает работу.

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

    Если в качестве выходного файла задано значение NUL или NUL:filename, то результаты выполнения не сохраняются, если только параметр -T не задает файл трассировки. В этом случае результаты выполнения сохраняются в файле трассировки. Задание в качестве выходного файла NUL с параметром –T наиболее полезно при задании уровня трассировки Duration при помощи параметра –Tl.

    Например, можно создать серию запросов MDX и выполнить их при помощи программы ascmd, отбросив выходные данные (которые могут оказаться довольно велики), записать длительность запроса в файл трассировки, а затем загрузить из него значения продолжительности запросов в базу данных. Это позволяет оценить изменения производительности во времени. Или же можно при помощи параметра -Tl указать уровень трассировки Duration-result, что позволяет включить в файл трассировки, как длительность, так и результаты выполнения.

    ms365187.note(ru-ru,SQL.90).gifПримечание.
    Программа командной строки ascmd поддерживает международную кодировку. Входные и выходные файлы используют кодировку UTF-8 с включенными метками порядка байтов. Если текстовый редактор не поддерживает кодировку UTF-8, а в запросе многомерных выражений, сценарии XMLA или инструкции DMX присутствуют символы национальных алфавитов, то преобразовать входной файл в формат UTF-8 можно при помощи Блокнота. Для преобразования входного файла в формат UTF-8 откройте файл в Блокноте, в меню Файл выберите Сохранить как и в поле Кодировка выберите UTF-8. После этого можно использовать файл вместе с параметром -i. Выходной файл и файл трассировки (–o и –T) всегда записываются в кодировке UTF-8 и с метками порядка байтов, обеспечивающими сохранение символов в формате Юникод.
  • –Ttrace-file
    Идентифицирует файл, получающий события трассировки служб Analysis Services из программы командной строки ascmd, выполняющей сценарий XMLA, запрос многомерных выражений или инструкцию DMX. Если файл уже существует, он будет автоматически перезаписан (кроме файлов трассировки, созданных с параметром -TlDuration или -TlDuration-result). Имена файлов, содержащие пробелы, должны быть заключены в кавычки (""). Если указано недопустимое имя файла, программа ascmd выдает сообщение об ошибке и завершает работу.

    Программа не поддерживает одновременную запись из нескольких процессов в один и тот же файл. При попытке такой записи выводимый файл будет поврежден или будет содержать неверные данные. Если не задан параметр -T, данные трассировки не фиксируются, а параметры -Tf, -Tl, Td и -Tt не обрабатываются.

    ms365187.note(ru-ru,SQL.90).gifПримечание.
    При доступе по протоколу http или https параметр -T недоступен. Необходимо использовать обычное соединение клиент/сервер, указав параметр –S.
  • –xcextended-connect-string
    Задает дополнительную строку соединения, вставляемую непосредственно в основную строку соединения без какой-либо проверки значения. Строка не должна содержать начальных или конечных точек с запятой (;). Например, следующая дополнительная строка соединения изменяет размер сетевого пакета, используемого при обмене данными между сервером и процессом ascmd, с 4096 на 16384 и также задает, чтобы языковой стандарт клиентского компьютера был установлен в en-US (английский язык США):

    -xc "Packet Size=16384;LocaleIdentifier=1033"

    По умолчанию для программы командной строки ascmd данные дополнительной строки соединения не добавляются. Хотя многие возможности программы ascmd могут быть реализованы в виде дополнительных параметров строки соединения (например, при указании Database=<database name>), рекомендуется по возможности пользоваться обычными параметрами ascmd, указывая параметры в строке соединения только при отсутствии других способов это сделать.

  • –Tftext | csv
    Устанавливает формат файла для параметра –T (если этот параметр указан). По умолчанию устанавливается значение csv. Доступны следующие параметры.

    • Для текста файл записывается в текстовом формате. Ниже приведены примеры формата:
      <текущее время> <класс события>.<подкласс события>, [имя=значение]
    • Для csv файл записывается в формате с разделительными запятыми. Разделителем столбцов по умолчанию является символ | (вертикальная черта); для изменения разделителя по умолчанию для файла csv используется параметр –Td. Первая строка файла задает заголовки столбцов для значений.
  • –Tddelim-char
    Задает одиночный символ, используемый в качестве разделителя для файла трассировки, если параметр -Tf указывает формат CSV. Разделителем по умолчанию является символ | (вертикальная черта).
  • –Tttrace-timeout
    Задает количество секунд, в течение которых ядро служб Analysis Services ожидает, прежде чем завершить трассировку (если указан параметр -T). Предполагается, что трассировка заканчивается, если в течение заданного периода времени не записываются никакие сообщения трассировки. По умолчанию период равен 5 секундам.
  • –Tltrace-level
    Задает тип данных, которые собираются и записываются в файл трассировки. Этот параметр может иметь следующие пять возможных значений.

    • High — записываются все события трассировки, это установка по умолчанию.
    • Medium — записываются все события трассировки, за исключением событий ProgressReportCurrent и уведомлений.
    • Low — записываются только те события трассировки, которые содержат «Конец» или «Ошибка».
    • Duration — не записываются никакие события трассировки. Вместо этого определяется длительность выполнения сценария, запроса или инструкции процессом ascmd. В файл трассировки заносится единственная запись, содержащая текущее время, текст выполнения, имя базы данных и имя сервера.
    • Duration-result — записываются те же данные, что и для установки Duration, кроме того, в последний столбец файла трассировки заносятся результаты выполнения.
    ms365187.note(ru-ru,SQL.90).gifПримечание.
    Файлы трассировки, формируемые при помощи установок Duration и Duration-result, не перезаписываются при каждом выполнении (как это происходит для файлов трассировки, формируемых при помощи установок High, Medium и Low). Вместо этого, если указан параметр Duration или Duration-result и файл трассировки уже существует, новые значения добавляются в конец этого файла. Если файл трассировки еще не существует, он создается.
  • –Q*"cmdline query or script"*
    Указывает, что фактический сценарий, запрос или инструкция задаются непосредственно в командной строке, а не в файле.

    ms365187.note(ru-ru,SQL.90).gifПримечание.
    Программа sqlcmd поддерживает другие способы задания входного запроса (при помощи параметра -q). К сожалению, так как при указании этого режима считывание производится из sysinput, это нельзя записать без дополнительных языковых конструкций. Например, для контроля команд sysinput программа sqlcmd использует параметры «go» и «exit». Программа командной строки ascmd не поддерживает дополнительный способ задания запроса.
  • –v перем.=значение...
    Задаются дополнительные переменные сценария. Каждая переменная является парой перем.=значение. Если значение содержит встроенные пробелы или управляющие символы, оно должно заключаться в двойные кавычки ("). Например:

    -v maxparallel=4 option= "degree of freedom"

    Можно задать ни одной, одну или несколько пар перем.=значение.

  • –? или /?
    Выводится сводка о синтаксисе программы командной строки ascmd.

Ключ шифрования и компиляция образца

Если файл ключа для строгого имени еще не создавался, создайте его следующим образом.

To generate a strong name key file

  1. Откройте командную строку Microsoft Visual Studio 2005. Нажмите кнопку Пуск, укажите пункты Все программы, Microsoft .NET Framework SDK v2.0 и выберите пункт Командная строка пакета SDK.

    -- или --

    Откройте командную строку Microsoft .NET Framework. Нажмите кнопку Пуск, укажите пункты Все программы, Microsoft .NET Framework SDK v2.0 и выберите пункт Командная строка пакета SDK.

  2. Используйте команду CD, чтобы сменить текущий каталог командной строки и перейти в каталог, в котором установлены образцы.

    ms365187.note(ru-ru,SQL.90).gifПримечание.
    Чтобы определить каталог, в котором установлены образцы, нажмите кнопку Пуск, укажите пункты Все программы, Microsoft SQL Server, Документация и учебные материалы, а затем выберите пункт Каталог образцов. Если использовался каталог установки по умолчанию, то образцы расположены в каталоге «<системный_диск>:\Program Files\Microsoft SQL Server\100\Samples».
  3. В командной строке выполните следующую команду, чтобы создать файл ключа:

    sn -k SampleKey.snk

    ms365187.note(ru-ru,SQL.90).gifВажно!
    Дополнительные сведения о паре ключей для строгого имени см. в статье по строгим именам и безопасности для платформы .NET Framework в центре разработчиков .NET в MSDN.

Компиляция образца может выполняться одним из следующих способов.

  • В среде Visual Studio 2005 образец компилируется при использовании решения Visual Studio, поставляемого в папке <install_path>\Samples\Analysis Services\Administrator\ascmd\cs.

  • С помощью программы MSBuild, включаемой в пакет .NET Framework SDK 2.0, для компиляции образца в командной строке следующими командами:

    cd Analysis Services\Administrator\ascmd\CS\ascmd
    msbuild ascmd.csproj /nologo /v:quiet /p:Configuration=Debug;Platform=<platform>
    
ms365187.note(ru-ru,SQL.90).gifПримечание.
Microsoft Visual Studio полностью поддерживается на 32-разрядных и 64-разрядных компьютерах, но не поддерживается в системах на базе Itanium. После компиляции программа ascmd может быть запущена на любой платформе: x86, x-64 или Itanium.

В предыдущем программном коде параметр <platform> может принимать следующие значения: x86 для 32-разрядных компьютеров, x64 для x64-разрядных компьютеров или Itanium для архитектуры IA-64. Рекомендуется производить компиляцию программы ascmd для соответствующей платформы, так как при выполнении 32-разрядного кода на 64-разрядной платформе может снизиться производительность.

ms365187.note(ru-ru,SQL.90).gifПримечание.
При компиляции программы ascmd на компьютере, архитектура которого отличается от целевой платформы (например, если ascmd компилируется на 32-разрядном компьютере с указанием значения параметра x64 или Itanium), будут выданы три предупреждающих сообщения об отсутствии трех раздельных системных DLL («...другой целевой процессор»). Это штатная ситуация. После компиляции исполняемый файл копируется на целевой сервер и работает на нем без проблем, поскольку там присутствуют соответствующие DLL-библиотеки.

Использование переменных сценариев и среды

Программа командной строки ascmd поддерживает резервируемые системой и пользовательские переменные сценария, которые могут использоваться в сценариях XMLA, запросах MDX и в инструкциях DMS. Значения для этих переменных могут заполняться при задании значений для переменных среды или при задании значений для параметров командной строки.

К пользовательским переменным сценария и к переменным среды применимы следующие правила.

  • Переменная может содержать любое число символов нижнего или верхнего регистра, цифр, тире (-) и подчеркивания (_).
  • Переменная не может содержать внедренных или управляющих символов, например символов возврата каретки, переноса строки и табуляции.

Резервируемые системой переменные сценария

Резервируемыми системой переменными сценария являются переменные, определяемые программой командной строки ascmd для хранения значений, связанных с каждым параметром командной строки. В некоторых случаях переменные среды могут также использоваться для хранения значений для этих резервируемых системой переменных сценария. Для зарезервированных системой переменных сценария, которые могут заполняться или извлекаться из переменных среды или из параметров командной строки, заданное для параметра командной строки значение (если он задан) переопределяет соответствующее значение переменной среды.

В следующей таблице описаны резервируемые системой переменные сценария, соответствующие параметры командной строки и соответствующие переменные среды (где они имеют смысл).

ms365187.note(ru-ru,SQL.90).gifПримечание.
Имеются три резервируемые системой переменные сценария, которые могут устанавливаться только при помощи параметра командной строки (параметры -i, -o и -T). Не существует соответствующей переменной среды ASCMD, которую можно использовать для заполнения резервируемой системой переменной сценария, которая соответствует этим трем параметрам командной строки.
Резервируемые системой переменные сценария Параметр Переменная среды (если присутствует)

ASCMDUSER

–U

ASCMDUSER

ASCMDDOMAIN

–U

ASCMDUSER

ASCMDPASSWORD

–P

ASCMDPASSWORD

ASCMDSERVER

–S

ASCMDSERVER

ASCMDINSTANCE

–S

ASCMDSERVER

ASCMDHTTPCONNECTION

–S

ASCMDSERVER

ASCMDDBNAME

d

ASCMDDBNAME

ASCMDINPUTFILE

–i

ASCMDOUTPUTFILE

–o

ASCMDQUERYTIMEOUT

–t

ASCMDQUERYTIMEOUT

ASCMDCONNECTTIMEOUT

–tc

ASCMDCONNECTTIMEOUT

ASCMDTRACEFILE

–T

ASCMDTRACEFORMAT

–Tf

ASCMDTRACEFORMAT

ASCMETRACEDELIM

–Td

ASCMDTRACEDELIM

ASCMDTRACELEVEL

–Tl

ASCMDTRACELEVEL

ASCMDTRACETIMEOUT

–Tt

ASCMDTRACETIMEOUT

ASCMDEXTENDEDCONNECTION

–xc

ASCMDEXTENDEDCONNECTSTRING

Обратите внимание на то, что в некоторых случаях для предыдущей таблицы несколько резервируемых системой переменных сценария извлекается из одного параметра или из одной переменной среды. В следующем примере три резервируемых системой переменных сценария извлекаются из настройки переменной среды ASCMDSERVER.

  • C:\>SET ASCMDSERVER=http://myserver/my_virtual_dir/msmdpump.dll

Предыдущая инструкция SET, задающая значение для переменной среды ASCMDSERVER, устанавливает следующие значения для следующих трех резервируемых системой переменных сценария.

  • ASCMDSERVER="http://myserver/my_virtual_dir/msmdpump.dll"
  • ASCMDINSTANCE=""
  • ASCMDHTTPCONNECTION="true"

В следующем примере те же самые три резервируемые системой переменные сценария заполняются другими значениями при помощи другой инструкции SET.

  • C:\>SET ASCMDSERVER=myserver\myinstance

Предыдущая инструкция SET, задающая значение для переменной среды ASCMDSERVER, устанавливает значения для следующих трех резервируемых системой переменных сценария.

  • ASCMDSERVER="myserver"
  • ASCMDINSTANCE="myinstance"
  • ASCMDHTTPCONNECTION="false"

Использование резервируемых системой переменных сценария в командной строке

Если существует переменная среды, совпадающая с резервируемой системой переменной сценария (с учетом регистра символов), то значение переменной среды используется как значение по умолчанию для резервируемой системой переменной сценария и для соответствующего параметра командной строки. Например, следующую инструкцию SET можно использовать для установки переменной среды ASCMDDBNAME.

  • C:\>SET ASCMDDBNAME="Adventure Works DW"

В этом случае при выполнении программы командной строки ascmd в качестве базы данных по умолчанию будет использоваться Adventure Works DW (параметр –d) (если только в командной строке не задано другое значение).

Применение резервируемых системой переменных сценария в сценариях, запросах или инструкциях

Резервируемые системой переменные сценария могут также использоваться в сценариях XMLA, запросах MDX и инструкциях DMX. В следующих примерах иллюстрируются вызовы из командной строки образца программы командной строки ascmd, использующей переменные сценария. Далее в этом документе будут показаны дополнительные примеры, иллюстрирующие использование сценариев.

  • C:\>ascmd -S <имя_сервера> -i process.xmla -v cube=<CubeID>
process.xmla (упрощенный)
<Batch>
    <Parallel>
         <Process>
             <Object>
                  <DatabaseID>$(ASCMDDBNAME)</DatabaseID>
                  <CubeID>($CUBE)</CubeID>
            . . .
         </Process>
    </Parallel>
</Batch>

Пользовательские переменные сценария

Пользователь может определить переменную сценария при помощи параметра командной строки -v или как переменную среды. Когда программа ascmd встречает в сценарии XML для аналитики, запросе многомерных выражений или инструкции DMX переменную, которая не определена параметром -v, она использует значение переменной среды с тем же именем. Если же переменная среды не найдена, программа ascmd удаляет переменную сценария, заменяя ее пустой строкой ("").

Следующие правила применимы к пользовательским переменным сценария, определенным параметром командной строки -v.

  • Из раздела переменной «значение» удаляются начальные и конечные пробелы.
  • Переменная не может начинаться строкой «ascmd».

Использование MDX, XMLA и DMX во входных файлах

Программа командной строки ascmd поддерживает выполнение запросов MDX, сценариев XMLA и инструкций DMX, содержащихся во входных файлах. Входной сценарий, передаваемый программе ascmd, является в действительности элементом команды XMLA.

Доступны следующие элементы команды:

  • Alter
  • Backup
  • Batch
  • BeginTransaction
  • Cancel
  • ClearCache
  • CommitTransaction
  • Create
  • Delete
  • DesignAggregations
  • Drop
  • Insert
  • Lock
  • MergePartitions
  • NotifyTableChange
  • Process
  • Restore
  • RollbackTransaction
  • Statement (используется для выполнения запросов MDX и инструкций DMX)
  • Subscribe
  • Synchronize
  • Unlock
  • Update
  • UpdateCells

Для выполнения команд одновременно на нескольких объектах используется команда <Batch>. Для выполнения запросов MDX и инструкций DMX используется команда <Statement>. Дополнительные сведения см. в разделе Command Element (XMLA) электронной документации по SQL Server 2005. В следующих примерах показано, как выполняется структурирование запросов MDX, инструкций DMX и сценариев XMLA.

ms365187.note(ru-ru,SQL.90).gifВажно!
Как и для всех прочих XML-структур, в командах учитывается регистр символов. Поэтому все запросы MDX необходимо заключать в теги <Statement>... </Statement>, а команда должна указываться как «Statement» (а не «statement» и не «STATEMENT»).

Кроме команд XML для аналитики программа ascmd может применяться для выполнения пользовательских запросов XMLA, позволяя выполнять практически любые запросы, которые можно выразить на XMLA. Например, с ее помощью могут обрабатываться следующие запросы XML для аналитики.

  • Запросы распознавания XMLA для получения метаданных служб Analysis Services, которые содержат следующие сведения:
    • объекты, хранящиеся в базе данных служб Analysis Services, например определенные на сервере кубы;
    • задействованные ресурсы, например открытые на сервере соединения.
  • Запросы выполнения, которые исполняют команды при этом изменяя их (определяя список свойств и список параметров). Пример такого типа запроса приведен ниже см. раздел «Пример выполнения».

Если входной текст не отформатирован в виде команды XML для аналитики, запроса распознавания или запроса выполнения, программа ascmd предполагает, что входной текст представляет собой запрос многомерных выражений или инструкцию DMX. В этом случае текст кодируется в формате HTML, упаковывается в элементы <Statement> … </Statement> и обрабатывается как команду XML для аналитики. Это обеспечивает простоту работы с запросами MDX и инструкциями DMX. См. сценарий 1 «Запрос к кубу служб Analysis Services» ниже в этом документе, где показан пример использования этой функции.

Пример MDX

<Statement>
SELECT NON EMPTY
         [Employees].Members ON ROWS,
         [Measures].[Internet Gross Profit] ON COLUMNS 
FROM [Adventure Works]
</Statement>

В этом примере запрос многомерных выражений в инструкции XML для аналитики возвращает из куба «Adventure Works» измерение «Валовая прибыль Интернета» для каждого непустого члена иерархии атрибута.

Пример DMX

<Statement>
ALTER MINING STRUCTURE [Bike Buyer]
ADD MINING MODEL [Decision Tree]
(
    [Customer Key],
    [Age],
    [Bike Buyer] PREDICT,
    [Commute Distance],
    [Education],
    [Gender],
    [House Owner Flag],
    [Marital Status],
    [Number Cars Owned],
    [Number Children At Home],
    [Occupation],
    [Region],
    [Total Children],
    [Yearly Income]
) USING Microsoft_Decision_Trees
WITH DRILLTHROUGH
</Statement>

В этом примере DMX-запрос многомерных выражений в инструкции XML для аналитики изменяет структуру интеллектуального анализа данных [Bike Buyer], добавляя новую модель интеллектуального анализа.

Пример XMLA

<Batch xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
   <Parallel>
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <Object>
            <DatabaseID>Adventure Works DW</DatabaseID>
            <CubeID>Adventure Works DW</CubeID>
            <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
            <PartitionID>Internet_Sales_2001</PartitionID>
         </Object>
         <Type>ProcessFull</Type>
         <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
   </Parallel>
</Batch>

В этом примере инструкция XML для аналитики полностью обрабатывает секцию Internet_Sales_2001.

Пример запроса распознавания:

<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
   <RequestType>MDSCHEMA_CUBES</RequestType>
   <Restrictions>
      <RestrictionList>
         <CATALOG_NAME>Adventure Works DW</CATALOG_NAME>
      </RestrictionList>
   </Restrictions>
   <Properties>
      <PropertyList>
         <Catalog>Adventure Works DW</Catalog>
         <Format>Tabular</Format>
      </PropertyList>
   </Properties>
</Discover>

В этом примере запрос распознавания XMLA возвращает кубы, имеющиеся в базе данных «Adventure Works DW». Поскольку перспективы возвращаются приложению так, как если бы они были кубами, то возвращаемые данные на самом деле содержат как кубы, так и перспективы.

Пример запроса выполнения:

<Execute xmlns="urn:schemas-microsoft-com:xml-analysis">
   <Command>
      <Statement>
         SELECT [Measures].MEMBERS ON COLUMNS FROM [Adventure Works]
      </Statement>
   </Command>
   <Properties>
      <PropertyList>
         <Catalog>Adventure Works DW</Catalog>
         <Format>Tabular</Format>
         <AxisFormat>ClusterFormat</AxisFormat>
      </PropertyList>
   </Properties>
</Execute>

В этом примере запрос многомерных выражений используется в инструкции XML для аналитики. Обратите внимание, что раздел запроса XML для аналитики «Список свойств» задает не многомерный формат, а табличный. По умолчанию для командной инструкции XML для аналитики используется многомерный формат. Поскольку данные возвращаются в табличном формате (в виде набора строк), выходной файл может использоваться приложением, принимающим XSD-наборы строк в плоском формате, а не только набор ячеек. При этом набор строк в плоском формате легче загрузить в реляционную базу данных SQL, поскольку он отформатирован в виде таблицы.

Примеры сценариев ASCMD

В следующих сценариях демонстрируется использование программы командной строки ascmd.

Сценарий 1. Запрос к кубу служб Analysis Services

В этом сценарии создается входной файл, содержащий запрос многомерных выражений (файл query.mdx), где в запросе многомерных выражений имеется пользовательская переменная сценария (cube). Затем этот входной файл вызывается из программы ascmd, а параметр -v задает значение для этой переменной.

Файл query.mdx

Формат 1:

<Statement>
/* THIS IS AN MDX COMMENT */
SELECT [Measures].[Internet Sales Amount] ON COLUMNS
FROM $(cube)
WHERE [Customer].[Country].&amp;[United States]
</Statement>

Формат 2:

/* THIS IS AN MDX COMMENT */
SELECT [Measures].[Internet Sales Amount] ON COLUMNS
FROM $(cube)
WHERE [Customer].[Country].&[United States]
Пример командной строки:

C:\>ascmd -S myserver -d "Adventure Works DW" -i query.mdx -o result.xml -v cube="[Adventure Works]"

Обратите внимание, что задан элемент <Statement>, и что при использовании формата 1 в ключе для многомерного выражения «США» "&" (это указывает на то, что он является ключом, а не именем элемента) заменяется на &amp; (как требуется для кода HTML). Обратите также внимание, что при использовании формата 2 нет необходимости ни в HTML-кодировании, ни в элементе <Statement>, так как входной текст начинается не с допустимой команды XML для аналитики, а поэтому программа ascmd предполагает, что он является инструкцией и автоматически производит его HTML-кодирование и заключение в элемент <Statement>.

Сценарий 2. Резервное копирование базы данных в доменах без доверия

В этом сценарии выполняется резервное копирование базы данных на сервере в домене без доверия при помощи программы ascmd. Поскольку база данных находится не в доверенном домене, сценарий требует производить доступ по протоколу HTTP. В этом сценарии на удаленном сервере «myserver» запущены и службы IIS, и службы Analysis Services. На этом сервере имеется виртуальный каталог olapadmin, настроенный на обычную проверку подлинности. Кроме того, удаленный сервер имеет локальную учетную запись с именем olapadmin и соответствующими разрешениями на резервное копирование. В командной строке при помощи параметров командной строки для программы ascmd задаются имя базы данных, метод доступа, имя пользователя, пароль и файл резервной копии. Задается также входной файл XMLA (backup.xmla), содержащий переменные сценария для базы данных и файла резервной копии.

Файл backup.xmla
<Backup xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
   <Object>
      <DatabaseID>$(ascmddbname)</DatabaseID>
   </Object>
   <File>$(backupfile).abf</File>
</Backup>
Пример командной строки:

C:\>ascmd -S https://myserver/msolap90/msmdpump.dll -U myserver\olapadmin -P #1PWD -d "Adventure Works DW" -i backup.xmla -v backupfile="AdvWorks"

Обратите внимание, что в этом примере командной строки используется протокол HTTPS, поэтому передача пароля по сети на удаленный сервер производится в зашифрованном виде.

Сценарий 3. Обработка нескольких секций

В этом сценарии несколько секций обрабатывается при помощи программы командной строки ascmd. Переменные сценария в обрабатывающем сценарии XMLA (process.xmla) используются для задания степени параллелизма, имен базы данных и куба, а также типа обработки. В этом сценарии XML для аналитики показано также использование комментариев. При вызове из программы ascmd обрабатывающего сценария process.xmla задаются сервер и имя базы данных, выходной файл для результатов XMLA, файл трассировки для событий трассировки, а также степень параллелизма в пакетном файле (process.bat). Файл трассировки содержит те же события и данные, какие приложение SQL Server Profiler возвратило бы, если бы во время обработки администратор контролировал систему.

Файл process.xmla
<Batch xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
   <Parallel maxparallel="$(MAXPARALLEL)">
   <!-- SEE ABOVE FOR HOW MANY PARITIONS PROCESSED IN PARALLEL -->
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <Object>
            <DatabaseID>$(ASCMDDBNAME)</DatabaseID>
            <CubeID>$(ASCMDDBNAME)</CubeID>
            <!-- Just so happens CubeID=DatabaseID=Database name :-) -->
            <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
            <PartitionID>Internet_Sales_2001</PartitionID>
         </Object>
         <Type>$(PROCESSTYPE)</Type>
         <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <Object>
            <DatabaseID>$(ASCMDDBNAME)</DatabaseID>
            <CubeID>$(ASCMDDBNAME)</CubeID>
            <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
            <PartitionID>Internet_Sales_2002</PartitionID>
         </Object>
         <Type>$(PROCESSTYPE)</Type>
         <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <Object>
            <DatabaseID>$(ASCMDDBNAME)</DatabaseID>
            <CubeID>$(ASCMDDBNAME)</CubeID>
            <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
            <PartitionID>Internet_Sales_2004</PartitionID>
         </Object>
         <Type>$(PROCESSTYPE)</Type>
         <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
      <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <Object>
            <DatabaseID>$(ASCMDDBNAME)</DatabaseID>
            <CubeID>$(ASCMDDBNAME)</CubeID>
            <MeasureGroupID>Fact Internet Sales 1</MeasureGroupID>
            <PartitionID>Internet_Sales_2003</PartitionID>
         </Object>
         <Type>$(PROCESSTYPE)</Type>
         <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
      </Process>
   </Parallel>
</Batch>
Файл process.bat
@echo off
call :generate-timestamp
ascmd -S myserver -d "Adventure Works DW" -i process.xmla
         -o process.xml -T process-%timestamp%.csv -Tl medium 
         -v maxparallel=4 processtype=ProcessFull
if ERRORLEVEL 1 goto errseen
goto :EOF
:errseen
echo ** Error seen in processing
goto :EOF

:generate-timestamp
set now_date=%date%
set now_time=%time%
set now_Year=%now_date:~10,4%
set now_Month=%now_date:~4,2%
set now_Day=%now_date:~7,2%
set now_Hour=%now_time:~0,2%
set now_Min=%now_time:~3,2%
if "%now_Hour:~0,1%"==" " set now_Hour=0%now_Hour:~1,1%
set timestamp=%now_year%%now_month%%now_day%_%now_hour%%now_min%
goto :EOF

Обратите внимание на то, что пакетный файл использует временную метку в выходном файле, таким образом, в одно и то же время может быть записано несколько запусков.

Сценарий 4. Создание базы данных на сервере

В этом сценарии программа командной строки ascmd используется для вызова файла сценария XMLA (create.xmla), создающего новую базу данных на сервере. Имя базы данных определяется в сценарии XMLA пользовательской переменной сценария, значение которой определяется в командной строке параметром -v.

Файл create.xmla

Файл был создан из среды SQL Server Management Studio. Для создания собственного файла щелкните правой кнопкой базу данных и в меню Сценарий выберите Создать.

<Create xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
      <ObjectDefinition>
            <Database xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                  <ID>$(dbname)</ID>
                  <Name>$(dbname)</Name>
                  <Description>A Unified Dimensional Model that encompasses the Adventure Works data warehouse.</Description>
                  <Language>1033</Language>
                  <Collation>Latin1_General_CI_AS</Collation>
                  <DataSourceImpersonationInfo>
                     <ImpersonationMode>Default</ImpersonationMode>
                  </DataSourceImpersonationInfo>
                  <Dimensions>
                        <Dimension>
                              <ID>Dim Promotion</ID>
                              <Name>Promotion</Name>
                              <Annotations>
 . . .
Пример командной строки:

C:\>ascmd -S myserver -i create.xmla -v dbname="My Adventure Works DW"

В предыдущем сценарии XMLA переменные сценария могли использоваться также для настройки объектов, например строки соединения с источником данных, используемых в нем имени сервера, базы данных и имен полей.

Сценарий 5. Создание приложения Cache Warmer

В этом сценарии используется пакетный файл (cache_warmer.bat), вызывающий программу ascmd, из которой производятся вызовы запросов MDX, подготавливающих кэш данных служб Analysis Services. Например, этот пакетный файл может вызываться при помощи агента SQL Server ежедневно в 2:00 или после ночной пакетной загрузки. В пакетном файле устанавливаются переменные среды для имен сервера, базы данных и куба. Поскольку имена сервера и базы данных, заданные в переменных среды, точно совпадают с именами резервируемых системой переменных сценария, то они становятся значениями по умолчанию для параметров командной строки -S и -d. Пользовательская переменная сценария для имени куба используется в каждом из запросов MDX.

Файл query1.mdx

Файлы от query1.mdx до query6.mdx в формате файла query1.txt

<Statement>
SELECT [Measures].[Internet Sales Amount] ON COLUMNS
FROM $(cube)
WHERE [Customer].[Country].&amp;[United States]
</Statement>

Создаются дополнительные файлы запроса заменой [США] в Adventure Works на другие страны: [Австралия], [Канада], [Франция], [Германия] или [Великобритания].

Файл cache_warmer.bat
set ascmdserver=myserver
set ascmddbname=Adventure Works DW
set cube=[Adventure Works]

set QUERYDIR=..\queries
set OUTPUTDIR=..\queries
echo -------------------------
set f=
for %%f in (%QUERYDIR%\*.mdx) do (
    call :query %%f
            if ERRORLEVEL 1 goto :EOF
)
echo -------------------------
echo Done.
goto :EOF

:query
echo Query: %1
echo ---------
ascmd -T %OUTPUTDIR%\querylog.txt -Tl duration 
         -Tf text -o %OUTPUTDIR%\%~n1.xml -i %1
echo Errorlevel: %ERRORLEVEL%
echo -------------------------
if ERRORLEVEL 1 goto :errseen
goto :EOF

:errseen
echo -------------------------
echo   ******
echo   ****** ERROR SEEN ******
echo   ******   Exiting    ******
goto :EOF

Сценарий 6. Создание процедуры проверки

В этом сценарии программа ascmd используется для вызова нескольких файлов запросов MDX (аналогично предыдущему сценарию) в конце выполнения ночного пакета ETL. Параметр длительности -Tl используется для записи длительности выполнения каждого запроса многомерных выражений в файл трассировки, а вывод сценария MDX отправляется на нулевое устройство (-oNUL). Параметр длительности -Tl может также использоваться совместно с записью результатов выполнения в журнал трассировки. Такой метод позволяет отслеживать, сколько времени потребовалось для выполнения каждого запроса многомерных выражений, и ежедневно сравнивать эти результаты с целью обеспечения возврата значений в одном и том же диапазоне. Если за определенный день сведения о длительности значительно выходят за пределы диапазона, то результаты выполнения пакета ETL могут быть аннулированы.

Пример командной строки:

C:\>ascmd -i %queryfile% -o NUL -T querylog.csv -Tl duration

Сценарий 7. Автоматизация построения и обучения модели интеллектуального анализа данных

В этом сценарии программа ascmd используется для вызова серии запросов DMX следующим образом.

  • Инструкция DMX создает структуру интеллектуального анализа данных (Bike Buyer Structure.DMX) и при помощи переменных среды задает имена сервера и базы данных.
  • Инструкция DMX (Clustering_Model.dmx) добавляет к структуре модель интеллектуального анализа кластеризации.
  • Инструкция DMX (DT_Model.dmx) добавляет к структуре модель интеллектуального анализа дерева решений.
  • Инструкция DMX (Process Bike Buyer Structure.dmx) обрабатывает структуру интеллектуального анализа данных и модели интеллектуального анализа.

Когда структура интеллектуального анализа данных готова, программа ascmd вызывает несколько инструкций DMX, которые выполняют запросы к структуре интеллектуального анализа данных, используя разные модели интеллектуального анализа.

Создание структуры интеллектуального анализа данных

Файл Bike Buyer Structure.dmx
<Statement>
CREATE MINING STRUCTURE [Bike Buyer]
(
    [Customer Key] LONG KEY,
    [Age]LONG DISCRETIZED(Automatic,10),
    [Bike Buyer] LONG DISCRETE,
    [Commute Distance] TEXT DISCRETE,
    [Education] TEXT DISCRETE,
    [Gender] TEXT DISCRETE,
    [House Owner Flag] TEXT DISCRETE,
    [Marital Status] TEXT DISCRETE,
    [Number Cars Owned]LONG DISCRETE,
    [Number Children At Home]LONG DISCRETE,
    [Occupation] TEXT DISCRETE,
    [Region] TEXT DISCRETE,
    [Total Children]LONG DISCRETE,
    [Yearly Income] DOUBLE CONTINUOUS
)
</Statement>

Пример командной строки:

C:\>set ascmdserver=myserver

C:\>set ascmddbname=Adventure Works DW

C:\>ascmd -i "Bike Buyer Structure.dmx"

Добавление к структуре кластеризованной модели интеллектуального анализа данных

Файл Clustering_Model.dmx
<Statement>
ALTER MINING STRUCTURE [Bike Buyer]
ADD MINING MODEL [Clustering]
USING Microsoft_Clustering 
</Statement>

Пример командной строки:

C:\>ascmd -i "Clustering_Model.dmx"

Добавление к структуре дерева решений модели интеллектуального анализа данных

Файл DT_Model.dmx
<Statement>
ALTER MINING STRUCTURE [Bike Buyer]
ADD MINING MODEL [Decision Tree]
(
    [Customer Key],
    [Age],
    [Bike Buyer] PREDICT,
    [Commute Distance],
    [Education],
    [Gender],
    [House Owner Flag],
    [Marital Status],
    [Number Cars Owned],
    [Number Children At Home],
    [Occupation],
    [Region],
    [Total Children],
    [Yearly Income]
) USING Microsoft_Decision_Trees
WITH DRILLTHROUGH
</Statement>
Пример командной строки:

C:\>ascmd -i "DT_Model.dmx"

Обработка структуры и моделей интеллектуального анализа данных

Обработка файла Bike Buyer Structure.dmx
<Statement>
INSERT INTO MINING STRUCTURE [Bike Buyer]
(
    [Customer Key],
    [Age],
    [Bike Buyer],
    [Commute Distance],
    [Education],
    [Gender],
    [House Owner Flag],
    [Marital Status],
    [Number Cars Owned],
    [Number Children At Home],
    [Occupation],
    [Region],
    [Total Children],
    [Yearly Income]
)
OPENQUERY([$(ASCMDDBNAME)],
    'SELECT CustomerKey, Age, BikeBuyer,
             CommuteDistance,EnglishEducation,
             Gender,HouseOwnerFlag,MaritalStatus,
             NumberCarsOwned,NumberChildrenAtHome, 
             EnglishOccupation,Region,TotalChildren,
             YearlyIncome 
      FROM dbo.vTargetMail')
</Statement>
Пример командной строки:

C:\>ascmd -i "DT_Model.dmx"

Запрос структуры при помощи дерева решений модели интеллектуального анализа данных

Файл SELECT_DRILLTHROUGH.dmx
<Statement>
SELECT * 
FROM [Decision Tree].CASES
</Statement>
Файл BATCH_PREDICTION.dmx
<Statement>
SELECT
   TOP 10
   t.[LastName],
   t.[FirstName],
   [Decision Tree].[Bike Buyer],
   PredictProbability([Bike Buyer])
From
   [Decision Tree]
PREDICTION JOIN
 OPENQUERY([$(ASCMDDBNAME)],
      'SELECT
         [LastName],
         [FirstName],
         [MaritalStatus],
         [Gender],
         [YearlyIncome],
         [TotalChildren],
         [NumberChildrenAtHome],
         [Education],
         [Occupation],
         [HouseOwnerFlag],
         [NumberCarsOwned]
      FROM
         [dbo].[ProspectiveBuyer]
      ') AS t
ON
   [Decision Tree].[Marital Status] = t.[MaritalStatus] AND
   [Decision Tree].[Gender] = t.[Gender] AND
   [Decision Tree].[Yearly Income] = t.[YearlyIncome] AND
   [Decision Tree].[Total Children] = t.[TotalChildren] AND
   [Decision Tree].[Number Children At Home] = t.[NumberChildrenAtHome] AND
   [Decision Tree].[Education] = t.[Education] AND
   [Decision Tree].[Occupation] = t.[Occupation] AND
   [Decision Tree].[House Owner Flag] = t.[HouseOwnerFlag] AND
   [Decision Tree].[Number Cars Owned] = t.[NumberCarsOwned]
WHERE [Decision Tree].[Bike Buyer] =1
ORDER BY PredictProbability([Bike Buyer]) DESC
</Statement>
Файл SELECT_DISCRETE.dmx
<Statement>
SELECT DISTINCT [Bike Buyer] 
FROM [Decision Tree]
</Statement>
Пример командной строки:

C:\>ascmd -i SELECT_DRILLTHROUGH.dmx

C:\>ascmd -i BATCH_PERDICTION.dmx

C:\>ascmd -i SELECT_DISCRETE.dmx

Сценарий 8. Очистка кэша данных служб Analysis Services

В этом сценарии программа командной строки ascmd используется для вызова сценария XMLA (ClearCache.xmla), выполняющего очистку кэша данных служб Analysis Services между циклами анализа производительности при исследовании производительности. Файл ClearCache.xmla содержит переменные сценария для имен базы данных и куба. Сценарий XMLA вызывается пакетным файлом (ClearCache.bat), задающим сервер и имя экземпляра, имя базы данных, имя входного файла, имя выходного файла и имя куба.

Файл ClearCache.xmla
<Batch xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
   <ClearCache>
               <Object>
                      <DatabaseID>$(ASCMDDBNAME)</DatabaseID>
                      <CubeID>$(CUBE)</CubeID>
               </Object>
       </ClearCache>
</Batch> 
Файл ClearCache.bat
@echo off
ascmd -S myserver\myinstance -d "Adventure Works DW" -i ClearCache.xmla
         -o ClearCache.xml -v cube="Adventure Works DW"

if ERRORLEVEL 1 goto :errseen
goto :EOF

:errseen
echo **** Error seen ****
echo ********************
goto :EOF

Сценарий 9. Определение активных соединений с сервером

В этом сценарии программа ascmd производит получение списка активных соединений сервера. На основе этих данных приложение может отложить обработку до тех пор, пока от сервера не отсоединится определенный пользователь, или отправит оператору электронное сообщение, если имеется какое-нибудь активное соединение (не считая соединения для выполнения ночного пакета).

Файл connections.xmla:
<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
   <RequestType>DISCOVER_CONNECTIONS</RequestType>
   <Restrictions />
   <Properties>
      <PropertyList>
         <Content>Data</Content>     <!-- Only the data; no schema -->
      </PropertyList>
   </Properties>
</Discover>
Пример командной строки:

C:\>ascmd -S myserver -i connections.xmla -o current_connections.xml

Сценарий 10. Определяет, обработана ли секция, и если да, то в какое время.

В этом сценарии программа ascmd определяет факт и время обработки секции. Эти сведения можно легко получить, поскольку они хранятся в виде свойства объекта секционирования. Таким образом, для получения этих сведений можно выполнить запрос DISCOVER_XML_METADATA.

Файл connections.xmla:
<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
   <RequestType>DISCOVER_XML_METADATA</RequestType>
   <Restrictions>
      <RestrictionList>
        <DatabaseID>$(DatabaseID)</DatabaseID>
        <CubeID>$(CubeID)</CubeID>
        <MeasureGroupID>$(MeasureGroupID)</MeasureGroupID>
        <PartitionID>$(PartitionID)</PartitionID>
      <!-- Ask for just this object referenced -->
      <ObjectExpansion>ReferenceOnly</ObjectExpansion>
      </RestrictionList>
   </Restrictions>
   <Properties>
      <PropertyList>
         <Content>Data</Content>     <!-- Only the data; no schema -->
      </PropertyList>
   </Properties>
</Discover>

Сценарий 11. Использование команды GO для выполнения операции обратной записи

В этом сценарии программа ascmd используется для разбивки обратной записи на две части: изменение данных и их фиксация. Операция обратной записи требует использования команды GO, потому что две инструкции многомерного выражения, требуемые для операции обратной записи (инструкции Update Cube и Commit Transaction), должны быть вызваны последовательно друг за другом в рамках одной и той же транзакции. Многомерное выражение не поддерживает их вызов в рамках одного и того же пакета.

Для этого сценария необходимо изменить базу данных Adventure Works DW так, чтобы она поддерживала обратную запись. Существующая база данных в текущий момент времени не имеет образец куба, который поддерживал бы обратную запись. Чтобы создать и проверить куб, поддерживающий обратную запись, выполните следующие шаги.

  1. Определение нового куба с именем «Обратная запись»

  2. Откройте среду Business Intelligence Development Studio.

  3. В меню Файл выберите Открыть, а затем щелкните База данных служб Analysis Services.

  4. В диалоговом окне Соединение с базой данных введите имя сервера в текстовом поле Сервер, выберите базу данных Adventure Works DW из списка Базы данных, а затем нажмите кнопку ОК.

  5. В обозревателе решений щелкните правой кнопкой мыши узел Кубы и выберите команду Создать куб.

  6. В мастере построения куба нажмите кнопку Далее на странице Мастер кубов, выберите параметр Построить куб с использованием источника данных, снимите флажок Автоматическое построение, а затем нажмите кнопку Далее.

  7. Выберите Adventure Works DW из списка Доступные представления источника данных на странице Выбор представления источника данных, а затем нажмите кнопку Далее.

  8. На странице Определение таблиц фактов и измерений установите флажок Факт для таблицы FactSalesQuota и флажок Измерение для таблиц dbo.DimTime и dbo.DimEmployee, а затем нажмите кнопку Далее.

  9. dbo.DimTime (измерение называется «Дата») dbo.DimEmployeeFactSalesQuota (используется только измерение «Квота суммы продаж»)

  10. На странице Просмотр общих измерений выберите Дата и Сотрудник из списка Доступные измерения, щелкните > для добавления этих измерений к списку Измерения куба, а затем нажмите кнопку Далее.

  11. На странице Выбор мер снимите флажок Квота факта продаж, установите флажок Квота суммы продаж, а затем нажмите кнопку Далее.

  12. На странице Завершение работы мастера измените имя куба на Обратная запись, а затем нажмите кнопку Готово.

  13. Разрешение обратной записи для группы мер «Квота факта продаж»

  14. В конструкторе кубов перейдите на вкладку Секции.

  15. Щелкните правой кнопкой мыши секцию Квота факта продаж в списке секций, а затем выберите пункт Настройки обратной записи.

  16. В диалоговом окне Разрешить обратную запись — Квота факта продаж просмотрите имя таблицы обратной записи по умолчанию, а затем нажмите кнопку ОК для создания этой таблицы и разрешения обратной записи для этой секции.

  17. Обратите внимание, что появились две секции: одна для таблицы фактов, другая для таблицы обратной записи.

  18. Обработка куба «Обратная запись»

  19. Щелкните правой кнопкой мыши куб Обратная запись в узле Кубы обозревателя решений и выберите пункт Обработка.

  20. Нажмите кнопку Да для сохранения изменений.

  21. В диалоговом окне Обработка куба — Обратная запись нажмите кнопку Выполнить.

  22. Команды обработки содержат инструкцию SQL CREATE TABLE, используемую для создания реляционной таблицы обратной записи.

  23. После завершения обработки проверьте, чтобы поле Состояние свидетельствовало об успешном завершении обработки, а затем нажмите кнопку Закрыть.

  24. Снова нажмите кнопку «Закрыть» для того, чтобы закрыть диалоговое окно Обработка секции — ТаблицаОбратнойЗаписи_Квота факта продаж.

  25. Закройте среду Business Intelligence Development Studio.

  26. Проверка работоспособности обратной записи

  27. Откройте среду SQL Server Management Studio.

  28. Установите соединение с сервером, а затем в обозревателе объектов разверните узел Базы данных, щелкните правой кнопкой мыши на базе данных Adventure Works DW, укажите пункт Новый запрос, а затем выберите Многомерное выражение.

  29. В окне запросов многомерных выражений выполните следующий запрос для возврата текущей квоты продаж для Q1FY2002 и Stephen Y. Jiang:

    /* Employee 272 is [Stephen Y. Jiang]*/
    SELECT [Measures].[Sales Amount Quota] ON COLUMNS
    FROM [Writeback]
    WHERE ([Employee].[Employee].[Stephen Y. Jiang],[Date].[Calendar].[Calendar Quarter].[Q1 CY 2002])
    
  30. Измените эту ячейку, чтобы она содержала 2 200$, с помощью следующей инструкции многомерных выражений:

    UPDATE CUBE [Writeback]
    SET ([Employee].[Employee].[Stephen Y. Jiang],
    [Date].[Calendar].[Calendar Quarter].[Q1 CY 2002]) = 2200
    
  31. Зафиксируйте эту транзакцию, выполнив следующую инструкцию:

    COMMIT TRANSACTION
    

    К этому моменту можно просмотреть таблицу «dbo.WriteTable_Fact Sales Quota» в реляционной базе данных «Adventure Works DW» для того, чтобы оценить, какая обратная запись была фактически выполнена для этой ячейки. Сделав это, обратите внимание, что в эту реляционную таблицу записывается приращение (-88800). Исходная таблица фактов не изменяется.

Файл writeback.mdx:
/* What is the existing value? */
SELECT [Measures].[Sales Amount Quota] ON COLUMNS
FROM [Writeback]
WHERE ([Employee].[Employee].&[272],
[Date].[Calendar].[Calendar Quarter].&[2002]&[1])
GO
/* Update the cube with a new value */
UPDATE CUBE [Writeback]
SET ([Employee].[Employee].&[272],
[Date].[Calendar].[Calendar Quarter].&[2002]&[1]) = 33000 /* some different value */
GO
/* Commit it */
Commit Transaction
GO
/* See what the updated value is */
SELECT [Measures].[Sales Amount Quota] ON COLUMNS
FROM [Writeback]
WHERE ([Employee].[Employee].&[272],
[Date].[Calendar].[Calendar Quarter].&[2002]&[1])
GO
Пример командной строки:

C:\>ascmd -S myserver -d "Adventure Works DW" -i writeback.mdx -o writeback_result.xml -v cube="[Writeback]"

Writeback_result.xml:
<multiple-batches>
   <return xmlns="urn:schemas-microsoft-com:xml-analysis">
      <root xmlns= . . .>
         <...metadata about the result set...>
<CellData xmlns="urn:schemas-microsoft-com:xml-analysis:mddataset">
  <Cell CellOrdinal="0">
     <Value xsi:type="xsd:double" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">0</Value> 
     <FmtValue>2200</FmtValue> 
  </Cell>
</CellData>
      </root>
   </return>
   <return xmlns="urn:schemas-microsoft-com:xml-analysis">
      <root xmlns="urn:schemas-microsoft-com:xml-analysis:empty" /> 
   </return>
   <return xmlns="urn:schemas-microsoft-com:xml-analysis">
      <root xmlns="urn:schemas-microsoft-com:xml-analysis:empty" /> 
   </return>
   <return xmlns="urn:schemas-microsoft-com:xml-analysis">
      <root xmlns= . . .>
         <...metadata about the result set...>
<CellData xmlns="urn:schemas-microsoft-com:xml-analysis:mddataset">
  <Cell CellOrdinal="0">
     <Value xsi:type="xsd:double" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">0</Value> 
     <FmtValue>33000</FmtValue> 
  </Cell>
</CellData>
      </root>
   </return>
</multiple-batches>

Обратите внимание на два пустых результирующих набора между инструкциями UPDATE CUBE и COMMIT TRANSACTION.

Версия Журнал

12 декабря 2006 г.

Измененное содержимое
  • Описана новая функция — поддержка нескольких пакетов.
  • Добавлен пример, в котором показано использование новой функции.

17 июля 2006 г.

Измененное содержимое
  • Документированы две новые функции: пользовательские запросы XML для аналитики и автоматическое определение типа команды во входном потоке данных.
  • Обновлены примеры, в которых показано использование новых возможностей.

См. также

Другие ресурсы

XML for Analysis (XMLA)
XML for Analysis Reference (XMLA)
Discover Method (XMLA)
Execute Method (XMLA)

Справка и поддержка

Получение помощи по SQL Server 2005