忽视“missing"数据库在执行SQL时

本文关键字:执行 SQL 数据库 missing quot 忽视 | 更新日期: 2023-09-27 18:04:21

我正在编写一个为另一个程序创建SQL Server数据库的应用程序。为此,我加载了一个包含CREATE DATABASECREATE TABLE等的大型sql脚本。

脚本的第一行是:

/*CREATE DATABASE*/
USE [master]
GO
CREATE DATABASE [MultiRisk5] COLLATE Latin1_General_CI_AS
GO
USE [MultiRisk5]
GO

和c#代码:

var sqlConn = new SqlConnection("myConnection");
var cmd = new SqlCommand("mySqlScript", sqlConn);
sqlConn.Open();
cmd.ExecuteNonQuery();
sqlConn.Close();

当我运行程序时,我在USE语句上得到一个异常,告诉我数据库MultiRisk5不存在。

这怎么可能,当我刚刚创建了数据库?

忽视“missing"数据库在执行SQL时

脚本在SQL Server Management Studio中执行时运行良好。

你不能在c#中加载带有GO的脚本并运行它。

GO仅被SQL Server客户端工具识别,并作为批处理分隔符。数据库引擎无法识别它。有关如何做到这一点的更多信息,请参阅这些问题

  • 使用c#在sql Server上执行sql文件
  • 添加列到表中,然后在事务中更新

另外,SqlConnection是否尝试连接到MultiRisk5?如果是这样,在USE master运行之前也会出错

您可能想尝试在try catch块中执行您的查询,看看返回什么。这将是解决问题的良好开端。

也许你的应用程序没有适当的权限来创建数据库?在继续之前,您应该检查数据库创建是否成功。