sql server执行update.sql文件问题 急急急!!!

yaj52125 2015-08-17 01:22:35
各位大神:

我有一个脚本文件update.sql,其中包含各类sql,文件比较大。。。

现在想按文件执行update.sql

如果用SqlCmd的执行,怎样判断中途执行是否有错误 ? (需要进行错误处理)

或者别的好办法?

...全文
136 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Haytor 2015-08-18
  • 打赏
  • 举报
回复
这个是我在一个工具使用代码段,可以参考一下。

DECLARE @sql NVARCHAR(2048)
DECLARE @DBName NVARCHAR(128)
DECLARE @FileName NVARCHAR(128)
DECLARE @ReturnDesc NVARCHAR(MAX)
DECLARE @CmdReturn TABLE(CmdRet NVARCHAR(max))

SET @FileName = ''
SET @DBName = ''
SET @ReturnDesc = ''

SET @sql = 'sqlcmd -S '+ @@SERVERNAME +' -d ' + @DBName + ' -i "' + @FileName + '"'
BEGIN TRY
			
	-- 收集返回信息
	INSERT INTO @CmdReturn
	EXEC @rc = master..xp_cmdshell @sql

	-- 合并返回信息
	SELECT 
		@ReturnDesc = @ReturnDesc + CmdRet
	FROM 
		@CmdReturn 
	WHERE 
		CmdRet IS NOT NULL

	--让后对@CmdReturn进行分析

END TRY
BEGIN CATCH

	PRINT '执行脚本时出现以下异常:' + CHAR(13) + CHAR(10)
			+ ERROR_MESSAGE()
END CATCH
唐诗三百首 2015-08-17
  • 打赏
  • 举报
回复
C#执行SQL文件.

                Process p = new Process();
                p.StartInfo.FileName = "sqlcmd.exe";
                p.StartInfo.Arguments = @"-S [服务器名] -U [账号] -P [密码] -d [数据库名] -i [文件路径]+update.sql -b";
                p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.UseShellExecute = false;
                p.Start();

                System.IO.StreamReader sr = p.StandardOutput;
                string sRunResult = sr.ReadToEnd();     // 执行结果赋值给变量sRunResult

                sr.Close();
                sr.Dispose();

                p.WaitForExit();
                p.Close();
唐诗三百首 2015-08-17
  • 打赏
  • 举报
回复
C#执行SQL文件.

                Process p = new Process();
                p.StartInfo.FileName = "sqlcmd.exe";
                p.StartInfo.Arguments = @"-S [服务器名] -U [账号] -P [密码] -d [数据库名] -i [文件路径]+update.sql -b";
                p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.UseShellExecute = false;
                p.Start();

                System.IO.StreamReader sr = p.StandardOutput;
                string sRunResult = sr.ReadToEnd();     // 执行结果赋值给变量sRunResult

                sr.Close();
                sr.Dispose();

                p.WaitForExit();
                p.Close();

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧