Можно ли вывести результаты команды sql в текстовый файл при отправке через SMO в C #? - PullRequest
0 голосов
/ 25 мая 2010

Я использую SMO в C # для запуска сценария SQL. Мне нужно вывести результаты файла в текстовый файл.

При использовании командной строки для запуска запроса я могу получить желаемый результат, используя аргумент "-o [output file]". Есть ли способ выполнить ту же операцию, используя объект SMO?

В данный момент мой код просто отправляет SQL-скрипт на сервер:

// Read the sql file
string script = sqlFile.OpenText().ReadToEnd();

// Create a new sql connection, and parse this into a server connection.
SqlConnection sqlConnection = new SqlConnection(connectionString);
Server server = new Server(new ServerConnection(sqlConnection));

// Run the sql command.
server.ConnectionContext.ExecuteNonQuery(script);

Любая помощь будет высоко ценится!

Ответы [ 2 ]

1 голос
/ 25 мая 2010

Я не знаю, можете ли вы сделать то же самое, но при условии, что скрипт возвращает некоторые данные, вы могли бы просто выполнить скрипт, прочитать возвращенные данные и сохранить их в файле, например:

using (StreamWriter sw = new StreamWriter("output.txt"))
{
    using(SqlConnection conn = new SqlConnection(connectionString))
    {
        conn.Open();
        using(SqlCommand cmd = conn.CreateCommand())
        {
            cmd.CommandText = script;
            using(SqlDataReader rdr = cmd.ExecuteReader())
            {
                while(rdr.Read())
                {
                    sw.WriteLine(rdr.Item("colName").ToString();
                }
            }
        }
    }
}
0 голосов
/ 25 мая 2010

Обнаружено, что SQL-скрипт, который мне нужно было выполнить, в основном выводил только те ошибки, с которыми столкнулся в выходном файле. Я смог поймать это, используя:

catch (Exception ex)
        {
            executedSuccessfully = false;

            SqlException sqlex = ex.InnerException as SqlException;

            if (sqlex != null)
            {
                exceptionText = sqlex.Message;
            }
        }

Спасибо за вашу помощь, хотя Хо! Мне может понадобиться это в будущем ...

...