Запустите файл xmla (службы Analysis Services) из командной строки
Я ищу инструмент или простой способ запустить скрипт xmla (пример для создания или удаления куба). Я использовал, чтобы сделать EXE-файл, используя Inno Setup
Программа и там я могу написать команду, которая может запустить другой исполняемый файл, как в командной строке.
Я обнаружил, что есть такой инструмент, как ascmd.exe
( Readme для примера утилиты командной строки Ascmd). Но он использовался в более старых версиях MS SQL. Есть ли еще что-нибудь для MS SQL Server 2012 и более новых версий?
Я могу сказать, что я не использовал ascmd.exe
инструмент, потому что я не смог получить этот инструмент (отсюда я не смог скомпилировать проект на C#: Readme для примера утилиты командной строки Ascmd).
2 ответа
Я написал свой собственный исполняемый файл на C#, который я могу запустить из командной строки. Возможно, мой код поможет кому-то с подобной проблемой.:)
using Microsoft.AnalysisServices;
string cubeServerName = args[1];
string cubeName = args[2];
Server server = null;
try
{
server = new Server();
server.Connect("Data source=" + cubeServerName + ";Timeout=7200000;Integrated Security=SSPI;");
}
catch (Exception e)
{
return (int)ExitCode.UnknownError;
}
string sqlServerName = args[3];
string user = args[4];
string pass = args[5];
string path = args[6];
string xmlaScript = "";
try
{
xmlaScript = System.IO.File.ReadAllText(@path);
}
catch (Exception e)
{
return (int)ExitCode.InvalidFilename;
}
if (server != null)
{
try
{
int exitCode = 0;
if (xmlaScript != "")
exitCode = ServerExecute(server, xmlaScript);
server.Disconnect();
return exitCode;
}
catch (Exception e)
{
return (int)ExitCode.UnknownError;
}
}
//...
private static int ServerExecute(Server server, string command)
{
XmlaResultCollection results = server.Execute(command);
foreach (XmlaResult result in results)
{
foreach (XmlaMessage message in result.Messages)
{
if (message is XmlaError)
{
Console.WriteLine("ERROR: {0}", message.Description);
return (int)ExitCode.UnknownError;
}
else
{
System.Diagnostics.Debug.Assert(message is XmlaWarning);
Console.WriteLine("WARNING: {0}", message.Description);
}
}
}
return (int)ExitCode.Success;
}
Я бы порекомендовал вам скачать ASCMD_StressTestingScripts (который содержит Ascmd.exe) с: https://sqlsrvanalysissrvcs.codeplex.com/releases
Затем создайте файл Ascmd.exe.config со следующим содержимым в том же каталоге, что и Ascmd.exe. Это заставит его использовать SQL 2014. Если вы хотите SQL 2012, измените 12.0.0.0 на 11.0.0.0:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.AnalysisServices" publicKeyToken="89845dcd8080cc91" />
<bindingRedirect oldVersion="10.0.0.0" newVersion="12.0.0.0" />
<publisherPolicy apply="no" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>