运行多个/所有sql文件并显示错误日志文件

时间:2016-06-16 02:53:50

标签: c# sql logging

如何运行目录中的所有SQL文件并显示您执行的脚本错误(如果有错误),您将如何在运行时记录或记录错误?

3 个答案:

答案 0 :(得分:1)

这是一个粗略函数来执行目录中的SQL文件,减去验证,可能还有一些分离。在现实生活中,我可能将其分开 - 一个用于查找文件,另一个用于执行文件集合。

    public void ExecuteSqlFilesInDirectory(string path, string connectionString)
    {
        var directory = new DirectoryInfo(path);
        var files = directory.GetFiles("*.sql");
        if (!files.Any()) return;
        using (var connection = new SqlConnection(connectionString))
        {
            connection.Open();
            foreach (var file in files)
            {
                var sql = File.ReadAllText(file.FullName);
                using (var command = new SqlCommand(sql, connection))
                {
                    command.ExecuteNonQuery();
                }
            }
        }
    }

记录是一个完全独立的问题,我不会尝试在与此相同的上下文中回答。

问题 - 执行顺序是否重要?如果是,那么如何指示顺序以便函数知道序列?

此外,如果有错误,他们都需要回滚吗?

答案 1 :(得分:0)

使用批处理文件一键运行所有脚本。

如下所述放置所有存储过程和视图文件名,并将其保存为.bat扩展名。只需单击批处理文件,该文件将同时运行,您也可以在其中查看错误。

示例:

set DBName=myDB
set DBServer="127.0.0.1\SQLInstance"
REM Product List Stored Procedures 
osql -E -i GetList.sql -d %DBNAME% -S %DBServer% -n
osql -E -i InsertProduct.sql -d %DBNAME% -S %DBServer% -n
osql -E -i UpdateProduct.sql -d %DBNAME% -S %DBServer% -n
osql -E -i DeleteProduct.sql -d %DBNAME% -S %DBServer% -n
pause

答案 2 :(得分:0)

回答我自己的问题。我觉得这很有用我只是想分享它。

https://www.mssqltips.com/sqlservertip/1543/using-sqlcmd-to-execute-multiple-sql-server-scripts/ http://www.sqlservercentral.com/articles/sqlcmd+mode/129764/

我唯一需要的是记录显示SQL文件的错误,然后记录在记事本中编译的错误。