如何运行目录中的所有SQL文件并显示您执行的脚本错误(如果有错误),您将如何在运行时记录或记录错误?
答案 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文件的错误,然后记录在记事本中编译的错误。