我正在编写一个为另一个程序创建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不存在。
当我刚创建数据库时,怎么会这样?在SQL Server Management Studio中执行时,脚本运行正常。
答案 0 :(得分:1)
您无法在包含GO的c#中加载脚本并运行它。
GO仅识别SQL Server客户端工具,并作为批处理分隔符。数据库引擎无法识别它。有关如何执行此操作的更多信息,请参阅这些问题
此外,SqlConnection是否尝试连接到MultiRisk5?如果是这样,那么在运行USE master
答案 1 :(得分:0)
您可能想尝试在try catch块中执行查询以查看返回的内容。这是解决问题的第一步。
答案 2 :(得分:0)
也许您的应用没有相应的权限来创建数据库? 在继续之前,您应该检查数据库创建是否成功。