如何使用C#中的'Go'语句运行sql脚本

问题描述 投票:0回答:1

我正在尝试运行包含'GO'语句作为批处理分隔符的SQL脚本。我遇到了乔恩·加洛韦(Jon Galloway)处理这种类型情况的方法,该方法利用了SMO(nuget包Microsoft.SQlServer.SQLManagementObjects)。

con = new SqlConnection(connectionString);//1
var serverConnection = new ServerConnection(con);//2
var server = new Server(serverConnection);//3
StreamReader streamReader = new StreamReader(@"D:\Scripts\Install-Northwind-Script.sql");//4
string script = streamReader.ReadToEnd();//5
server.ConnectionContext.ExecuteNonQuery(script);//6

上面的代码在第6行引发异常。

System.IO.FileNotFoundException:'无法加载文件或程序集'Microsoft.SqlServer.BatchParser,版本= 15.100.0.0,区域性=中性,PublicKeyToken = 89845dcd8080cc91'或其依赖项之一。的系统找不到指定的文件。'

它给出FileNotFound异常,但它成功读取了第5行的文件的所有内容。我尝试添加Microsoft.SqlServer.BatchParser引用,但找不到一个。

有人可以帮我知道我在这里做错什么吗?

c# sql-server smo sql-scripts
1个回答
3
投票

此错误不在您的查询中,但缺少Sql Server BatchParser的程序集的事实。要修复您必须安装

x64\SharedManagementObjects.msix64\SQLSysClrTypes.msi

安装了smo组件后,您应该就可以开始了。更好的选择是使用此Nuget软件包。它包含了smo对象版本15所需的全部。命令isntall(只需在nuget软件包管理器控制台中输入此命令)

Install-Package Microsoft.SqlServer.SqlManagementObjects -Version 150.18208.0

© www.soinside.com 2019 - 2024. All rights reserved.