忽视“missing"数据库在执行SQL时
本文关键字:执行 SQL 数据库 missing quot 忽视 | 更新日期: 2023-09-27 18:04:21
我正在编写一个为另一个程序创建SQL Server数据库的应用程序。为此,我加载了一个包含CREATE DATABASE
、CREATE 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不存在。
这怎么可能,当我刚刚创建了数据库?
你不能在c#中加载带有GO的脚本并运行它。
GO仅被SQL Server客户端工具识别,并作为批处理分隔符。数据库引擎无法识别它。有关如何做到这一点的更多信息,请参阅这些问题
- 使用c#在sql Server上执行sql文件
- 添加列到表中,然后在事务中更新
另外,SqlConnection是否尝试连接到MultiRisk5?如果是这样,在USE master
运行之前也会出错
您可能想尝试在try catch块中执行您的查询,看看返回什么。这将是解决问题的良好开端。
也许你的应用程序没有适当的权限来创建数据库?在继续之前,您应该检查数据库创建是否成功。